- 配置master.cnf,放到
/software/docker/mysql/master/conf/
[mysqld]
server_id=100 #唯一id
log-bin=mysql-bin #啟用二進制日志
#binlog-do-db=xxx #指定哪個數據庫可以打開注釋,xxx替換成數據庫名字
read-only=0 #1只讀,0讀寫
#忽略系統自帶的數據庫
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
- 配置slave.cnf,放到
/software/docker/mysql/slave/conf/
[mysqld]
server_id=200 #唯一id
log-bin=mysql-bin #啟用二進制日志
#binlog-do-db=xxx #指定哪個數據庫可以打開注釋,xxx替換成數據庫名字
read-only=1 #1只讀,0讀寫
#忽略系統自帶的數據庫
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
- 運行MySQL, master節點
docker run --name mysql-master -p 3036:3306 \
-v /software/docker/mysql/master/conf:/etc/mysql/conf.d \
-v /software/docker/mysql/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- 運行MySQL, slave節點
docker run --name mysql-slave-01 -p 3037:3306 \
-v /software/docker/mysql/slave/conf:/etc/mysql/conf.d \
-v /software/docker/mysql/slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- 進入master容器,創建賬號
docker exec -it mysql-master bash
mysql -uroot -proot
#<username> 用戶名
#<salveip>可修改為%,代表任意的主機
#<reppassword>用戶的認證密碼
CREATE USER '<username>'@'<salveip>' IDENTIFIED WITH mysql_native_password BY '<reppassword>';
-
獲取記錄,執行
show master status
Snipaste_2024-03-09_19-08-26.jpg 配置slave
docker exec -it mysql-slave bash
mysql -uroot -proot
#<master_ip> 主節點ip
#<username> 主節點用戶名
#<reppassword> 密碼
CHANGE MASTER TO
MASTER_HOST='<master_ip>',MASTER_PORT=3036,MASTER_USER='<username>',MASTER_PASSWORD='<reppassword>',MASTER_LOG_FILE='<File>',MASTER_LOG_POS=<Position>;
#開啟同步
start slave 開啟
stop slave 關閉
show slave status\G;
Snipaste_2024-03-09_19-24-21.jpg
只有這兩項都是YES
就成功了