Docker搭建MySQ主从复制原理

 更新时间:2022年09月15日 11:27:38   作者:弓长三虎​​​​​​​  
这篇文章主要介绍了Docker搭建MySQ主从复制原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

简介

通过docker学习主从复制可以节省资源可以了解其原理。。。

生产环境不可能出现这种情况!!!

使用Docker拉取MySQL镜像

docker pull mysql:5.7

查看镜像

docker images

启动MySQL主从容器

Master:

docker run -p 3302:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Slave:

docker run -p 3303:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

配置Master

使用如下命令进入到Master容器内部,使用容器ID或者名称均可:

docker exec -it mysql-master /bin/bash //mysql-master为容器名称

在配置文件中添加以下内容:

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

在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

登录到mysql客户端:

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

配置Slave

在配置文件添加以下内容:

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制格式(mied,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_notallow=1

开启Master-Slave主从复制

进入Master库mysql客户端:输入show master status查看Master状态:

记住File和Position,后面需要用到。此时一定不要操作Master库,否则将会引起Master状态的变化,File和Position字段也将会进行变化。

进入到Slave库myslq客户端,执行如下命令:

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos=617, 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 中的mysql终端执行show slave status \G;用于查看主从同步状态。

Slave_IO_Running 和 Slave_SQL_Running是查看主从是否运行的关键字段,默认为NO,表示没有进行主从复制。

使用start slave;开启主从复制过程,然后再次查询主从同步状态show slave status \G

Slave_IO_Running 和 Slave_SQL_Running 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。

同步成功主从复制成功!!!

到此这篇关于Docker搭建MySQ主从复制原理的文章就介绍到这了,更多相关Docker MySQ主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker SSH连接docker容器的示例代码

    Docker SSH连接docker容器的示例代码

    这篇文章主要介绍了Docker SSH连接docker容器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 使用Nexus创建Docker仓库的方法步骤

    使用Nexus创建Docker仓库的方法步骤

    这篇文章主要介绍了使用Nexus创建Docker仓库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • docker容器查看所有没使用的镜像并删除的实现

    docker容器查看所有没使用的镜像并删除的实现

    本文主要介绍了docker容器查看所有没使用的镜像并删除的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 使用Docker registry镜像创建私有仓库的方法

    使用Docker registry镜像创建私有仓库的方法

    本篇文章主要介绍了使用Docker registry镜像创建私有仓库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Linux服务器安装Docker,启动失败问题的解决

    Linux服务器安装Docker,启动失败问题的解决

    这篇文章主要介绍了Linux服务器安装Docker,启动失败问题的解决方案,具有很好的参考价值,希望对大家有所帮助。
    2023-04-04
  • Docker 清理的常用方法及问题

    Docker 清理的常用方法及问题

    这篇文章主要介绍了Docker 清理的常用方法及问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Docker 最常用的镜像命令和容器命令详解

    Docker 最常用的镜像命令和容器命令详解

    这篇文章主要介绍了Docker 最常用的镜像命令和容器命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 什么是Docker? Docker入门教程

    什么是Docker? Docker入门教程

    本文主要涉及Docker的基础知识:Docker的概述、docker容器以及如何安装使用Docker。希望大家能够喜欢
    2017-03-03
  • docker部署mysql 实现远程连接的示例代码

    docker部署mysql 实现远程连接的示例代码

    这篇文章主要介绍了docker部署mysql 实现远程连接的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • docker volumes 文件映射方式

    docker volumes 文件映射方式

    这篇文章主要介绍了docker volumes 文件映射的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论