一 、什么是MySQL主从
MySQL主从(Master-Slave)复制是一种数据复制机制,用于将一个MySQL数据库服务器(主服务器)的数据复制到其他一个或多个MySQL数据库服务器(从服务器)。这种复制机制可以提供数据冗余、增加读取性能、实现高可用性、灾难恢复和数据分析等功能。
二、MySQL主从的作用
- 数据冗余和备份
- 分摊读取负载
- 提供高可用性
- 灾难恢复和故障转移
- 数据分析和报表生成
三、MySQL 8.3.0 过时的并需要移除的 replication 选项和变量。
CHANGE REPLICATION SOURCE TO IGNORE_SERVER_IDS = ();
第 1 步:创建复制主服务器
第一步是启动MySQL master。
docker run --name mysql-master \
-e MYSQL_ROOT_PASSWORD=master_root_password \
-e MYSQL_REPLICATION_MODE=master \
-e MYSQL_REPLICATION_USER=my_repl_user \
-e MYSQL_REPLICATION_PASSWORD=my_repl_password \
-e MYSQL_USER=my_user \
-e MYSQL_PASSWORD=my_password \
-e MYSQL_DATABASE=my_database \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0
在上面的命令中,容器被配置为master使用MYSQL_REPLICATION_MODE参数。MYSQL_REPLICATION_USER使用和参数指定复制用户MYSQL_REPLICATION_PASSWORD。
第2步:创建复制从站
接下来我们启动一个 MySQL 从属容器。
docker run --name mysql-slave --link mysql-master:master \
-e MYSQL_REPLICATION_MODE=slave \
-e MYSQL_REPLICATION_USER=my_repl_user \
-e MYSQL_REPLICATION_PASSWORD=my_repl_password \
-e MYSQL_MASTER_HOST=mysql-master \
-e MYSQL_MASTER_ROOT_PASSWORD=master_root_password \
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0
在上面的命令中,容器被配置为slave, 使用MYSQL_REPLICATION_MODE参数。slave节点使用MYSQL_MASTER_HOST、MYSQL_MASTER_ROOT_USER和参数MYSQL_MASTER_ROOT_PASSWORD连接到master。它还会转储主服务器中的现有数据。replication user使用MYSQL_REPLICATION_USER和参数MYSQL_REPLICATION_PASSWORD指定,并且应与master节点上指定的相同。
现在已经启动并运行一个两节点 MySQL 主/从复制集群。还可以通过添加/删除从属服务器来扩展集群,而不会导致任何停机。
通过 Docker Compose,可以使用以下命令设置主/从复制:
version: '3.9'
services:
mysql-master:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0'
ports:
- '3306'
volumes:
- /path/to/mysql-persistence:/bitnami/mysql/data
environment:
- MYSQL_REPLICATION_MODE=master
- MYSQL_REPLICATION_USER=repl_user
- MYSQL_REPLICATION_PASSWORD=repl_password
- MYSQL_ROOT_PASSWORD=master_root_password
- MYSQL_USER=my_user
- MYSQL_PASSWORD=my_password
- MYSQL_DATABASE=my_database
mysql-slave:
image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0'
ports:
- '3306'
depends_on:
- mysql-master
environment:
- MYSQL_REPLICATION_MODE=slave
- MYSQL_REPLICATION_USER=repl_user
- MYSQL_REPLICATION_PASSWORD=repl_password
- MYSQL_MASTER_HOST=mysql-master
- MYSQL_MASTER_PORT_NUMBER=3306
- MYSQL_MASTER_ROOT_PASSWORD=master_root_password
使用以下方法扩展slave数量:
docker-compose up --detach --scale mysql-master=1 --scale mysql-slave=3
上面的命令将 Slave 的数量增加到3,您可以用同样的方式缩小规模。
五、QingHub Studio快熟一键搭建 MySQL Master/Slave 主从复制
- 进入QingHub Studio 广场,-> 标准应用 > 查找【MySQL8.3.0 主从复制方案】
- 安装订阅该服务
- 进入QingHub Studio 部署设计器-新建部署
- 直接把刚刚安装的MySQL服务拖到设计器中。
- 选择部署目标服务器,一键部署(前提是该服务已经按装好agent)
- 部署成功后启动服务,并检查状态,完成服务部署。实时监控服务状态
后续
Qinghub Studio 在线体验