准备两台虚拟机
一、主库配置
(1)设置server-id值并开启binlog参数[mysqld]
vim /etc/my.cnf
log_bin = mysql-bin
server_id = 120
重启数据库:systemctl restart mysqld
(2) 建立同步账号
mysql> grant replication slave on *.* to 'rep'@'192.168.95.%' identified by '123456';
mysql> show grants for 'rep'@'192.168.95.%';
(3)锁表设置只读
为后面备份准备,注意生产环境要提前申请停机时间;
mysql> flush tables with read lock;
提示:如果超过设置时间不操作会自动解锁。
mysql> show variables like ‘%timeout%’; 测试锁表后是否可以创建数据库
(4) 查看主库状态,即当前日志文件名和二进制日志偏移量
mysql> show master status;
(5) 备份数据库数据
mkdir /backup
mysqldump -uroot -p -A -B |gzip > /backup/mysql_bak.$(date +%F).sql.gz
(6) 解锁
mysql> unlock tables;
(7) 主库备份数据上传到从库
scp /server/backup/mysql_bak.2015-11-18.sql.gz 192.168.95.130:backup/
二、从库上设置
(1)设置server-id值并关闭binlog参数
vim /etc/my.cnf
#log_bin = /data/mysql/data/mysql-bin
server_id = 130
重启数据库
(2) 还原从主库备份数据
cd /server/backup/
gzip -d mysql_bak.2015-11-18.sql.gz
mysql -uroot -p < mysql_bak.2015-11-18.sql
检查还原:
mysql -uroot -p -e 'show databases;'
(3) 设定从主库同步
mysql> change master to
MASTER_HOST='192.168.95.120',
MASTER_PORT=3306, MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=329;
(4) 启动从库同步开关
mysql> start slave;
检查状态:
mysql> show slave status\G