文章目录
- 1、准备工作
- 2、下拉镜像,启动容器
- 3、编辑 MySQL 主节点配置
- 4、编辑 MySQL 从节点配置
- 5、通过 Navicat 配置主节点
- 6、通过 Navicat 配置从节点
- 7、最终测试
1、准备工作
- 云服务器(虚拟机也可以)
- 安装Docker,参考该文章第1小节:https://blog.csdn.net/weixin_46594796/article/details/122750009
- 开放安全组(3306、3307),确保Navicat可以正常连接
2、下拉镜像,启动容器
首先,下拉MySQL镜像,版本为5.7:
docker pull mysql:5.7
根据MySQL,启动两个MySQL容器(一主一从):
# 主节点
docker run -d -p 3306:3306 -v /home/mysql/node-1/config:/etc/mysql/ -v/home/mysql/node-1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
# 从节点
docker run -d -p 3307:3306 -v /home/mysql/node-2/config:/etc/mysql/ -v/home/mysql/node-2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7
3、编辑 MySQL 主节点配置
进入配置目录,创建配置文件:
# 进入配置目录
cd /home/mysql/node-1/config/
# 创建配置文件
vim my.cnf
将下方配置内容复制到 my.cnf 中:
[mysqld]
# 主服务器ID(与从服务器不能相同)
server-id=1
# 启用binlog
log-bin=mysql-bin
# 忽略数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# 数据库名称(主从复制)
binlog-do-db=test
# binlog格式
binlog_format=STATEMENT
4、编辑 MySQL 从节点配置
进入配置目录,创建配置文件:
# 进入配置目录
cd /home/mysql/node-2/config/
# 创建配置文件
vim my.cnf
将下方配置内容复制到 my.cnf 中:
[mysqld]
# 从服务器唯一ID
server-id=2
# 启用relaylog中继日志
relay-log=mysql-relay
重启两台MySQL容器:
docker restart mysql01 mysql02
5、通过 Navicat 配置主节点
接下来所有的命令通过Navicat执行即可
首先,通过Navicat连接MySQL主节点,端口号分别是3306:
为MySQL从节点授权,能够主从连接:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
查询主节点状态:
show master status;
6、通过 Navicat 配置从节点
首先,通过Navicat连接MySQL从节点,端口号分别是3307:
执行命令,为从节点设置主从配置:
CHANGE MASTER TO MASTER_HOST='主机公网IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=430;
启动从节点复制功能:
start slave;
查询从节点状态,其中Slave_IO_Running
和Slave_SQL_Running
是Yes,说明主从复制搭建成功!
show slave status;
7、最终测试
为主节点创建test
数据库,从节点会自动同步:
为主节点创建user
表,从节点会自动同步:
为主节点创建user
表插入数据,从节点会自动同步: