docker搭建mysql主從同步的全過程
引言
以前在centos上裝一個(gè)mysql redis 能搞兩三天,各種編譯問題,自從用了docker做開發(fā)環(huán)境之后是真的香,真正體會(huì)了一把什么叫一鍵啟動(dòng)。
最近開發(fā)環(huán)境自己搭個(gè)主從的結(jié)構(gòu)使用,mark一下,順便分享一下中間可能遇到的問題
搭建流程
docker容器準(zhǔn)備
這里以mysql 8.0為例
# 拉取鏡像,自己配一下docker鏡像源,幾十秒就下完了 docker pull mysql:8.0 # 創(chuàng)建容器之間的通信網(wǎng)絡(luò) docker network create mysql_db ### 啟動(dòng)主庫 docker run -p 3340:3306 --name mysql-m --network mysql_db -e MYSQL_ROOT_PASSWORD=主庫root密碼 -d mysql:8.0 ### 啟動(dòng)從庫 docker run -p 3341:3306 --name mysql-s --network mysql_db -e MYSQL_ROOT_PASSWORD=從庫root密碼 -d mysql:8.0
接下來就是進(jìn)入容器開始配置mysql主從信息了
這里記得提前創(chuàng)建一個(gè)用來同步的用戶,記得賦權(quán)
CREATE USER `slave`@`%` IDENTIFIED WITH mysql_native_password BY '123456'; # 授權(quán) GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by '123456'; # 檢查一下 show grants for 'slave'@'%'; # 沒有的話刷新一下 flush PRIVILEGES;
# 修改主庫配置 docker exec -it mysql-m /bin/bash # 這里需要安裝一下vim apt-get update apt-get install vim vim /etc/mysql/my.cnf #1.配置server-id 保證同一網(wǎng)絡(luò)中不重復(fù),其實(shí)就普通的主從配置一樣了 #2.開啟logbin 主從同步其實(shí)就是讀取binlog的過程 [mysqld] server-id=101 log-bin=mysql-bin # 修改從庫配置 docker exec -it mysql-s /bin/bash vim /etc/mysql/my.cnf # 配置server-id log-bin和relay-log # mysql會(huì)將變化寫入relaylog 從庫來讀取relaylog做同步 [mysqld] server-id=102 log-bin=mysql-slave-bin relay-log=mysql-relay-bin
執(zhí)行同步
重啟主從服務(wù),進(jìn)入主庫查看主庫狀態(tài) show master status;
記錄binlog文件和position ,比如 mysql-bin.000002 1894;
進(jìn)入從庫,執(zhí)行以下命令
CHANGE MASTER TO master_host = '172.17.0.2', master_user = 'slave', master_password = '123456', master_port = 3306, master_log_file = 'mysql-bin.000002', master_log_pos = 1894, master_connect_retry = 30;
查看從庫狀態(tài) SHOW SLAVE STATUS; 這里應(yīng)該可以看到配置的主庫host和端口,日志文件及位置信息,但是此時(shí)IO是關(guān)閉的,還沒有線程開始對(duì)主庫binlog進(jìn)行同步和對(duì)relaylog進(jìn)行讀取。
這里要提一下,上面docker啟動(dòng)容器時(shí)我們把端口映射到了3340 和3341 ,但是對(duì)于docker容器內(nèi)部訪問時(shí),端口還是3306,主庫ip地址可以執(zhí)行 docker inspect mysql-m 查看自己配置的網(wǎng)絡(luò)組或者bridge 的IPAddress
然后就是在從庫開啟slave了,start slave;
關(guān)閉同步 stop slave;
接下來就可以愉快地測(cè)試?yán)?/p>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解MySQL主從復(fù)制實(shí)戰(zhàn) - 基于日志點(diǎn)的復(fù)制
這篇文章主要介紹了詳解MySQL主從復(fù)制實(shí)戰(zhàn) - 基于日志點(diǎn)的復(fù)制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
LEFT JOIN關(guān)聯(lián)表中ON,WHERE后面跟條件的區(qū)別
本文主要介紹了LEFT JOIN關(guān)聯(lián)表中ON,WHERE后面跟條件的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
MySQL如何更改數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)目錄詳解
這篇文章主要給大家介紹了關(guān)于MySQL如何更改數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)目錄的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
詳解mysql的limit經(jīng)典用法及優(yōu)化實(shí)例
這篇文章詳細(xì)介紹了mysql的limit經(jīng)典用法及優(yōu)化實(shí)例,有需要的朋友可以參考一下2013-09-09
mysql8.0 windows x64 zip包安裝配置教程
這篇文章主要為大家詳細(xì)介紹了mysql8.0 windows x64 zip包安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05

