docker 实现 mysql 主从复制 请参考

3 篇文章 0 订阅
2 篇文章 0 订阅

一 使用docker拉取镜像,创建两个容器

1.docker命令:docker pull mysql:5.7.25

 

2.创建容器,并且指定mysql的配置文件(注意两个的配置文件不一样)

docker run --name mysql_01 -v /root/docker/mysql01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d -p3306:3306 mysql:5.7.25

docker run --name mysql_02 -v /root/docker/mysql02:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d -p3307:3306 mysql:5.7.25

 

参数说明:

--name 给容器取名字,不要重复就可以了

-v 将宿主机的文件夹挂载给容器 这里可以查看文档

 

地址:https://hub.docker.com/_/mysql

-e 设置环境变量

-d 后台运行

-p 端口映射,前面的是宿主机的端口

 

两个配置文件内容如下:

主机:

[mysqld]

log-bin=mysql-bin #开启二进制日志

server-id=1 #设置server-id

character_set_server=utf8

init_connect='SET NAMES utf8'

 

从机:

[mysqld]

# log-bin=mysql-bin #开启二进制日志

server-id=2 #设置server-id

character_set_server=utf8

init_connect='SET NAMES utf8'

 

如果配置文件是后面写的就需要重新启动mysql

 

3.就可以看到两个mysql容器已经启动

 

4.使用数据库工具连接可以看到,全部正常

 

二 配置主从机器

 

1.主机:

1)创建用户给从机用于登录主机

CREATE USER '用户名'@'从机ip' IDENTIFIED BY '指定密码'; GRANT REPLICATION SLAVE ON *.* TO '用户名'@'从机ip'; FLUSH PRIVILEGES; // 写入刚刚的设置

 

2)查看主机的二进制文件名字和位置

 

2从机:登录mysql执行下面的语句

mysql> CHANGE MASTER TO

-> MASTER_HOST='', # 主服务器ip

-> MASTER_USER='', # 主服务器登陆名

-> MASTER_PASSWORD='YourPassword9#', # 主服务器登陆密码

-> MASTER_LOG_FILE='mysql-bin.000001', # 二进制文件的名称

-> MASTER_LOG_POS=2034; # 二进制文件的位置 注意这里不要写错 要和主机的位置保持一致

  • 启动 slave 同步进程
  • start slave;
  • 查看状态 show slave status\G;

 

 

这两个都是yes 就说名ok了,就可以试试了。

 

如果是不是YES的解决办法:

 

1.Slave_SQL_Runing:NO;

 

1)stop slave;

2)SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

3)start slave;

 

2.Slave_IO_Running:NO;

1)stop slave;

2)检查主机和从机的二进制文件相关信息是否正确【1】主机show master status\G; 【2】从机show slave status\G;

3)CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0; 修改从机信息和主机一样

4)start slave

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值