1. 下载mysql:5.7.39的docker镜像并运行
docker run -itd -p 3306:3306 --name mysql-1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.39
  1. 进入mysql-1容器内部,并创建主从复制所需的账号和权限
docker exec -it mysql-1 bash

mysql -u root -p
输入密码:123456

# 创建复制账号
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  1. 查看mysql-1容器的IP地址
docker inspect mysql-1 | grep IPAddress
  1. 复制mysql-1容器的数据到mysql-2容器
docker run -itd -p 3307:3306 --name mysql-2 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.39

docker exec mysql-1 sh -c 'mysqldump --all-databases --master-data > /tmp/dbdump.sql'
docker cp mysql-1:/tmp/dbdump.sql /tmp/dbdump.sql

docker cp /tmp/dbdump.sql mysql-2:/tmp/dbdump.sql
docker exec mysql-2 sh -c 'mysql < /tmp/dbdump.sql'
  1. 配置mysql-2容器为mysql-1容器的从节点
docker exec -it mysql-2 bash

mysql -u root -p
输入密码:123456

# 配置从节点
CHANGE MASTER TO MASTER_HOST='mysql-1的IP地址',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

# 开启复制
START SLAVE;
  1. 验证主从复制是否生效

在mysql-1容器内创建一个新的数据库,并在其中创建一张表

CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20), PRIMARY KEY (id));
INSERT INTO t1 (name) VALUES ('test1'),('test2'),('test3');

在mysql-2容器内查看是否可以看到新创建的数据库和表

SHOW DATABASES;
USE test;
SELECT * FROM t1;

如果可以看到,则说明主从复制已经生效。

容器手动部署mysql5739主从复制

原文地址: https://www.cveoy.top/t/topic/bgMl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录