史上最详细Docker部署Mysql主从复制,带每一步骤图!!!
沒有夸大標題哈,能夠成功的,實測后發文
本文主要講怎么用Docker部署Mysql的主從復制,看起來很長,實際非常簡單的,看一遍,立馬就能懂的。
直接CV也能搭建起來,莫慌。
我們一起加油!!!
地點:泰山日出
一、拉取鏡像
docker pull mysql:5.7相關命令:
- 查看鏡像:docker images
二、啟動鏡像
先啟動mysql01容器:(即之后的主機)
docker run -d -p 3310:3306 -v /home/mysql/node-1/config:/etc/mysql/ -v/home/mysql/node-1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7再啟動mysql02容器:(即之后的從機)
docker run -d -p 3311:3306 -v /home/mysql/node-2/config:/etc/mysql/ -v/home/mysql/node-2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7命令解釋:
- -d: 后臺運行容器,并返回容器ID
- -p 3311:3306 :將容器的3306端口映射到宿主機3310端口
- -e MYSQL_ROOT_PASSWORD=123456 :配置數據庫連接密碼
- -v /home/mysql/node-2/config:/etc/mysql/ :將配置文件夾掛載到宿主機
- –name mysql01(02):將容器命名為 mysql01(02)
相關命令:
docker ps -a #查看全部容器(運行中加未運行的)都已正常啟動。
三、連接測試
搭建過程中,為了減少錯誤的產生,就多了這一步的測試。
我們可以直接拿Navicat來進行連接測試。
注意事項: 記得打開安全組,虛擬機的話記得處理好防火墻。(另外我這里是3310,可根據自己需要更改端口)
測試啟動成功后,我們再來進行下一步。
四、編寫主從復制配置文件
之前我們啟動的時候寫了這句-v /home/mysql/node-1/config:/etc/mysql/,將mysql 的配置文件夾和宿主機的文件夾掛載起來的。
那么我們就可以直接在宿主機下的/home/mysql/node-1/config/編寫配置文件了。
4.1、編寫主機配置文件
我們先編寫主機上的配置文件:
vim my.cnf回車之后是這樣的:
先按insert鍵,然后直接將下面主機的配置文件復制上去即可:
[mysqld] #修改配置文件:vim /etc/my.cnf #主服務器唯一ID server-id=1 #啟用二進制日志 log-bin=mysql-bin # 設置不要復制的數據庫(可設置多個) binlog-ignore-db=mysql binlog-ignore-db=information_schema #設置需要復制的數據庫 需要復制的主數據庫名字 binlog-do-db=testdb #設置logbin格式 binlog_format=STATEMENT退出方式:
先按Esc鍵–>再按Shift+:鍵–>輸入wq–保存退出。
4.2、編寫從機配置文件
從機上的my.cnf也是同樣的方式
[mysqld] #從服務器唯一ID server-id=2 #啟用中繼日志 relay-log=mysql-relay重新啟動mysql容器
docker restart mysql01 mysql02 docker ps -a #查看容器接下來就是搭建主從復制了。
五、搭建主從復制
5.1、主機設置
docker exec -it mysql01 /bin/bash #進入容器 mysql -uroot -p123456 #連接mysql5.2、主機上建立帳戶并授權 slave
給從機授權,為了讓從機能夠和主機連接起來。
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';5.3、查詢master狀態
show master status; #查詢master的狀態把這里的File和Position記下來哈,等下在從機上要用到。
File: mysql-bin.000003 Position: 438Binlog_Do_DB:需要復制的數據庫。
Binlog_Ignore_DB:不需要復制的數據庫。
注意:此步驟后不要再操作主服務器MySQL,防止主服務器狀態值變化
5.4、從機設置
進入mysql02容器
docker exec -it mysql02 /bin/bash mysql -uroot -p123456復制主機的命令
CHANGE MASTER TO MASTER_HOST='主機的ip地址', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_PORT=3310, MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=438; #解釋: # CHANGE MASTER TO MASTER_HOST='主機的IP地址', # MASTER_USER='slave'(剛剛配置的用戶名), # MASTER_PASSWORD='123456'(剛剛授權的密碼), # master_port=主機開放的端口 我這里是3310端口, # MASTER_LOG_FILE='mysql-bin.具體數字',MASTER_LOG_POS=具體值(之前的Position);注意事項:如果在這里出現錯誤,先重置。執行完下面兩條命令。
stop slave; reset master;啟動從服務器復制功能
start slave;查看從服務器狀態
show slave status\G#下面兩個參數都是Yes,則說明主從配置成功!
Slave_IO_Running: Yes Slave_SQL_Running: Yes六、測試主從復制
6.1、主機新建庫 -從機復制
在主機新建testdb后,從機也隨之就有了。(這里的命名是確定的,因為在配置文件中說明了復制testdb數據庫)。
6.1、新建表-從機復制
6.3、insert 記錄-從機復制
當然這些還是有看不出到底有沒有復制的話,咱們直接測試函數,就能知道啦。
insert into my_table01(id,name) VALUE(1,@@hostname);這就可以看出主從復制確實是成功的,但是在使用函數上有數據不一致的問題。
七、重置配置主從
如何停止從服務復制功能
stop slave;如何重新配置主從 (即清除之前的主從配置)
stop slave; reset master;八、自言自語
下一篇打算講一下mysql的中間件mycat實現讀寫分離,或者說點理論😀,咱們一步一步來哈😁。
你好,我是博主寧在春,Java學習路上的一顆小小的種子,也希望有一天能扎根長成蒼天大樹。
最近在持續更新中,如果你覺得文章對你有所幫助,也感興趣的話,關注我吧。
讓我們一起學習,一起討論吧。
希望與君共勉😁
我們:待別時相見時,都已有所成。
總結
以上是生活随笔為你收集整理的史上最详细Docker部署Mysql主从复制,带每一步骤图!!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JUC系列(六) | Callable和
- 下一篇: MySQL如何存储Emoji表情,UTF