docker-mysql8-主從

目錄

 

一、準備官方鏡像

二、準備配置文件

三、測試mysql的啓動

3.1 maste 配置

3.2 slave 配置


一、準備官方鏡像

官方docker 鏡像 https://hub.docker.com/_/mysql

docker pull mysql:latest
# 創建mysql網絡
docker network create mysql-net --subnet 172.1.2.0/24

docker volume rm $(docker volume list |awk '{if(NR>0) print $2}')

主從規劃

role ip port 複製賬號 password
master 172.1.2.2 3306 Slave slave
slave 172.1.2.3 3307 - -

二、準備配置文件

cd ~
mkdir mysql  mysql/master mysql/slave
cd mysql
# master 配置文件
echo "[mysqld]
server-id=1
log-bin=mysql-bin" >> master/mysql.cnf
# slave 配置文件
echo "[mysqld]
server-id=2
relay_log = /usr/local/mysql/data/mysql-relay-bin relay_log-index = /usr/local/mysql/data/mysql-relay-bin.index log_slave_updates = 1
read_only=1" >> slave/mysql.cnf

三、測試mysql的啓動

3.1 maste 配置

docker run --network mysql-net --name master -p 3306:3306 --ip 172.1.2.3 -e MYSQL_ROOT_PASSWORD=mysecret -d mysql:latest
# 創建slave用戶,並配置權限
CREATE USER 'slave'@'172.1.2.%' IDENTIFIED WITH mysql_native_password BY 'slave';
select user,host from mysql.user;
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.1.2.%';
# mysql master配置 mysql.cnf
docker cp master/mysql.cnf master:/etc/mysql/conf.d/mysql.cnf
# 修改配置之後,一定要重啓
docker restart master
# 驗證binlog文件是否開啓 
show global variables like '%log_bin%';

3.2 slave 配置

docker run --network mysql-net --name slave -p 3307:3306 --ip 172.1.2.4 -e MYSQL_ROOT_PASSWORD=mysecret -d mysql:latest
# mysql slave配置 mysql.cnf
docker cp slave/mysql.cnf slave:/etc/mysql/conf.d/mysql.cnf
# 修改配置之後,一定要重啓
docker restart slave
# 指定主節點ip,端口,用戶,並配置主從
change master to master_host='172.1.2.3',master_port=3306,master_user='slave',master_password='slave';
# 或部分複製
change master to master_host='192.168.81.132',master_port=3306,master_user='slave',master_password='slave',master_log_file='mysql- bin.000002',master_log_pos=155;
start slave;
#檢測
show slave status;

 

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