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數據庫
看一下,在從數據庫有沒有同步,刷新一下:
可以看到自動同步了相同的數據庫。插入一條數據看看效果:
大功告成,收工