Mysql數(shù)據(jù)庫(kù)的主從同步配置方式
注:本次配置的主從數(shù)據(jù)庫(kù)版本都為Mysql 8,主數(shù)據(jù)庫(kù)所在系統(tǒng)為Windows(Windows Server 2019),從數(shù)據(jù)庫(kù)所在系統(tǒng)為L(zhǎng)inux(CentOS Stream 8)。
一、主數(shù)據(jù)庫(kù)準(zhǔn)備
1.在主數(shù)據(jù)庫(kù)創(chuàng)建用于復(fù)制的用戶
(如果已經(jīng)存在類似用戶,可跳過此步驟)
mysql> CREATE USER 'copy'@'%' IDENTIFIED BY 'copy123456'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%';
2.查看主數(shù)據(jù)庫(kù)是否啟用二進(jìn)制日志
mysql> show variables like 'log_bin';
這里須保證數(shù)據(jù)庫(kù)啟用二進(jìn)制日志。
3.配置主數(shù)據(jù)庫(kù)配置文件
Windows中配置文件路徑默認(rèn)為:
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
修改 server-id=(可任意設(shè)置為 [1 , )
范圍內(nèi)的值,但不能與其他數(shù)據(jù)庫(kù)相同)
添加binlog-do-db(需要同步的數(shù)據(jù)庫(kù)名)或binlog-ignore-db(不同步的數(shù)據(jù)庫(kù)名)
具體操作為:
在[mysqld]下面添加以下內(nèi)容:
server-id = 100002 #注:server-id 默認(rèn)為1,根據(jù)需要修改為指定的id binlog-do-db=需要同步的數(shù)據(jù)庫(kù)(或者binlog-ignore-db=忽略同步的數(shù)據(jù)庫(kù)) binlog-do-db=需要同步的數(shù)據(jù)庫(kù)(或者binlog-ignore-db=忽略同步的數(shù)據(jù)庫(kù)) binlog-do-db=需要同步的數(shù)據(jù)庫(kù)(或者binlog-ignore-db=忽略同步的數(shù)據(jù)庫(kù)) ............ #注:如果有多個(gè)數(shù)據(jù)庫(kù),可以書寫多行
修改后保存。
注:此處要保證my.ini的編碼為ANSI,如果編碼為Unicode等其他編碼,會(huì)導(dǎo)致數(shù)據(jù)庫(kù)重啟失敗?。。。梢允褂糜浭卤?[另存為] ANSI編碼)
4.重啟MySQL服務(wù)
在任務(wù)管理器中找到
選擇重新啟動(dòng)。
二、從服務(wù)器 準(zhǔn)備
1.設(shè)置 從服務(wù)器 的server_id
SET GLOBAL server_id = 66666;
2.查看主數(shù)據(jù)庫(kù)是否啟用二進(jìn)制日志
show variables like 'log_bin';
Mysql8默認(rèn)啟用,如果未啟用,則需要將其啟用。
三、主從數(shù)據(jù)庫(kù)數(shù)據(jù)準(zhǔn)備
1.阻止主數(shù)據(jù)庫(kù)的更改
(如果能保證在數(shù)據(jù)庫(kù)配置期間不對(duì)主數(shù)據(jù)庫(kù)進(jìn)行變更,可以跳過這一步)
在數(shù)據(jù)庫(kù)上加上讀鎖定。
mysql> FLUSH TABLES WITH READ LOCK;
在所有配置完成之后,釋放鎖定(下面這條語(yǔ)句暫時(shí)不執(zhí)行,在配置完成之后再釋放)
mysql> UNLOCK TABLES;
2.使主從數(shù)據(jù)庫(kù)的數(shù)據(jù)保持一致
有很多種方法可以實(shí)現(xiàn)這一步。
(這里使用了Navicate for Mysql的“數(shù)據(jù)傳輸”功能)
3.獲取主服務(wù)器當(dāng)前的二進(jìn)制日志文件名和位置
SHOW MASTER STATUS;
四、在從服務(wù)器上進(jìn)行配置
1.在從服務(wù)器上設(shè)置源配置
mysql> 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', -> SOURCE_LOG_POS=recorded_log_position; MySQL 8.0.23之前的版本使用如下語(yǔ)句: mysql> 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;
2.啟動(dòng)
START SLAVE;
3.查看狀態(tài):
SHOW SLAVE STATUS;
可以看到Slave_IO_State為:Waiting for source to send event
同時(shí)可以看到Slave_IO_Running和Slave_SQL_Running都為Yes
4.查看數(shù)據(jù)庫(kù)同步狀態(tài),若無(wú)問題,則配置成功。
(如果之前加了讀鎖定,不要忘了在主數(shù)據(jù)庫(kù)上釋放鎖定)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL 數(shù)據(jù)庫(kù)兩臺(tái)主機(jī)同步實(shí)戰(zhàn)(linux)
MySQL支持單向、異步復(fù)制,復(fù)制過程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而一個(gè)或多個(gè)其它服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫入二進(jìn)制日志文件,并維護(hù)日志文件的一個(gè)索引以跟蹤日志循環(huán)。2009-04-04線上MYSQL同步報(bào)錯(cuò)故障處理方法總結(jié)(必看篇)
下面小編就為大家?guī)?lái)一篇線上MYSQL同步報(bào)錯(cuò)故障處理方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-03-03Windows環(huán)境下MySQL 8.0 的安裝、配置與卸載
這篇文章主要介紹了Windows環(huán)境下MySQL 8.0 的安裝、配置與卸載步驟,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09詳解mysql8.0創(chuàng)建用戶授予權(quán)限報(bào)錯(cuò)解決方法
這篇文章主要介紹了詳解mysql8.0創(chuàng)建用戶授予權(quán)限報(bào)錯(cuò)解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-09-09MySQL基礎(chǔ)學(xué)習(xí)之字符集的應(yīng)用
這篇文章主要為大家詳細(xì)介紹了MySQL中字符集的相關(guān)使用,例如字符集的查詢與修改和比較規(guī)則等,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-05-05