MySQL主從復(fù)制允許將來(lái)自一個(gè)數(shù)據(jù)庫(kù)(主數(shù)據(jù)庫(kù))的數(shù)據(jù)復(fù)制到一個(gè)或多個(gè)數(shù)據(jù)庫(kù)(從數(shù)據(jù)庫(kù))。
主數(shù)據(jù)庫(kù)一般是實(shí)時(shí)的業(yè)務(wù)數(shù)據(jù)寫(xiě)入和更新操作,從數(shù)據(jù)庫(kù)常用的讀取為主。
主從復(fù)制過(guò)程:
1、主服務(wù)器上面的任何修改都會(huì)通過(guò)自己的 I/O tread(I/O 線程)保存在二進(jìn)制日志 Binary log 里面。
2、從服務(wù)器上面也啟動(dòng)一個(gè) I/O thread,通過(guò)配置好的用戶名和密碼, 連接到主服務(wù)器上面請(qǐng)求讀取二進(jìn)制日志,然后把讀取到的二進(jìn)制日志寫(xiě)到本地的一個(gè)Realy log(中繼日志)里面。
3、從服務(wù)器上面同時(shí)開(kāi)啟一個(gè) SQL thread 定時(shí)檢查 Realy log(這個(gè)文件也是二進(jìn)制的),如果發(fā)現(xiàn)有更新立即把更新的內(nèi)容在本機(jī)的數(shù)據(jù)庫(kù)上面執(zhí)行一遍。
環(huán)境如下:
主數(shù)據(jù)庫(kù):MySQL版本5.7,IP為192.168.1.11
從數(shù)據(jù)庫(kù):MySQL版本5.7,IP為192.168.1.12
一、主數(shù)據(jù)庫(kù)配置
1、創(chuàng)建一個(gè)新的測(cè)試數(shù)據(jù)庫(kù),名稱為testdb。
2、打開(kāi)my.ini,增加配置
# 主從復(fù)制
server-id=1 #設(shè)置server-id
log-bin=mysql-bin #開(kāi)啟二進(jìn)制文件
#同步的數(shù)據(jù)庫(kù),除此之外別的不同步(和下面binlog-ignore-db二選一)
binlog_do_db=testdb
#不同步數(shù)據(jù)庫(kù),除此之外都同步
#binlog-ignore-db = information_schema
#binlog-ignore-db = MySQL
3、重啟MySQL服務(wù)
4、創(chuàng)建用于同步的用戶賬號(hào)
(1)以管理員身份打開(kāi)cmd窗口后,運(yùn)行mysql -uroot -p,輸入密碼(為空則直接回車),登陸。
(2)先后執(zhí)行下面3條命令創(chuàng)立用戶(用戶名MySlave,密碼123456),并刷新權(quán)限
CREATE USER 'MySlave'@'192.168.1.12' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'MySlave'@'192.168.1.12';
FLUSH PRIVILEGES;
5、查看Master狀態(tài),記錄二進(jìn)制文件名和位置
show master status;
二進(jìn)制文件為mysql-bin.000005,位置為154
二、從數(shù)據(jù)庫(kù)配置
1、創(chuàng)建一個(gè)新的測(cè)試數(shù)據(jù)庫(kù),名稱為testdb。
2、驗(yàn)證同步賬號(hào)能否登陸
打開(kāi)Navicat for MySQL,新建鏈接,IP填寫(xiě)192.168.1.11,用戶名MySlave,密碼123456,點(diǎn)擊“連接測(cè)試”驗(yàn)證是否能連接。
3、打開(kāi)my.ini,增加配置
server-id=2 #設(shè)置server-id
log-bin=mysql-bin #開(kāi)啟二進(jìn)制文件
4、重啟MySQL服務(wù)
5、cmd命令行登陸MySQL數(shù)據(jù)庫(kù),執(zhí)行下面命令進(jìn)行手動(dòng)同步
mysql > CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_PORT=3306,MASTER_USER='MySlave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=154;
6、啟動(dòng)salve同步進(jìn)程
mysql > start slave;
7、查看slave狀態(tài)
執(zhí)行命令:show slave status\G;
Slave_IO_Running: Yes,Slave_SQL_Running: Yes時(shí)說(shuō)明兩個(gè)線程已啟動(dòng),主從復(fù)制配置成功。
8、測(cè)試
在主數(shù)據(jù)庫(kù)新建一個(gè)表,刷新從數(shù)據(jù)庫(kù),可以看到這個(gè)表。
備注:
在進(jìn)行數(shù)據(jù)庫(kù)主從復(fù)制前,主數(shù)據(jù)庫(kù)中已有表和數(shù)據(jù),則這部分?jǐn)?shù)據(jù)不會(huì)同步,需要手動(dòng)導(dǎo)出,并在從數(shù)據(jù)庫(kù)中導(dǎo)入。
以上就是Windows下MySQL主從復(fù)制的配置方法的詳細(xì)內(nèi)容,更多關(guān)于MySQL主從復(fù)制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- MYSQL數(shù)據(jù)庫(kù)GTID實(shí)現(xiàn)主從復(fù)制實(shí)現(xiàn)(超級(jí)方便)
- MySql主從復(fù)制實(shí)現(xiàn)原理及配置
- mysql 主從復(fù)制如何跳過(guò)報(bào)錯(cuò)
- MySQL主從復(fù)制延遲原因以及解決方案
- MySQL主從復(fù)制與讀寫(xiě)分離原理及用法詳解
- 基于Docker如何實(shí)現(xiàn)MySQL主從復(fù)制詳解
- Mysql主從復(fù)制作用和工作原理詳解
- MySQL是如何實(shí)現(xiàn)主備同步