Mysql中的多級(jí)復(fù)制方式
Mysql的多級(jí)復(fù)制
有3臺(tái)Mysql服務(wù)器X、Y、Z,存在以下關(guān)系:
- X、Y之間存在主從復(fù)制關(guān)系,X為主服務(wù)器,Y為從服務(wù)器。
- Y、Z之間存在主從復(fù)制關(guān)系,Y為主服務(wù)器,Z為從服務(wù)器。
其中,Y既作為X的從服務(wù)器,又作為Z的主服務(wù)器。
X與Y的主從配置可以參考:
下面主要做Y和Z的同步配置:
(需要保證主從服務(wù)器版本的一致性,從服務(wù)器MySQL版本不能低于主服務(wù)器)
1.在主服務(wù)器中創(chuàng)建復(fù)制用戶
mysql> CREATE USER 'copy'@'%' IDENTIFIED BY 'copy123456'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%';
2.修改主服務(wù)器中的配置文件
Ubuntu中的配置文件路徑為: /etc/mysql/my.cnf Windows中的默認(rèn)配置文件路徑為: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
以下為修改示例:
[mysqld] server-id=104538 #服務(wù)器id log_slave_updates=1 #log_slave_updates設(shè)為ON,把在主服務(wù)器那里接收到的更新,記錄到自己的二進(jìn)制日志中 binlog-ignore-db=information_schema binlog-ignore-db=mysql binlog-ignore-db=sys binlog-ignore-db=performance_schema #設(shè)置忽略同步的數(shù)據(jù)庫(kù)(這里也可以設(shè)置需要同步的數(shù)據(jù)庫(kù)名)
3.修改完成后
重新啟動(dòng)主服務(wù)器Mysql服務(wù)器
這里具Ubuntu操作系統(tǒng)的例子,在命令行輸入:
service mysql restart
4.為主數(shù)據(jù)庫(kù)中的表加上讀鎖定以避免主數(shù)據(jù)庫(kù)的更改
(如果能保證在數(shù)據(jù)庫(kù)配置期間不對(duì)主數(shù)據(jù)庫(kù)進(jìn)行變更,可以跳過(guò)這一步)
在數(shù)據(jù)庫(kù)上加上讀鎖定。
mysql> FLUSH TABLES WITH READ LOCK;
在所有配置完成之后,釋放鎖定(下面這條語(yǔ)句暫時(shí)不執(zhí)行,在主從同步配置完成之后再釋放)
mysql> UNLOCK TABLES;
5.使主從數(shù)據(jù)庫(kù)的數(shù)據(jù)保持一致
有很多種方法可以實(shí)現(xiàn)這一步。
(這里使用了Navicate for Mysql的“數(shù)據(jù)傳輸”功能)
6.獲取主服務(wù)器當(dāng)前的二進(jìn)制日志文件名和位置
在主服務(wù)器MySQL運(yùn)行以下命令:
SHOW MASTER STATUS;
7.在從服務(wù)器上設(shè)置源配置
CHANGE REPLICATION SOURCE TO SOURCE_HOST='source_host_name', SOURCE_USER='replication_user_name', SOURCE_PASSWORD='replication_password', SOURCE_LOG_FILE='recorded_log_file_name',#上圖的File SOURCE_LOG_POS=recorded_log_position;#上圖的Position
MySQL 8.0.23之前的版本使用如下語(yǔ)句:
CHANGE MASTER TO MASTER_HOST='source_host_name', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;
8.在從服務(wù)器上啟動(dòng)主從同步
START SLAVE;
9.查看狀態(tài)
SHOW SLAVE STATUS; #如果Slave_IO_State為:Waiting for source to send event #且Slave_IO_Running和Slave_SQL_Running都為Yes #則代表主從同步正在正常運(yùn)行
如果出現(xiàn)異?;蝈e(cuò)誤,可以查看錯(cuò)誤信息,再對(duì)應(yīng)解決:
可參考:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server&n
這篇文章主要給大家介紹了登錄mysql報(bào)錯(cuò) Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法,文中有詳細(xì)的解決步驟,需要的朋友可以參考下2023-09-09mysql修改sql_mode報(bào)錯(cuò)的解決
今天在Navicat中運(yùn)行sql語(yǔ)句創(chuàng)建數(shù)據(jù)表出現(xiàn)了錯(cuò)誤Err 1067。本文主要介紹了mysql修改sql_mode報(bào)錯(cuò)的解決,感興趣的可以了解一下2021-09-09MySQL數(shù)據(jù)庫(kù)刪除數(shù)據(jù)自增ID不連續(xù)的實(shí)現(xiàn)示例
本文介紹了MySQL數(shù)據(jù)庫(kù)刪除數(shù)據(jù)后自增ID不連續(xù)的問題,文中通過(guò)2種方法解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11MySQL中對(duì)于not in和minus使用的優(yōu)化
這篇文章主要介紹了MySQL中對(duì)于not in和minus使用的優(yōu)化,作者給出了實(shí)例和運(yùn)行時(shí)間對(duì)比,需要的朋友可以參考下2015-05-05MySQL數(shù)據(jù)庫(kù)高級(jí)操作實(shí)戰(zhàn)(克隆表、清空表、創(chuàng)建臨時(shí)表及約束)
多年工作中積累整理的數(shù)據(jù)庫(kù)高級(jí)操作分享給大家,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)高級(jí)操作實(shí)戰(zhàn)的相關(guān)資料,其中包括克隆表、清空表、創(chuàng)建臨時(shí)表及約束等,需要的朋友可以參考下2023-06-06