广告
返回顶部
首页 > 资讯 > 数据库 >docker实现mysql主从复制的示例代码
  • 587
分享到

docker实现mysql主从复制的示例代码

2024-04-02 19:04:59 587人浏览 八月长安
摘要

目录一、概述1、原理2、实现三、创建Slave实例四、主从配置总结:五、参考一、概述 1、原理 master服务器将数据的改变记录二进制binlog日志,当master上的

一、概述

1、原理

  • master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中;
  • slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件
  • 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动sql线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

主从流程图

2、实现

主库:192.168.3.13:3310从库:192.168.3.14:3310二、创建master主库进入服务器192.168.3.13

1、安装镜像


Docker pull Mysql:8.0.26

2、新建目录


mkdir -p /home/apps/mysql-master/{config,log,data}

3、创建并启动


docker run -d --name mysql-master \
--restart=always \
--privileged=true \
-p 3310:3306 \
-v /home/apps/mysql-master/config:/etc/mysql/conf.d \
-v /home/apps/mysql-master/log:/var/log/mysql \
-v /home/apps/mysql-master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWord=123456 \
mysql:8.0.26

4、新增/修改master基本配置


vim /home/apps/mysql-master/config/my.cnf

添加以下内容


[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

三、创建Slave实例

进入服务器192.168.3.14

1、同上面操作一样


# 创建目录
mkdir -p /home/apps/mysql-slave-01/{config,log,data}

# 启动容器
docker run -d --name mysql-slave-01 \
--restart=always \
--privileged=true \
-p 3310:3306 \
-v /home/apps/mysql-slave-01/config:/etc/mysql/conf.d \
-v /home/apps/mysql-slave-01/log:/var/log/mysql \
-v /home/apps/mysql-slave-01/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.26


# 修改Slave基本配置
vim /home/apps/mysql-slave-01/config/my.cnf

# 添加以下内容
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

四、主从配置

1、添加master配置


vim /home/apps/mysql-master/config/my.cnf
server_id=1

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

# 需要同步的数据库
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test

# 需要忽略的数据库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=infORMation_schema
replicate-ignore-db=performance_schema

2、重启容器


docker restart mysql-master

3、添加Slave配置


vim /home/apps/mysql-slave-01/config/my.cnf

server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

4、重启容器


docker restart mysql-slave-01

5、master添加帐号,用来同步的用户


# 进入容器
docker exec -it mysql-master /bin/bash

# 进入主库mysql数据库
mysql -u root -p

# 授权root可以远程访问( 主从无关,为了方便我们远程连接mysql)

# 授权远程
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新
flush privileges;


# 创建backup用户

# 应先创建新用户
create user 'backup'@'%' identified by '123456';

# 执行授权
grant all privileges on *.* to 'backup'@'%';

# 刷新
flush privileges;

# 授权远程
ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新
flush privileges;

# 查看主库状态
show master status;

6、在从库里设置主库连接


# 进入容器
docker exec -it mysql-slave-01 /bin/bash

# 进入主库mysql数据库
mysql -u root -p

change master to master_host='192.168.3.13',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3310;

7、启动从库同步

先将主库的数据复制一份到从库,包含表结构及数据

将主库binlog清除一下,这样它的位置就从0开始了


purge master logs to'mysql-bin.000001';

开启同步


# 开始同步
start slave;

# 停止同步
# stop slave;

# 查看同步状态
show slave status\G;

8、错误排查

如果无法实现主从同步,可以通过以下排查

总结:

主从数据库在自己配置文件中声明需要同步哪个数据库,忽略哪个数据库等信息。并且server-id不能一样主库授权某个账号密码来同步自己的数据从库使用这个账号密码连接主库来同步数据

五、参考

https://www.cnblogs.com/heian99/p/12104189.html

Https://blog.csdn.net/lilygg/article/details/98187015

binlog清除:https://www.cnblogs.com/kiko2014551511/p/11532426.html

到此这篇关于docker实现mysql主从复制的示例代码的文章就介绍到这了,更多相关docker mysql主从复制内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: docker实现mysql主从复制的示例代码

本文链接: https://www.lsjlt.com/news/134062.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • docker实现mysql主从复制的示例代码
    目录一、概述1、原理2、实现三、创建Slave实例四、主从配置总结:五、参考一、概述 1、原理 master服务器将数据的改变记录二进制binlog日志,当master上的...
    99+
    2022-11-12
  • Docker-Compose实现Mysql主从的示例代码
    目录1. 简介2. 部署流程3. master节点3.1 安装mysql4. slave节点5. 验证6. 可能遇到的问题7. 同步部分数据库实例或表1. 简介 通过使用docker...
    99+
    2022-11-13
  • docker实现MySQL主从双备的示例代码
    目录环境配置MySQL基础知识搭建主MySQL搭建从MySQL配置主从复制拓展环境配置 本地操作系统:Win10虚拟机的操作系统:CentOS Stream 8已安装docker,可...
    99+
    2022-11-13
  • Docker实战之MySQL主从复制
    前言 曾几何时,看着高大上的架构和各位前辈高超的炫技,有没有怦然心动,也想一窥究竟?每当面试的时候,拿着单应用的架构,吹着分库分表的牛X,有没有心里慌的一批? 其实很多时候,我们所缺少的只是对高大上的技术的演练。没有相关的业务需求...
    99+
    2016-09-20
    Docker实战之MySQL主从复制
  • docker下MySQL的主从复制
    MySql的主从复制 sudo docker pull MySQL:5.7 拉取MySQL的镜像文件(版本号为 5.7) sudo docker run -p 3339:3306 --name master -e MYSQL_ROOT_PA...
    99+
    2016-02-20
    docker下MySQL的主从复制
  • 实战演示MySQL 5.7.17实现主从复制
    下文给大家带来有关实战演示MySQL 5.7.17实现主从复制内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完实战演示MySQL 5.7.17实现主从复制你一定会...
    99+
    2022-10-18
  • mysql实现主从复制
    Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 Master)复制到另一个 ...
    99+
    2022-10-18
  • docker compose部署主从复制的实现
    目录配置解析服务搭建目录结构Compose File实例配置启动服务测试受限于 Redis 单点性能,加上我们对数据天生就有的备份的需求,因此 Redis 提供了主从复制的服务。 本...
    99+
    2022-11-12
  • Docker搭建MySQL5.7主从复制的实现
    目录1、新建mysql-master主服务器容器实例33072、新建mysql-master主服务器配置文件my.cnf3 重启master实例4 进入mysql-master容器5 master容器实例内创建数据同步用...
    99+
    2022-06-22
    DockerMySQL主从复制 Docker搭建MySQL主从
  • MySQL 8.0主从复制模型的示例分析
    这篇文章给大家分享的是有关MySQL 8.0主从复制模型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、MySQL主从复制模型一切都要从MySQL的主从复制模型开始说...
    99+
    2022-10-18
  • Docker上部署mysql8主从复制的实现
    目录环境准备简易版本安装设置密码配置 MySQL 主从复制创建 bridge 网络并指定 IP 区间创建数据和配置存放目录准备配置文件启动数据库远程访问配置(主从)主库创建复制用户从...
    99+
    2022-11-13
    Docker部署mysql8主从复制 Docker mysql8主从复制
  • Redis整合MySQL主从集群的示例代码
    目录1、用Docker搭建MySQL主从集群1.1 拉取mysql镜像1.2 创建配置文件夹1.3 编写主服务器的配置文件信息1.4 启动mysql主服务器的容器1.5 观察主服务器...
    99+
    2022-11-12
  • Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】
    Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】 一、Docker常规软件安装1.1 docker 安装 tomcat(默认最新版)1.2 docker 指定安装 ...
    99+
    2023-09-05
    运维 mysql 主从复制 redis集群3主3从 redis集群扩缩容案例 容器 云原生 虚拟化技术 mysql redis 原力计划
  • mysql主从复制的实现步骤
    目录mysql主从复制mysql主从复制的方式mysql主从复制的原理mysql的主从配置的具体实现方式1、 Master配置 2、 Slave配置 mysql主从复制 本来是在...
    99+
    2022-11-12
  • mysql实现主从复制的步骤
    本文主要给大家介绍mysql实现主从复制的步骤,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql实现主从复制的步骤吧。mysql主从原理:1)...
    99+
    2022-10-18
  • MySQL主从复制的实现方法
    这篇文章给大家分享的是有关MySQL主从复制的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。          &nbs...
    99+
    2022-10-18
  • 使用Docker怎么实现Redis主从复制
    今天就跟大家聊聊有关使用Docker怎么实现Redis主从复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。安装docker的命令如下所示curl -sSL ht...
    99+
    2023-06-14
  • 如何搭建基于Docker的MySQL主从复制
    下文主要给大家带来如何搭建基于Docker的MySQL主从复制,希望这些内容能够带给大家实际用处,这也是我编辑如何搭建基于Docker的MySQL主从复制这篇文章的主要目的。好了,废话不多说,大家直接看下文...
    99+
    2022-10-18
  • Redis中主从复制的示例分析
    这篇文章给大家分享的是有关Redis中主从复制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。面临问题 机器故障。我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数...
    99+
    2023-06-15
  • MySQL5.7.18主从复制搭建一主一从的示例分析
    这篇文章主要介绍了MySQL5.7.18主从复制搭建一主一从的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、复制原理主服务器将更...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作