利用slave_relay_log_info信息通过复制从库物理文件做主从


生产环境:

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配置完成

 

 



分割线
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS