centos7下mysql5.6的主从复制详解

2019-10-12 15:42:15于丽
 [mysqld]
 #用于同步的每台机器server-id都不能相同

server-id = 10

log-bin = /data/mysql56/data/mysql-bin 

2、重启主库

> service mysqld restart 

3、登陆主库,查看server-id

> mysql -uroot -p

> show variables like 'server_id'; 

4、主库上建立用于从库复制的账号

> grant replication slave on *.* to "rep"@"%" identified by "123456";

> flush privileges;

> select user,host from mysql.user;

> show grants for rep@"%"; 

5、对主库数据库锁表只读(当前窗口不要关掉)

> flush table with read lock; 

查看主库状态

> show master status; 

6、备份主库所有数据文件

> mysqldump -uroot -p -A -B | gzip > /data/mysql_bak.$(date +%F).sql.gz 

7、备份完主库数据后,解锁

> unlock tables; 

8、把主库导出的数据迁移到从库

(2)、在slave从库上

1、设置server-id值并关闭binlog功能  

①有两种情况下需打开binlog   

②级联同步A->B->C中间的B,就要开启binlog   

③在从库做数据库备份,必须要有全备和binlog日志才是完整备份。

> vi /mysql-instance/3308/my.cnf 

[mysqld]

server-id = 11

relay-log = /mysql-instance/3308/relay-bin

relay-log-info-file = /mysql-instance/3308/relay-log.info 

2、重启从库

> /mysql-instance/3308/mysql restart 

3、登陆从库检查参数

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock

> show variables like 'log_bin';

> show variables like 'server_id'; 

4、把主库mysqldump导出的数据恢复到从库

> gzip -d /data/mysql_bak.2017-01-15.sql.gz 

 把主库数据还原到从库

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock < /data/mysql_bak.2017-01-15.sql 

5、登录从库,配置复制参数

CHANGE MASTER TO

MASTER_HOST='127.0.0.1',

MASTER_PORT=3306,

MASTER_USER='rep',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=396; 

注意上面的MASTER_LOG_FILE和MASTER_LOG_POS是在主库中用show master status;查看的信息。

查看master.info文件

> cat /mysql-instance/3308/data/master.info 

6、启动从库同步开关,测试主从复制情况

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "start slave;"

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "show slave statusG;"

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "show slave statusG" | egrep "IO_Running|SQL_Running|_Behind_Master"