docker 下的 mysql主從

本篇打算創(chuàng)建一個 1主2從的 mysql主從筛严,3個docker容器

  • 首先創(chuàng)建文件夾
    master, slave1, slave2

  • 然后在各個文件夾里創(chuàng)建mysql 的配置文件
    mysql 的配置文件在 /etc/mysql/my.conf
    所以我們在 各個文件夾內(nèi)創(chuàng)建配置文件

D:.                
├─master           
│  └─conf          
│          my.cnf  
├─slave1           
│  └─conf          
│          my.cnf  
└─slave2           
    └─conf         
            my.cnf 
  • 由于我們使用docker默認的mysql鏡像,是最新版的9.0翅溺,密碼插件使用的是caching_sha2_password脑漫,這個可能會給我我們帶來困擾,所以我們在配置文件里面加入
    default_authentication_plugin=mysql_native_password

  • 相對應(yīng)我們的docker 語句就變成了
    docker run --name some-mysql -v D:\my-project\docker-mysql\master\conf\my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql

  • 連接完配置文件后咙崎,就要掛載對應(yīng)的datadir, 相對應(yīng) 我們的docker語句就變成了
    docker run --name master-mysql -v D:\my-project\docker-mysql\master\datadir:/var/lib/mysql -v D:\my-project\docker-mysql\master\conf\my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql

進入 master-mysql 實例
docker exec -it master-mysql bash
進入后 連接進入mysql 創(chuàng)建庫先放入一些數(shù)據(jù)优幸,

 ~:mysql -uroto -proot
 mysql> create database newplan DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
    -> ;
Query OK, 1 row affected, 2 warnings (0.03 sec)utf8_general_ci;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| newplan            |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

  • 假設(shè)我們現(xiàn)在已經(jīng)有了數(shù)據(jù),開始配置主從
  • 首先我們是在一個docker 宿主的情況下配置主從褪猛,所以我們要先設(shè)置一個網(wǎng)絡(luò)環(huán)境
    docker network create mysql_net 讓我們的mysql 實例都在這一個網(wǎng)絡(luò)環(huán)境下運行
    所以我們的 docker 命令就要進行適當(dāng)修改
    docker run --name master-mysql -v D:\my-project\docker-mysql\master\datadir:/var/lib/mysql -v D:\my-project\docker-mysql\master\conf\my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --network mysql_net --network-alias network_master_mysql -d mysql

  • 網(wǎng)絡(luò)設(shè)置完畢后 開始著手配置主從首先修改我們主機的my.cnf 加入幾條配置
log-bin=mysql-bin
server-id=1
binlog-do-db=newplan
  • 重啟主機容器
    docker restart master-mysql
  • 進入主機mysql
    docker exec -it master-mysql bahs
    mysql -uroot -proot
  • 設(shè)置一個用戶便于從庫登錄
CREATE USER 'leven'@'localhost' IDENTIFIED BY 'Leven';#創(chuàng)建用戶
GRANT REPLICATION SLAVE ON *.* TO 'leven'@'localhost';#授權(quán)
flush privileges; 
  • 查看當(dāng)前主機master狀態(tài)(記住 File 和 Position)
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |    10622 | newplan      |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)                                                              

到此主庫的配置基本完畢


  • 修改從庫my.cnf 加入server-id=2
  • 創(chuàng)建從機容器
    docker run --name slave1-mysql -v D:\my-project\docker-mysql\slave1\datadir:/var/lib/mysql -v D:\my-project\docker-mysql\slave1\conf\my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --network mysql_net --network-alias network_slave1_mysql -d mysql 注意修改對應(yīng)別名以及端口
  • 登錄從機mysql
docker exec -it slave1-mysql bash
mysql -uroot -proot
  • 執(zhí)行同步SQL設(shè)置語句
    CHANGE MASTER TO MASTER_HOST='network_master_mysql',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=10622; master_host 是我們network 的別名网杆,master_log和master_log_pos是我們主機狀態(tài)里面的
  • 啟動同步進程
    start slave;
  • 查看同步狀態(tài)
    show slave status \G
  • 如果碰到錯誤需要跳過
stop slave;
set global sql_slave_skip_counter=1;
start slave;

參考資料:
https://blog.csdn.net/m0_37890289/article/details/80087003
https://store.docker.com/images/mysql
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伊滋,隨后出現(xiàn)的幾起案子碳却,更是在濱河造成了極大的恐慌,老刑警劉巖笑旺,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昼浦,死亡現(xiàn)場離奇詭異,居然都是意外死亡筒主,警方通過查閱死者的電腦和手機关噪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乌妙,“玉大人使兔,你說我怎么就攤上這事√僭希” “怎么了虐沥?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泽艘。 經(jīng)常有香客問我欲险,道長,這世上最難降的妖魔是什么匹涮? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任盯荤,我火速辦了婚禮,結(jié)果婚禮上焕盟,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好脚翘,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布灼卢。 她就那樣靜靜地躺著,像睡著了一般来农。 火紅的嫁衣襯著肌膚如雪鞋真。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天沃于,我揣著相機與錄音涩咖,去河邊找鬼。 笑死繁莹,一個胖子當(dāng)著我的面吹牛檩互,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咨演,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼闸昨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了薄风?” 一聲冷哼從身側(cè)響起饵较,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遭赂,沒想到半個月后循诉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡撇他,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年茄猫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逆粹。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡募疮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出僻弹,到底是詐尸還是另有隱情阿浓,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布蹋绽,位于F島的核電站芭毙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卸耘。R本人自食惡果不足惜退敦,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚣抗。 院中可真熱鬧侈百,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至例证,卻和暖如春路呜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背织咧。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工胀葱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笙蒙。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓抵屿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親手趣。 傳聞我的和親對象是個殘疾皇子晌该,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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