生产环境:
MySQL 5.7.18 [RPM]
Linux:CentOS 6.9
主库:node111
从库:node130
新增加从库:node131
原理:利用slave_relay_log_info信息通过复制从库物理文件做一台新的从库
实现的功能:
在不停应用的情况,快速新增加一台从库
vim /etc/my.cnf #配置slave从库的配置信息以表的形式存储
relay_log_info_repository = TABLE
master_info_repository = TABLE
relay_log_recovery = on
skip-slave-start #数据库启动后不启动主从复制
1.首先查看从库的slave_relay_log_info
(root@host130_slave) [(none)]> select *frommysql.slave_relay_log_info\G;
*************************** 1.row***************************
Number_of_lines: 7
Relay_log_name: ./relay-bin.005421
Relay_log_pos: 1056548303
Master_log_name: mysql-bin.002269
Master_log_pos: 1056548090
Sql_delay: 0
Number_of_workers: 16
Id:1
Channel_name:
1 row in set (0.00 sec)
ERROR:
No query specified
查看同步连接参数:
(root@host130_slave) [(none)]>select * from mysql.slave_master_info\G;
*************************** 1.row***************************
Number_of_lines: 25
Master_log_name:mysql-bin.002270
Master_log_pos: 21428102
Host: 192.168.66.111
User_name:slave
User_password: slave123
Port: 3306
Connect_retry: 60
Enabled_ssl: 0
2.将从库的主从复制停止:
mysql>slave stop
查看停止后的slave_relay_log_info,查看从库应用的POS位置点
(root@host130_slave) [(none)]> select *frommysql.slave_relay_log_info\G;
*************************** 1.row***************************
Number_of_lines: 7
Relay_log_name: ./relay-bin.005421
Relay_log_pos: 1056548307
Master_log_name: mysql-bin.002270
Master_log_pos: 1056548132
Sql_delay: 0
Number_of_workers: 16
Id:1
Channel_name:
1 row in set (0.00 sec)
查看主从同步连接主库的参数:
(root@host130_slave) [(none)]>select * from mysql.slave_master_info\G;
*************************** 1.row***************************
Number_of_lines: 25
Master_log_name:mysql-bin.002270
Master_log_pos: 21428102
Host: 192.168.66.111
User_name:slave
User_password: slave123
Port: 3306
Connect_retry: 60
Enabled_ssl: 0
3.将从库停机
service mysqld stop
4.将/var/lib/mysql下面所有的文件复制到node131另一台配置一样的空数据库的对应目录下面(新从库的数据库版本一样)
scp -r /var/lib/mysql/* root@192.168.66.131:/var/lib/mysql/
#关闭selinux关闭防火墙
#setenforce 0
#service iptables stop
#chkconfig iptables off
5.修改192.168.66.131新从库数据文件的权限:
node131#chown mysql.mysql /var/lib/mysql/* -R
6.将从库node130的配置文件复制到node131数据库下:
node130# scp /etc/my.cnf root@node131:/etc/
修改server-uuid:在同一个主从环境中,这个值需要唯一
[root@node7 mysql]# vim auto.cnf
[auto]
server-uuid=f8db3a0a-306f-11e9-acc6-000c297446e9
修改/etc/my.cnf
server_id=7 #这个值在主从环境中也要唯一
7.启动数据库:
node131#service mysqld start
8:在node131上重新配置主从
通过 mysql.slave_relay_log_info 的参数修改对应配置
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> reset slave; #做这个之前要记录下slave同步的参数
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to master_host=192.168.66.111,master_user=slave,master_password=;slave123;,master_port=3306,master_log_file=mysql-bin.002270,master_log_pos=1056548090;
mysql> start slave;
mysql> show slave status\G;
新从库node131配置完成