这里我使用docker创建了两个mysql容器
对外映射端口分别为3008 3009
其中3009对应mysql设为主节点,3008对应mysql设置为从节点
配置主节点
进入docker中mysql目录下
docker exec -it mysql3009 /bin/bash
修改my.cnf文件
vim /etc/mysql/my.cnf
也可以这样设置 可以屏蔽掉实例中不想同步的数据库
设置server_id,可以自定义随机值,但是注意要唯一 log-bin 开启二进制日志功能,可以随便取(关键)
重启mysql容器
show variables like '%server_id%';
查看主节点是否设置成功
show master status 查看同步的文件,和行数 后面设置从节点需要用到
在Master数据库创建数据同步用户,授予用户 slave_test REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据
CREATE USER 'slave_test' IDENTIFIED BY '123456'
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave_test'
配置从节点
修改从节点my.cnf文件如下
[mysqld]
## 设置server_id,注意要唯一
server-id=3008
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
如果主数据库设置了屏蔽某些数据库 下面要如下设置
重启 检查是否配置成功
链接Master(主)和Slave(从)
change master to master_host='192.168.3.60', master_user='slave_test', master_password='123456', master_port=3009, master_log_file='mysql-bin.000003', master_log_pos= 643, master_connect_retry=30;
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是30秒
启动 start slave
查看状态 show slave status
说明配置成功
测试
在3009主数据库中创建test01数据库 test表
刷新3008从数据库 发现同步成功