创建主库
docker run -d -p 3306:3306 --restart=always --name my-mysql \
-v /etc/localtime:/etc/localtime \
-v /data/docker/mysql/my.cnf:/etc/mysql/my.cnf \
-v /data/docker/mysql/log:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0
创建从库
docker run -d -p 33060:3306 --restart=always --name my-mysql-slave0 \
-v /etc/localtime:/etc/localtime \
-v /data/docker/mysql-slave0/my.cnf:/etc/mysql/my.cnf \
-v /data/docker/mysql-slave0/log:/var/log/mysql \
-v /data/docker/mysql-slave0/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0
分别配置主从节点的my.cnf
- 在[mysqld]下,,不要配错,主从不能一样,配完重启
server_id = 99
lower_case_table_names=1
- 主从复制配置
##连接主节点
#查询server_id 主从节点不能一样(是下划线!!!)
SHOW VARIABLES LIKE 'server_id';
##创建同步用户,并授权
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
#查询binlog日志文件,和文件的位置
SHOW MASTER STATUS;
##连接从节点
#同样serverid不能一样
SHOW VARIABLES LIKE 'server_id';
##stop 或者reset 从节点
STOP SLAVE;
RESET SLAVE ;
## 指定主节点的binlog文件和位置
CHANGE MASTER TO
MASTER_HOST='172.17.0.1',
MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000036',
MASTER_LOG_POS=156;
##开始主从复制
START SLAVE USER='repl' PASSWORD='123456';
##查看从节点复制状态
SHOW SLAVE STATUS;
测试吧。。。