5.7搭建从库

检查事项:
两边防火墙是否开启,对应的端口号是否通(可以通过telnet的方式,或者远程登录的方式验证)
 
主库配置:

开启 log_bin 、server_id、log_slave_updates 参数。
 
另外需要注意的是:
binlog_format 控制二进制文件格式,生成环境建议使用row格式。
log_bin_basename 控制二进制文件的路径和命名规则。
server_id建议使用:端口号+IP最后一位的形式。
 
主库创建复制账号:
create user 'repl'@'192.168.137.%' identified by 'oracle';
grant replication slave on *.* to 'repl'@'192.168.137.%';
flush privileges;
 
创建完之后,在另外一台服务器测试是否能连接上。
mysql -h192.168.137.101 -P3306 -urepl -poracle
 

 
如果使用 xtrabackup 的方式备份:

innobackupex --defaults-file=/etc/my.cnf --user=root --password=chengce243 --notimestamp --stream=tar ./ | cat - > /data/backup/`date +%Y%m%d-%H%M`-all_bak-innobackupex.tar.gz 

tar -xvf 20210312-1606-all_bak-innobackupex.tar.gz

innobackupex --apply-log /data/mysql_5.7
innobackupex --defaults-file=/etc/my.cnf --copy-back  /data/mysql_5.7

chown -R mysql.mysql /data/mysql_5.7

 
systemctl start mysqld


如果使用mysqldump 的方式备份:

mysqldump -h192.168.137.101 -P3306 -uroot -pchengce243 --single-transaction --master-data=2 --triggers --routines --events --all-databases > /data/backup/`date +%Y%m%d-%H%M`-all_bak.sql 

导入到从库之前先执行 reset master;


查看 xtrabackup_binlog_info或者mysqldump文件里面记录的master_log_file 和master_log_pos 信息,恢复全备后的新库中执行:

change master to master_host='192.168.137.156',master_user='repl',master_password='oracle',master_port=3306,master_log_file='mysql-bin.000005',master_log_pos=194;


change master to master_host='192.168.137.156',master_user='repl',master_password='oracle',master_port=3306,MASTER_AUTO_POSITION = 1;


 
从库配置:
 
开启 log_bin 、server_id、log_slave_updates 参数。
注意:主库和从库的server_id不能一样。
 
mysql> show master status \G;
*************************** 1. row ***************************
             File: mysql-bin.000005
         Position: 194
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: b16b53da-c1a1-11e6-915f-000c29355816:1-21
1 row in set (0.02 sec)
 
在从库上执行:
change master to master_host='192.168.137.101',master_user='repl',master_password='oracle',master_port=3306,MASTER_AUTO_POSITION = 1;

mysql> start slave;

在从库上查看状态: 
mysql> show slave status\G; 
关注上面 Slave_IO_Running 和 Slave_SQL_Running都是 Yes,表示已经连接上了master,说明已经成功。
 
 
 

 

posted @ 2018-08-01 13:38  屠魔的少年  阅读(83)  评论(0)    收藏  举报