视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
为mysql快速添加从库,并为从库添加从库
2020-11-09 16:15:42 责编:小采
文档

现实情况下,mysql比较常见的是一主多从,而在主库出现问题是,需要将其从库升为主库,但事实上这种操作非常繁琐,基本上要对所有的从库进行操作。 既然如此,不妨将mysql做成ABC的结构,A为主库,B为A的从库,C是B的从库 这种情况,在A出现问题是,可以直接

现实情况下,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: 5854214
 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=5854214;
mysql> slave start;


最后启动B的主从!完成


验证:

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

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

下载本文
显示全文
专题