01-上篇-基於Docker 的MySQL的主從分離實現

前言:關於MySQL讀寫主從實現,分兩步:
第一步,需要現有主從的環境,利用docker快速實現; -----上篇,即本文!
第二步,利用已有的環境進行JavaEE的Web項目配置。 -----下篇,基於SpringBoot的SpringDataJpa的實現!

基於Docker 的MySQL的主從分離
使用腳本執行,自動創建MySQL數據庫的主從複製
環境信息:
OS:CentOS 7.5 Docker:1.13.1 DB:MySQL5.7.20
mysql用戶:root/1234556 repl/repl

步驟:
1.附件中的CreateMySQLMasterSlave.sh腳本以root身份執行

2.下面的這行代碼,不報錯,但是經檢查也沒有起作用,需要手動到master容器中執行;
docker exec -it master mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;"
3.檢查slave的狀態:
如果slave狀態:Slave_IO_State: Waiting for master to send event
且Slave_IO_Running: Yes Slave_SQL_Running: Yes  則成功!
4.測試方式:
在主庫創建一個數據庫,從庫會自動同步創建同樣的數據庫。

如果發現還有問題,使用yum remove docker*刪除docker的組件,重啓機器後在執行腳本。
PS:
主:
[mysqld]
port = 3306 #通過配置文件的方式指定端口
# [必須]服務器唯一ID,默認是1,一般取IP最後一段,這裏看情況分配
server-id=1 #每個服務器對應不同的id,不要重複!!
# [必須]啓用二進制日誌
log-bin=/var/lib/mysql/mysql-bin #路徑不要配置錯誤
#不同步的數據庫
binlog-ignore-db = mysql #下面的這兩個配置項是互斥的,本選項多配少配都可能導致失敗!
#設置binglog只對數據庫test有效,這裏可以不設
#binlog-do-db = db_demo
從:
[mysqld]
port = 3307
# [必須]服務器唯一ID,默認是1,一般取IP最後一段,這裏看情況分配
server-id=2
# [必須]啓用二進制日誌
log-bin=/var/lib/mysql/mysql-bin

Docker MySQL主從複製slave出錯不同步時處理 https://blog.csdn.net/seteor/article/details/17264633
a.修改salve節點的mysql的配置文件,通過slave_skip_errors參數來跳所有錯誤或指定類型的錯誤
vi /etc/my.cnf
[mysqld]
#跳過指定error no類型的錯誤,跳過一些不影響數據庫數據一致性的錯誤,讓同步儘可能正常工作!
#slave-skip-errors=1062,1051,1053,1146 
#slave-skip-errors=all #跳過所有錯誤


所有的文件參看附件:

MySQLMasterSlave.zip


參考地址:
其他參考:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章