docker下MySQL的主從複製

MySql的主從複製mysql

sudo docker pull MySQL:5.7 拉取MySQL的鏡像文件(版本號爲 5.7)sql

sudo docker run -p 3339:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 主數據庫docker

sudo docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 從數據庫數據庫


執行完 倆個命令 建立的容器默認啓動 vim

docker ps 查看當前正在運行的 容器bash

docker exec -it master bash 進入master容器rest

cd etc/mysql 切換到 MySQL所在的路徑日誌

vi my.cnf 對my.cnf 進行編輯 可能會報錯 緣由是 沒有 容器自己沒有安裝 vimserver

安裝 vim ip

apt-get update

apt-get install vim


安裝成功後 vim my.cnf


對文件進行編輯

[mysqld]
## 同一局域網內注意要惟一
server-id=100
## 開啓二進制日誌功能
log-bin=mysql-bin


配置完成後須要從新啓動容器 service mysql restart
重啓mysql服務時會使得docker容器中止,咱們還須要docker start master啓動容器。
重啓以後 再次進入容器
mysql -uroot -p123456
進入數據庫服務

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

建立用來同步的用戶,而且給用戶添加倆個權限 用來主從庫之間的同步

mysql> show master status; 查看 master的狀態

記住 file 下的文件名字 Position 位置

退出 master 容器

docker exec -it slave bash 進入slave所組織容器
cd etc/mysql 切換到 MySQL所在的路徑

vi my.cnf 對my.cnf 進行編輯 可能會報錯 緣由是 沒有 容器自己沒有安裝 vim

安裝 vim

apt-get update

apt-get install vim


安裝成功後 vim my.cnf


對文件進行編輯

[mysqld]
## 設置server_id,注意要惟一
server-id=101
## 開啓二進制日誌功能,以備Slave做爲其它Slave的Master時使用
log-bin=mysql-slave-bin
## relay_log配置中繼日誌
relay_log=edu-mysql-relay-bin


配置完成後須要從新啓動容器 service mysql restart
重啓mysql服務時會使得docker容器中止,咱們還須要docker start master啓動容器。
重啓以後 再次進入容器
mysql -uroot -p123456

mysql> change master to master_host='master容器的ip', master_user='master容器中建立的用於主從同步的用戶', master_password='帳戶的密碼', master_port=3306, master_log_file='master下查看的file', master_log_pos= Position文件位置, master_connect_retry=30;

執行完以後
mysql>show slave status \G; 查看主從同步狀態
Slave_IO_Running:NO
Slave_SQL_Running:NO
還未開啓主從複製狀態

mysql> start slave;

再次查看狀態
mysql>show slave status \G;

Slave_IO_Running:YES
Slave_SQL_Running:YES

即爲開啓主從複製 成功

若依然爲NO 可嘗試 先exit 退出MySQL服務 而後 mysql -uslave -p123456 -h127.17.0.2
先使用master中設置的,用於主從同步的用戶
啓動mysql服務後 exit
再次 使用默認用戶 mysql -uroot -p123456 啓動mysql服務

mysql>stop slave;
mysql>start slave;
mysql>show slave status \G; 再次查看狀態

倆個全爲YES 主從複製即爲成功

相關文章
相關標籤/搜索