为了账号安全,请及时绑定邮箱和手机立即绑定

为mysql快速添加从库,并为从库添加从库

标签:
MySQL


现实情况下,mysql比较常见的是一主多从,而在主库出现问题是,需要将其从库升为主库,但事实上这种操作非常繁琐,基本上要对所有的从库进行操作。

既然如此,不妨将mysql做成ABC的结构,A为主库,B为A的从库,C是B的从库

这种情况,在A出现问题是,可以直接将B升为主库,其余下级从库将不需要任何操作。

这里记录一次此类操作,我这里的情况是,已经存在A和B,A是主,B是从

需求是,添加一个A的从库C,再添加一个C的从库D。

快速添加mysql从库(前提是都已经安装了相同版本的mysql)

首先将从库B的主从stop掉

mysql> stop slave;

Query OK, 0 rows affected

(0.06 sec)

 

mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State:

                  Master_Host: 10.10.1.171

                  Master_User: mysqlab

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000096

          Read_Master_Log_Pos: 585421644

               Relay_Log_File: mysql-relay-bin.000279

                Relay_Log_Pos: 2043143

        Relay_Master_Log_File: mysql-bin.000096

             Slave_IO_Running: No

            Slave_SQL_Running: No

然后将从库B的数据文件打包,分别拷贝到新的从库C和C的从库D下(sock和pid文件不要打包)

sync

tar  -czf mysqldata3326.tar.gz mysqldata3326/

scp  mysqldata3326.tar.gz 10.10.1.173:/home/

scp  mysqldata3326.tar.gz 10.10.1.174:/home/

解压分别放在C和D的数据目录(删除主从信息文件)

cd /home

tar zxf mysqldata3326.tar.gz

mv /home/mysqldata3326/datadir/master.info /home/mysqldata3326/datadir/master.info.bak

修改C和D的配置文件的server-id,C为11 ,    D为21,(我这里有端口的区别,这个根据现实情况)

vim /home/mysqldata3326/my.cnf

分别启动C和D

/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysqldata3326/my.cnf --user=mysql &

 

配置C和D的主从(一定要先配置好C和D的主从)

C:查看C的master信息

mysql> show master status;

+------------------+----------+--------------+---------------------------------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            |

+------------------+----------+--------------+---------------------------------------------+

| mysql-bin.000092 |  1953402 |              | mysql,test,information_schema,sphinx_search |

+------------------+----------+--------------+---------------------------------------------+

 

D:配置D的主从信息

mysql> slave stop;

mysql> reset slave;

mysql> change master to master_host='10.10.1.173',master_user='mysqlab',master_password='xxxxx',master_log_file='mysql-bin.000092',master_log_pos=1953402;

mysql> slave start;

mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State:

                  Master_Host: 10.10.1.173

                  Master_User: mysqlab

                  Master_Port: 3326

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000092

          Read_Master_Log_Pos: 1953490

               Relay_Log_File: mysql-relay-bin.000279

                Relay_Log_Pos: 214513

        Relay_Master_Log_File: mysql-bin.000092

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

 

修改C的主库同步信息(这里的主从信息要和stop B从库的信息一致)

mysql> slave stop;

mysql> reset slave;

mysql> change master to master_host='10.10.1.171',master_user='mysqlab',master_password='xxxxxx',master_log_file='mysql-bin.000096',master_log_pos=585421644;

mysql> slave start;

最后启动B的主从!完成

验证:

通过show slave status\G;查看主从信息,SQL和IO线程是否为yes

最简单的验证就是在A里随便创建个库,然后show一下D里是否同步了。

©著作权归作者所有:来自51CTO博客作者Minkon1的原创作品,如需转载,请注明出处,否则将追究法律责任

mysqlmysql主从一主多从Mysql


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消