您好,欢迎访问一九零五行业门户网

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

现实情况下,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: 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文件不要打包)
synctar -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 /hometar zxf mysqldata3326.tar.gzmv /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里是否同步了。
其它类似信息

推荐信息