Mysql主从搭建(Docker)
# 主从架构优点
数据安全,可以进行数据的备份。
读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据库访问的压力
故障转移(高可用),当主节点宕机之后,将从服务切换为主节点继续提供服务。当然要实现主从切换还需要其他中间件来实现。
# 主从搭建
# 1. 拉取镜像
docker pull bigox/mysql5.7:v1.0
1
# 2. 启动镜像
# master
docker run --name mysql-33070 -p 33070:3306 -e MYSQL_ROOT_PASSWORD=Abcd@123456 -d -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/data/:/var/lib/mysql --restart=always mysql5.7:v1.0
# slave
docker run --name mysql-33071 -p 33071:3306 -e MYSQL_ROOT_PASSWORD=Abcd@123456 -d -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/data/:/var/lib/mysql --restart=always mysql5.7:v1.0
1
2
3
4
5
2
3
4
5
# 3. 配置文件修改
master
docker exec -it mysql-33070 /bin/bash
apt-get update && apt-get install -y vim net-tools
cd /etc/mysql
vim ./my.conf
添加配置
[mysqld] ## 同一局域网内注意要唯一 server-id=1 ## 开启二进制日志功能,可以随便取(关键) log-bin=master-bin binlog-format=ROW # 二级制日志格式,有三种 row,statement,mixed # binlog-do-db=数据库名 # 同步的数据库名称,如果不配置,表示同步所有的库
1
2
3
4
5
6
7service mysql restart
docker start mysql-33070
slave
docker exec -it mysql-33071 /bin/bash
apt-get update && apt-get install -y vim net-tools
cd /etc/mysql
vim ./my.conf
添加配置
[mysqld] ## 设置server_id,注意要唯一 server-id=2 ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用 log-bin=mysql-slave-bin ## relay_log配置中继日志 relay_log=mysql-relay-bin read_only=1 ## 设置为只读,该项如果不设置,表示slave可读可写
1
2
3
4
5
6
7
8service mysql restart
docker start mysql-33071
# 4. 开启Master-Slave主从复制
在master输入查询语句查看master 状态
show master status;
在slave库上
设置slave库, master_host 为docker mysql主节点ip,需要再镜像内部查看, 注意端口;
change master to master_host='172.17.0.2', master_user='root', master_password='Abcd@123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos= 154;
1
2
3
4
5
6start slave;
show slave status;
停止主从复制:
stop slave
大功告成~!
上次更新: 2023/04/16, 18:35:33