新聞中心
- 服務(wù)器 192.168.1.2 (master) ,服務(wù)器 192.168.1.3 (old slave) 服務(wù)器 192.168.1.4 (new slave)
- 您可以將另一個(gè)slave添加到現(xiàn)有復(fù)制配置,而無(wú)需停止master。為此,您可以通過(guò)復(fù)制現(xiàn)有slave的數(shù)據(jù)目錄并為新slave提供不同的server ID (由用戶指定)和服務(wù)器UUID(在啟動(dòng)時(shí)生成)來(lái)設(shè)置新slave。
- 在old slave
- #停止復(fù)制
- mysql> stop slave;
- Query OK, 0 rows affected (0.00 sec)
- #查看主二進(jìn)制日志文件和中繼日志文件位置
- mysql> show slave status\G
- #關(guān)閉old slave的mysql服務(wù)
- [root@iZ2zee8t2icu340bpmaw23Z ~]# service mysqld stop
- Redirecting to /bin/systemctl stop mysqld.service
- [root@iZ2zee8t2icu340bpmaw23Z ~]# ps -ef |grep mysql
- root 14618 14474 0 21:33 pts/0 00:00:00 grep --color=auto mysql
- #將old slave的數(shù)據(jù)目錄打包
- [root@iZ2zee8t2icu340bpmaw23Z ~]# cat /etc/my.cnf | grep datadir
- datadir=/var/lib/mysql
- [root@iZ2zee8t2icu340bpmaw23Z ~]# cd /var/lib/mysql
- [root@iZ2zee8t2icu340bpmaw23Z mysql]# tar -zcvf /tmp/file.tar.gz *
- #啟動(dòng)mysql
- [root@iZ2zee8t2icu340bpmaw23Z mysql]# service mysqld start
- #開(kāi)始復(fù)制
- mysql> start slave;
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- 在new slave上
- #先關(guān)閉mysql
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# service mysqld stop
- Redirecting to /bin/systemctl stop mysqld.service
- #復(fù)制old slave的數(shù)據(jù)目錄,進(jìn)入本機(jī)的mysql數(shù)據(jù)目錄
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# cat /etc/my.cnf | grep datadir
- datadir=/var/lib/mysql
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# cd /var/lib/mysql
- #利用scp把數(shù)據(jù)給拿過(guò)來(lái)
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# scp root@192.168.1.3:/tmp/file.tar.gz /tmp
- #這時(shí)候我們需要先把本機(jī)的數(shù)據(jù)給備份一下
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# tar -zcvf /tmp/mysql_back.tar.gz *
- #然后將old slave的數(shù)據(jù)給壓縮
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# tar -zxvf /tmp/file.tar.gz
- #從當(dāng)前機(jī)器上的數(shù)據(jù)目錄副本中刪除auto.cnf文件,以便使用不同的生成server UUID啟動(dòng)新slave服務(wù)器。 server UUID必須是唯一的。
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# rm auto.cnf
- rm: remove regular file ‘a(chǎn)uto.cnf’? y
- #為服務(wù)器配置server_id和--skip-slave-start選項(xiàng),指定了--skip-slave-start的話,那么mysql啟動(dòng)的時(shí)候復(fù)制就不會(huì)啟動(dòng)
- #啟動(dòng)mysql服務(wù)器并登陸,查看有關(guān)信息(這里要注意,因?yàn)槟阒苯訌?fù)制的old slave的數(shù)據(jù)目錄,所以登錄mysql的時(shí)候要輸入old slave對(duì)應(yīng)的用戶密碼,最后需要修改過(guò)來(lái))
- mysql> show slave status\G
- #如果跟step4可以對(duì)應(yīng)的上,那就沒(méi)有啥問(wèn)題,然后啟動(dòng)復(fù)制
- mysql> start slave;
- ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
- #1872 錯(cuò)誤 這個(gè)時(shí)候我們查看一下錯(cuò)誤日志
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# tail -f /var/log/mysqld.log
- 意思是從./iZ2ze7skefrz53o5o1at5hZ-relay-bin.index找不到./iZ2zee8t2icu340bpmaw23Z-relay-bin.000004 relay log 文件,原因是由于我使用的是冷備份文件恢復(fù)的實(shí)例,在mysql庫(kù)中的slave_relay_log_info表中依然保留之前relay_log的信息,所以導(dǎo)致啟動(dòng)slave報(bào)錯(cuò)。解決方法如下
- mysql> reset slave;
- Query OK, 0 rows affected (0.02 sec)
- mysql> start slave;
- Query OK, 0 rows affected (0.02 sec)
- mysql> show slave status\G
* - 那么就說(shuō)明成功了
- 添加一下測(cè)試數(shù)據(jù),看下數(shù)據(jù)是否同步
注意事項(xiàng):
- 在新的slave上,一定要查看錯(cuò)誤日志以及對(duì)比新slave和現(xiàn)有slave的show slave status內(nèi)容,查看Master_Log_File和Read_Master_Log_Pos是否有差異
- 因?yàn)槟阒苯訌?fù)制的old slave的數(shù)據(jù)目錄,所以登錄new salve的mysql的時(shí)候要輸入old slave對(duì)應(yīng)的用戶密碼,最后需要修改過(guò)來(lái)
reset slave講解:
- 參考鏈接: https://dev.mysql.com/doc/refman/5.7/en/reset-slave.html
- RESET SLAVE makes the slave forget its replication position in the master's binary log. This statement is meant to be used for a clean start: It clears the master info and relay log info repositories, deletes all the relay log files, and starts a new relay log file. It also resets to 0 the replication delay specified with the MASTER_DELAY option to CHANGE MASTER TO. RESET SLAVE does not change the values of gtid_executed or gtid_purged.
- RESET SLAVE會(huì)讓slave忘記master的二進(jìn)制文件的復(fù)制位置。主要用于干凈的啟動(dòng)一個(gè)復(fù)制,它會(huì)清除主信息和中繼日志信息庫(kù)(就是清除mysql.slave_master_info和slave_relay_log_info這兩個(gè)表),刪除所有的中繼日志文件,并且啟動(dòng)一個(gè)新的中繼日志文件。會(huì)將CHANGE MASTER TO的 MASTER_DELAY選項(xiàng)指定的值重置為0,RESET SLAVE 不會(huì)更改gtid_executed或gtid_purged的值。
參考鏈接:https://dev.mysql.com/doc/refman/5.7/en/binlog-replication-configuration-overview.html
PREV: 2:基于二進(jìn)制日志文件位置的復(fù)制 https://blog.51cto.com/itzhoujun/2351367
NEXT: 4:GTID簡(jiǎn)單介紹 https://blog.51cto.com/itzhoujun/2352688
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:3:添加一個(gè)slave到已有的復(fù)制環(huán)境(基于二進(jìn)制日志文件位置)-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.ef60e0e.cn/article/docogo.html