用Docker搭建MySQL主從復(fù)制集群

主節(jié)點:可讀可寫吉嫩。

從節(jié)點:可讀不可寫,可以用來分擔(dān)主節(jié)點讀操作壓力油挥。

這里搭建的是1個主節(jié)點,1個從節(jié)點。

1. 拉取鏡像

docker pull mysql:latest

2. 建立相關(guān)目錄

建立主節(jié)點和從節(jié)點的配置深寥、數(shù)據(jù)攘乒、日志目錄

mkdir -p /mysql_test/mysql_cluster/master/config
mkdir -p /mysql_test/mysql_cluster/master/data
mkdir -p /mysql_test/mysql_cluster/master/log

mkdir -p /mysql_test/mysql_cluster/slave/config
mkdir -p /mysql_test/mysql_cluster/slave/data
mkdir -p /mysql_test/mysql_cluster/slave/log

修改log目錄的所屬用戶,其實data也是要改的惋鹅,但是data會自動改则酝。不修改log目錄權(quán)限啟動容器會報錯。

sudo chown 999 /mysql_test/mysql_cluster/master/log
sudo chown 999 /mysql_test/mysql_cluster/slave/log

3. 建立配置文件

配置文件名為my.cnf闰集。主節(jié)點的放在/mysql_test/mysql_cluster/master/config里沽讹,從節(jié)點的放在/mysql_test/mysql_cluster/slave/config里。

配置文件詳解可以參考https://blog.csdn.net/uisoul/article/details/111677544

主節(jié)點my.cnf內(nèi)容武鲁。

[mysqld]

skip-host-cache
skip-name-resolve
log-error=/var/log/mysql/error.log

server-id=1
log-bin=mysql-bin

從節(jié)點my.cnf內(nèi)容妥泉,注意節(jié)點的server-id不可以相同。

[mysqld]

skip-host-cache
skip-name-resolve
log-error=/var/log/mysql/error.log

server-id=2
relay-log=mysql-relay

4. 建個密碼配置文件洞坑,為了docker啟動腳本中不出現(xiàn)密碼明文

mkdir -p /mysql_test/mysql_cluster/master/config/secrets
mkdir -p /mysql_test/mysql_cluster/slave/config/secrets

echo "1234567" > /mysql_test/mysql_cluster/master/config/secrets/password
echo "1234567" > /mysql_test/mysql_cluster/slave/config/secrets/password

5. 編寫主從容器啟動腳本

主節(jié)點容器腳本run_mysql_cluster_master.sh

docker run --name mysql_master1 \
        -h mysql_master1 \
        -p 0.0.0.0:4000:3306 \
        -v /mysql_test/mysql_cluster/master/config:/etc/mysql/conf.d \
        -v /mysql_test/mysql_cluster/master/data:/var/lib/mysql \
        -v /mysql_test/mysql_cluster/master/log:/var/log/mysql \
        -e MYSQL_ROOT_PASSWORD_FILE=/etc/mysql/conf.d/secrets/password \
        --restart=always \
        -d mysql:latest \

從節(jié)點容器腳本run_mysql_cluster_slave.sh

docker run --name mysql_slave1 \
        -h mysql_slave1 \
        -p 0.0.0.0:4001:3306 \
        -v /home/xushuzhen/mysql_test/mysql_cluster/slave/config:/etc/mysql/conf.d \
        -v /home/xushuzhen/mysql_test/mysql_cluster/slave/data:/var/lib/mysql \
        -v /home/xushuzhen/mysql_test/mysql_cluster/slave/log:/var/log/mysql \
        -e MYSQL_ROOT_PASSWORD_FILE=/etc/mysql/conf.d/secrets/password \
        --restart=always \
        -d mysql:latest \

6. 啟動容器

sh run_mysql_cluster_master.sh
sh run_mysql_cluster_slave.sh

7. 建立同步用戶

使用mysql命令行或者數(shù)據(jù)庫工具盲链,連接主節(jié)點。

我使用的是Navicat迟杂,安裝可以參考https://www.bilibili.com/read/cv17235251

連上主節(jié)點刽沾,建立同步用戶。建完要修改成mysql_native_password形式的密碼排拷,不改可能會不能同步侧漓。

CREATE USER 'slave1'@'%' IDENTIFIED BY '1234567';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
FLUSH PRIVILEGES;

ALTER USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password BY '1234567'; 

8. 查看主節(jié)點信息

show master status;

查詢結(jié)果是


image.png

9. 給從節(jié)點配置上同步用戶

連接從節(jié)點后,該命令填入主節(jié)點的:ip监氢、端口布蔗、步驟7里建的用戶名密碼、步驟8查出來的mysql-bin信息浪腐,然后執(zhí)行纵揍。

CHANGE MASTER TO MASTER_HOST='192.168.10.2', 
MASTER_PORT=4000, 
MASTER_USER='slave1', 
MASTER_PASSWORD='1234567',
MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=2643;

啟動從服務(wù)

start slave; 

查看從服務(wù)狀態(tài)

show slave status;

可以看到剛剛配的信息,然后水平滾動條往后拉一拉议街,看到這兩項都是Yes泽谨,主從復(fù)制集群就搭建OK了。

image.png

如果Slave_IO_Running狀態(tài)不是Yes特漩,而一直是Connecting

那就檢查一下步驟9命令里填的主節(jié)點相關(guān)信息有沒有填對吧雹。

如果還不行,再檢查一下步驟7中有沒有改為mysql_native_password形式的密碼涂身,改完執(zhí)行停止雄卷、重置從服務(wù)命令

stop slave;
reset slave;

然后再執(zhí)行步驟9。

OK之后蛤售,可以在主節(jié)點里建庫建表丁鹉,寫個數(shù)據(jù)妒潭。然后重新鏈接一下從節(jié)點,就可以看到自動同步的表了鳄炉。主從數(shù)據(jù)一致杜耙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拂盯,隨后出現(xiàn)的幾起案子佑女,更是在濱河造成了極大的恐慌,老刑警劉巖谈竿,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件团驱,死亡現(xiàn)場離奇詭異,居然都是意外死亡空凸,警方通過查閱死者的電腦和手機嚎花,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呀洲,“玉大人紊选,你說我怎么就攤上這事〉蓝海” “怎么了兵罢?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滓窍。 經(jīng)常有香客問我卖词,道長,這世上最難降的妖魔是什么吏夯? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任此蜈,我火速辦了婚禮,結(jié)果婚禮上噪生,老公的妹妹穿的比我還像新娘裆赵。我一直安慰自己,他們只是感情好杠园,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布顾瞪。 她就那樣靜靜地躺著,像睡著了一般抛蚁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惕橙,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天瞧甩,我揣著相機與錄音,去河邊找鬼弥鹦。 笑死肚逸,一個胖子當(dāng)著我的面吹牛爷辙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朦促,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼膝晾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了务冕?” 一聲冷哼從身側(cè)響起血当,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禀忆,沒想到半個月后臊旭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡箩退,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年离熏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戴涝。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡滋戳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出啥刻,到底是詐尸還是另有隱情奸鸯,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布郑什,位于F島的核電站府喳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蘑拯。R本人自食惡果不足惜钝满,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望申窘。 院中可真熱鬧弯蚜,春花似錦、人聲如沸剃法。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贷洲。三九已至收厨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間优构,已是汗流浹背诵叁。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钦椭,地道東北人拧额。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓碑诉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侥锦。 傳聞我的和親對象是個殘疾皇子进栽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容