docker 安装mysql一主一从(读写分离)

414 阅读3分钟

docker 安装mysql一主一从(读写分离)

一、下载镜像

docker pull mysql+版本号

二、配置mysql配置文件()

在服务器合适路径下创建文件。eg: /home/mysql/mysql-master.cnf

主配

vim mysql-master.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=2
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

2、从配

vim mysql-slave.cnf

[mysqld]
##设置server_id,同一局域网中需要唯一
server_id=3
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mysql-slave-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1 

三、启动主、从容器

#1、启动主容器
docker run -itd --name docker-mysql-master -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -v /home/mysql/mysql-master.cnf:/etc/mysql/my.cnf  mysql:5.7.40

#2、启动从容器
docker run -itd --name docker-mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 -v /home/mysql/mysql-slave.cnf:/etc/mysql/my.cnf  mysql:5.7.40

#3、启动后分别进入主从容器内 
docker exec -it 容器id bash

#4、将/etc/mysql/my.cnf 文件 cp 到 /etc/mysql/mysql.conf.d目录下
cp /etc/mysql/my.cnf /etc/mysql/mysql.conf.d

#5、重启主从容器重
docker restart 容器id

#6、查看主容器状态
show master status;(如果查询结果为0,则为配置文件未生效导致。重做4、5步骤)

image-20221110165955106

四、在主库中创建从库连接主库用户

CREATE USER 'slave'@'%' IDENTIFIED by '123456';
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';

五、配置从库

#1、配置从库连接主库信息
change master to master_host='主库ip',master_port=主库端口,master_user='slave',master_password='123456',master_log_file='binlog.000001',master_log_pos=154;
#2、启动从库同步功能
start slave;
#3、查看从库状态
show slave status;

注:修改从库连接主库信息时,需要先停止从库同步功能 : stop slave,然后再执行1、2、3步骤

image-20221110170703182

注:Slave_IO_Running、Slave_SQL_Running必须同为yes,缺一不可

至此,配置完成!!!