mysql5.7主从部署(docker-compose版本)
1:docker-compose-test.yml 文件信息
version: '3'
services:
mysql-master:
image: mysql:5.7
container_name: mysql-master
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: nacos
ports:
- 23306:3306
volumes:
- /etc/localtime:/etc/localtime:ro
- ./mysql-master/conf.d:/etc/mysql/conf.d
- ./mysql-master/data:/var/lib/mysql
networks:
- nacos_net
mysql-slave:
image: mysql:5.7
container_name: mysql-slave
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: nacos
ports:
- 33306:3306
volumes:
- /etc/localtime:/etc/localtime:ro
- ./mysql-slave/conf.d:/etc/mysql/conf.d
- ./mysql-slave/data:/var/lib/mysql
networks:
- nacos_net
networks:
nacos_net:
driver: bridge
ipam:
config:
- subnet: 172.19.0.0/16
2: 在 ./mysql-master/conf.d 下创建my.cnf, 内容如下
[mysqld]
server_id=101
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
3:重启主节点
docker restart mysql-master
4.进入mysql-master容器,并在容器内创建数据同步用户(指定那个用户能够同步我的数据即授权)
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
5:启动从节点
docker-compose -f docker-compose-test.yml up -d mysql-slave
6: 在 ./mysql-slave/conf.d 下创建my.cnf, 内容如下
[mysqld]
server_id=102
binlog-ignore-db=mysql
log-bin=mall-mysql-slave1-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mall-mysql-relay-bin
log_slave_updates=1
read_only=1
7:重启从节点
docker restart mysql-salve
8:主节点查看数据同步状态
show master status;

9:进入slave(从数据库)中,在从数据库中配置主从复制(主从同步)
change master to master_host='mysql-master',master_user='slave',master_password='hyyt@2024',master_port=3306,master_log_file='mall-mysql-bin.000001',master_log_pos=154,master_connect_retry=30;
master_host:主数据库的IP地址(注意docker-compose 自定义桥接网络可以通过名称访问,所以我这边用的名称代替ip);
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。
10:从从数据库中查看主从同步状态
show slave status \G;

11.在从数据库中开启主从同步,并再次查看状态是否变为开启状态
start slave;

12:最后就是测试(可以在主库新增数据,在从库也是可以看到的)