Docker部署mysql实现一主一从

本文详细描述了如何利用Docker创建并配置MySQL主从集群,包括设置服务、环境变量、配置文件和数据同步过程。读者将学会如何启动docker-compose以部署和管理多节点MySQL集群。
摘要由CSDN通过智能技术生成

1.首先找一台没人用的服务器如图
在这里插入图片描述
2.新建文件夹mysql,cd进去新建coker-compose.yml文件,文件内容如下所示:

version: ‘3.6’
services:
mysql-master:
image: mysql:5.7
container_name: mysql-master
restart: always
privileged: true
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
command:
–default-authentication-plugin=mysql_native_password
–character-set-server=utf8mb4
–collation-server=utf8mb4_general_ci
–explicit_defaults_for_timestamp=true
–lower_case_table_names=1
–max_allowed_packet=128M;
ports:
- 3316:3306
volumes:
- ./config/master.cnf:/etc/mysql/my.cnf
mysql-slave1:
image: mysql:5.7
container_name: mysql-slave1
restart: always
privileged: true
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
command:
–default-authentication-plugin=mysql_native_password
–character-set-server=utf8mb4
–collation-server=utf8mb4_general_ci
–explicit_defaults_for_timestamp=true
–lower_case_table_names=1
–max_allowed_packet=128M;
ports:
- 3317:3306
volumes:
- ./config/slave1.cnf:/etc/mysql/my.cnf
mysql-slave2:
image: mysql:5.7
container_name: mysql-slave2
restart: always
privileged: true
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
command:
–default-authentication-plugin=mysql_native_password
–character-set-server=utf8mb4
–collation-server=utf8mb4_general_ci
–explicit_defaults_for_timestamp=true
–lower_case_table_names=1
–max_allowed_packet=128M;
ports:
- 3318:3306
volumes:
- ./config/slave2.cnf:/etc/mysql/my.cnf

3.内容我相信懂docker的人应该都能看懂 就不进行解释了
4.新建config文件夹 cd进去
新建mater.cnf,slave1.cnf

mater.cnf具体配置如下:

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links=0
port = 3306
#全局唯一,取值[1,2^32-1],默认为1
server-id = 1
log-bin = master-bin
#只保留7天的二进制日志,以防磁盘被日志占满(可选)
expire-logs-days = 7
#不备份的数据库 (可选)
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys

slave1.cnf配置如下:

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links=0
port = 3306
server-id = 2
expire-logs-days = 7
#不备份的数据库 (可选)
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
log-bin=slave1-bin
relay_log=mysql-relay-bin
read_only=1 ## 设置为只读,该项如果不设置,表示slave可读可写

5.直接启动 docker-compose up -d
6等待下载,启动完成。进入主容器中:docker exec -it mysql-master bash 进行密码校验:mysql -u root -p123456,
执行sql:create user “slave_admin”@“%” identified by “123456”;
grant replication slave on . to ‘slave_admin’@‘%’ IDENTIFIED BY ‘123456’ with grant option ;
flush privileges;
show master status;
记录对应的值 类似于这样
master-bin.000005 | 422 | | information_schema,performation_schema,sys | |
退出该容器
7.进入从容器中 命令参考6
执行sql:change master to master_host = ‘主服务器ip’, master_port = 3316, master_user =‘root’, master_password = ‘123456’, master_log_file = ‘mysql-bin.000005’, master_log_pos = 422;
start slave ;
show slave status;
查看从容器状态
如果出现
在这里插入图片描述

这两个参数都为yes 恭喜你 部署成功。
常见问题:
IORunning为no
百分之八十可能是从库没有及时同步到主库的数据,重复7进去容器后 关闭从库 ,重新执行change语句 (注意先要去获取主库的binlog的值)然后change完以后在启动从库 应该就可以了

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值