Docker实现mysql的主从复制

1、启动主mysql

docker run -p 3307:3306  \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

2、设置conf中的my.cnf

vim my.conf

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

3、重启主mysql

docker restart 主mysql

4、进入主mysql进行授权某个用户能访问主mysql的数据,创建数据同步用户

CREATE USER 'slave'@'%' IDENTIFIED BY '123456'

5、创建从mysql

docker run -p 3308:3306  \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d --name slave-mysql mysql:5.7

6、配置从mysql的my.cnf

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

7、重启从mysql

docker restart 从mysql

8、进入主mysql查看主mysql的position(为下一步的master_log_pos的值)

show master status

9、在从mysq进行主从复制

change master to master_host='192.168.229.130',
master_user="slave",
master_password="123456",
master_port=3307,
master_log_file="mall-mysql-bin.000001",
master_log_pos=154;

10、查看从mysql的主从同步状态(IORunning为no)

show status slave \G

11、在从数据库开启主从同步

start slave;
show status slave \G;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值