【Docker -Mysql5.7 配置主从】

1.创建 两个 mysql5.7 的容器

注意:系统是centos7,mysql默认密码为:root 
从数据库用户名:slave

1.1 主数据库容器 (mysql-master)

创建容器:
docker run -p 3307:3306 --name mysql-master \
-v /home/traynor/mysql/master/log:/var/log/mysql \
-v /home/traynor/mysql/master/data:/var/lib/mysql \
-v /home/traynor/mysql/master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

1.1.1 创建成功之后检查容器挂载是否正常~

1.1.2 在**/home/traynor/mysql/master/conf**目录下新建 my.cnf

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

1.1.3 重启mysql-master容器

1.1.4 进入mysql-master容器配置从数据库账户

让从数据库有权限从主数据库拉取数据,执行命令:

(1)进入容器
docker exec -it mysql-master /bin/bash 
(2)登陆mysql:
mysql -uroot -proot
(3)设置 从数据库 账户信息:
CREATE USER 'slave'@'%' IDENTIFIED BY 'root';
GRANT REPLICATION SLAVE,REPLICATION SLAVE ON *.* TO'slave'@'%';

1.2 从数据库容器(mysql-slave)

创建容器:
docker run -p 3308:3306 --name mysql-slave \
-v /home/traynor/mysql/slave/log:/var/log/mysql \
-v /home/traynor/mysql/slave/data:/var/lib/mysql \
-v /home/traynor/mysql/slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

1.2.1 创建成功之后检查容器挂载是否正常~

1.2.2 在**/home/traynor/mysql/slave/conf**目录下新建 my.cnf

文件内容为:
[mysqld]
## 设置server id 同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-slave1-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.2.3 重启mysql-slave容器

2. 配置容器:

2.1 进入mysql-master 容器

docker exec -it mysql-master /bin/bash
登录mysql:
mysql -uroot -proot 
获取从数据库配置需要的信息:
show master status;
结果为:
mysql> show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000001 |      965 |              | mysql            |                   |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

2.2进入mysql-slave容器

docker exec -it mysql-slave /bin/bash
登录mysql
mysql -uroot -proot 
设置登入住数据库:
CHANGE MASTER TO MASTER_HOST='主数据库ip', MASTER_USER='slave', MASTER_PASSWORD='root',MASTER_PORT=3307, MASTER_LOG_FILE='mall-mysql-bin.000001', MASTER_LOG_POS=154,MASTER_CONNECT_RETRY=30;

启动!!!
start slave;

配置完成

3. 检查配置

登入从数据库后,执行:
show slave status;

显示结果中,下面两项都是yes即为配置成功

   Slave_IO_Running: Yes
   Slave_SQL_Running: Yes
可以在主数据库建表插入数据验证~
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值