現(xiàn)實(shí)情況下,mysql比較常見(jiàn)的是一主多從,而在主庫(kù)出現(xiàn)問(wèn)題是,需要將其從庫(kù)升為主庫(kù),但事實(shí)上這種操作非常繁瑣,基本上要對(duì)所有的從庫(kù)進(jìn)行操作。 既然如此,不妨將mysql做成ABC的結(jié)構(gòu),A為主庫(kù),B為A的從庫(kù),C是B的從庫(kù) 這種情況,在A出現(xiàn)問(wèn)題是,可以直接
現(xiàn)實(shí)情況下,mysql比較常見(jiàn)的是一主多從,而在主庫(kù)出現(xiàn)問(wèn)題是,需要將其從庫(kù)升為主庫(kù),但事實(shí)上這種操作非常繁瑣,基本上要對(duì)所有的從庫(kù)進(jìn)行操作。
既然如此,不妨將mysql做成ABC的結(jié)構(gòu),A為主庫(kù),B為A的從庫(kù),C是B的從庫(kù)
這種情況,在A出現(xiàn)問(wèn)題是,可以直接將B升為主庫(kù),其余下級(jí)從庫(kù)將不需要任何操作。
這里記錄一次此類(lèi)操作,我這里的情況是,已經(jīng)存在A和B,A是主,B是從
需求是,添加一個(gè)A的從庫(kù)C,再添加一個(gè)C的從庫(kù)D。
快速添加mysql從庫(kù)(前提是都已經(jīng)安裝了相同版本的mysql)
首先將從庫(kù)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
然后將從庫(kù)B的數(shù)據(jù)文件打包,分別拷貝到新的從庫(kù)C和C的從庫(kù)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的數(shù)據(jù)目錄(刪除主從信息文件)
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,(我這里有端口的區(qū)別,這個(gè)根據(jù)現(xiàn)實(shí)情況)
vim /home/mysqldata3326/my.cnf
分別啟動(dòng)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的主庫(kù)同步信息(這里的主從信息要和stop B從庫(kù)的信息一致)
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;
最后啟動(dòng)B的主從!完成
驗(yàn)證:
通過(guò)show slave status\G;查看主從信息,SQL和IO線程是否為yes
最簡(jiǎn)單的驗(yàn)證就是在A里隨便創(chuàng)建個(gè)庫(kù),然后show一下D里是否同步了。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com