您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關docker中怎么搭建mysql主從復制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
一、通過docker安裝mysql,我在這里選擇是的5.6版本
1)搜索從docker啦取mysql鏡像
docker pull mysql:5.6
2)使用本鏡像啟動兩個mysql容器(主、從容器)
master(主)
docker run -p 3316:3306 --name master-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
slave(從)
docker run -p 3317:3306 --name slave-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
參數解析:
-p 將容器的 3306 端口映射到主機的 3306 端口。
--name 使用docker鏡像mysql:5.6,將容器命名為mastermysql。
-e -e MYSQL_ROOT_PASSWORD=123456 初始化密碼。
-d 后臺運行容器,并返回容器ID。
查看容器是否正常運行:docker ps
二、配置mysql主服務器(Master)
1)進入mysql主服務器內部
docker exec -it e8355163bbbc /bin/bash
2)編輯my.cnf
cd /etc/mysql
編輯 my.cnf(vim my.cnf)
注意:可能會提示vim沒有安裝,可以運行 apt-get install vim 安裝,然后再執行vim my.cnf
在末尾處添加
[mysqld]
server-id=100
log-bin=mysql-bin
配置完成后需要重啟mysql,重啟過程中docker鏡像也會停止,所以也需要重啟一下鏡像
service mysql restart
docker start mysql-master
3)下一步在Master數據庫創建數據同步用戶,授予用戶 slave REPLICATION SLAVE權限和REPLICATION CLIENT權限,用于在主從庫之間同步數據。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
三、配置mysql從服務器(Slave)
1)進入mysql從服務器內部
docker exec -it 從服務器id /bin/bash
2)編輯my.cnf
cd /etc/mysql
編輯 my.cnf(vim my.cnf)
注意:可能會提示vim沒有安裝,可以運行 apt-get install vim 安裝,然后再執行vim my.cnf
在末尾處添加
[mysqld]
server-id=101
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin
配置完成后需要重啟mysql,重啟過程中docker鏡像也會停止,所以也需要重啟一下鏡像
service mysql restart
docker start mysql-slave
四、其他設置
1)鏈接Master(主)和Slave(從)
在Master進入mysql,執行show master status;
File和Position字段的值后面將會用到,在后面的操作完成之前,需要保證Master庫不能做任何操作,否則將會引起狀態變化,File和Position字段的值變化。
2)在Slave中進入mysql,執行
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 433, master_connect_retry=30;
命令說明:
master_host :Master的地址,指的是容器的獨立ip,可以通過docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器id查詢容器的ip
master_port:Master的端口號,指的是容器的端口號
master_user:用于數據同步的用戶
master_password:用于同步的用戶的密碼
master_log_file:指定 Slave 從哪個日志文件開始復制數據,即上文中提到的 File 字段的值
master_log_pos:從哪個 Position 開始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒
3)在Slave 中的mysql終端執行 show slave status \G; 用于查看主從同步狀態。
正常情況下,SlaveIORunning 和 SlaveSQLRunning 都是No,因為我們還沒有開啟主從復制過程。使用start slave;開啟主從復制過程,然后再次查詢主從同步狀態show slave status \G;。
看完上述內容,你們對docker中怎么搭建mysql主從復制有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。