docker部署mysql主從複製

1.部署環境:

docker虛擬機,win10安裝docker虛擬機,具體配置就不介紹了,參考其他文章。

Linux虛擬機與本機設置共享目錄,以便掛載文件到docker容器,具體配置參考我其他文章。

2.下載mysql鏡像

1.我直接輸入的docker pull mysql,下載的mysql最新的鏡像,貌似是8以上,具體沒看。

2.在本地共享目錄新建兩個mysql配置文件,分別是master mysql 配置文件和slave mysql配置文件

mysql-m.cnf:

[mysqld]
log-bin = mysql-bin
server-id=1
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

mysql-s.cnf:

[mysqld]
log-bin=mysql-bin
server-id=2
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

3.啓動鏡像,命令:

docker run -d -e MYSQL_ROOT_PASSWORD=root123 --name mysql-m -v /mnt/mysql/my-m.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf  -p 3307:3306 mysql

docker run -d -e MYSQL_ROOT_PASSWORD=root123 --name mysql-s -v /mnt/mysql/my-s.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf  -p 3308:3306 mysql

4.進入主mysql容器,即執行命令:docker exec -it mysql-m /bin/bash

5.創建用戶test.執行命令:create user 'test'@'192.168.99.100' identified by '123456';並授權,執行如下命令:

GRANT REPLICATION SLAVE ON *.* to 'test'@'%';

遇到的問題:執行授權會報錯:沒有權限授權。 是因爲mysql8改變了授權機制,在主數據庫把test的host改成%,在執行授權命令就可以了。授權的時候,爲了方便後面測試,最後給test測試用戶插入的權限,後面可以直接用Navicat客戶端在線建表測試主從複製。

6.查看主數據庫的狀態: 

7.記住上面兩個參數,File和position在從數據庫會設置用到這兩個參數。

8.進入從數據庫。

9.執行命令:

執行命令:change master to master_host='192.168.99.100',master_user='test',master_password='123456',master_log_file='bin_log.000002',master_log_pos=7052,master_port=3307;

10.啓動命令:start slave;

11.查看狀態:show slave status \G;

上面slave_IO_Running:YES SLAVE_SQL_RUNNING:YES 表示運行成功。

12.登錄主數據庫和從數據庫:

在主數據庫建一個test數據庫

看一下,在從數據庫有沒有同步,刷新一下:

可以看到自動同步了相同的數據庫。插入一條數據看看效果:

大功告成,收工

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章