標籤:mysql主從 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檔案不要打包)
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裡是否同步了。
本文出自 “Tuesday” 部落格,請務必保留此出處http://cuimk.blog.51cto.com/6649029/1590205
為mysql快速添加從庫,並為從庫添加從庫