Docker + Mysql 搭建主从数据库

搭建主从数据库

前期准备

  • 安装docker for 安装数据库
  • 安装Kitematic for docker的client
  • 安装navicat for 访问数据库

搭建流程

版本

  • docker (18.03.1-ce-win65 (17513))
  • mysql images (5.7.20)

搭建主数据库

  • 下载镜像
docker pull mysql:5.7.20
  • 准备配置
目录C:\Users\ZHANGLE6\Documents\Kitematic\mysql_3306\etc\conf 新建 my.cnf 文件

内容:
[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
  • 运行镜像
docker run -p 3306:3306 -v /c/Users/ZHANGLE6/Documents/Kitematic/mysql_3306/var/lib/mysql:/var/lib/mysql -v /c/Users/ZHANGLE6/Documents/Kitematic/mysql_3306/etc/conf/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=123456 --name mysql_3306 -d 7d83a47ab2d2
  • 进入容器环境
 > docker exec -it {containerId/Name} bash
  • 登录mysql
> mysql -u root -p
> Enter Password : 123456
  • 检查log-bin是否开启
> grep "log-bin" /etc/mysql/conf.d/my.cnf 
> show variables where variable_name like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
  • 授权
> grant replication slave on *.* to 'backup'@'%' identified by '123456';
> show grants for 'backup';
  • 看master状态
> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      439 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

搭建从数据库

  • 准备配置(注意server-id必须不一样)
目录C:\Users\ZHANGLE6\Documents\Kitematic\mysql_3307\etc\conf 新建 my.cnf 文件

内容:
[mysqld]
## 设置server_id,注意要唯一
server-id=101  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin 
  • 运行镜像
docker run -p 3307:3306 -v /c/Users/ZHANGLE6/Documents/Kitematic/mysql_3307/var/lib/mysql:/var/lib/mysql -v /c/Users/ZHANGLE6/Documents/Kitematic/mysql_3307/etc/conf/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=123456 --name mysql_3307 -d 7d83a47ab2d2
  • 进入容器环
 > docker exec -it {containerId/Name} bash
  • 连接master数据库
> change master to master_host='172.17.0.2', master_user='backup', master_password='123456', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos= 439, master_connect_retry=30;

参数解释:
master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

master_port:Master的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
  • 开启slave
start slave
  • 查看状态
show slave status \G;

重要参数:
Slave_IO_Running : ON (配置好,但是没有启动) /Yes (配置好,并且启动层高)
Slave_SQL_Running : ON (配置好,但是没有启动) /Yes (配置好,并且启动层高)

测试

现在开始,在主表做什么时候都会复制都从表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值