热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dockerhubmysql主从_详解用Docker构建MySQL主从环境

前言本篇文章记录我使用docker-compose以及dockerfile来构建基于binlog的MySQL主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以

前言

本篇文章记录我使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 MySQL 主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以搭建好一个基础的 MySQL 主从环境。

介绍

ec9bc04de61c1ea4a7bbb9125eefe79a.png

MySQL 主从同步分为 3 个步骤:

master 节点将数据的更新记录写到 binary log 中。

slave 节点开启 IO 线程连接 master 节点,请求获取指定 binary log 文件的指定位置之后的日志。

master 节点的 binary log dump 线程将指定的 binary log 信息推送给 slave 节点。

slave 节点的 IO 线程接收到消息后,将日志内容写入 relay log 文件。

slave 节点的 SQL 线程检测到 relay log 新增了内容,马上解析 relay log 文件生成相应的 SQL 语句,并将这些 SQL 语句重放到数据库,保证主从数据一致性。

配置

创建目录结构

首先先搞定目录结构,我的目录结构如下,如果想按照自己的想法来组建目录,在下文中的 docker-compose.yaml 文件与 Dockerfile 文件要注意修改文件路径。

b472807a314901ce24ec49d20eae1f0a.png

配置 docker-compose 模版文件

version: "3"

services:

mysql-master:

build:

context: ./

dockerfile: mysql/master/Dockerfile

container_name: mysql-master

volumes:

- ./mysql/master/data:/var/lib/mysql

restart: always

ports:

- 3305:3306

links:

- mysql-slave

mysql-slave:

build:

context: ./

dockerfile: mysql/slave/Dockerfile

container_name: mysql-slave

volumes:

- ./mysql/slave/data:/var/lib/mysql

restart: always

ports:

- 3306:3306

配置 master 节点的 cluster.cnf 文件以及 Dockerfile 文件

[mysqld]

server_id=100

binlog-ignore-db=mysql

log-bin=replicas-mysql-bin

binlog_cache_size=1M

binlog_format=mixed

slave_skip_errors=1062

# 我的 MySQL 为 8.x,需要如下配置

default_authentication_plugin=mysql_native_password

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

FROM mysql:latest

ADD ./mysql/master/cluster.cnf /etc/mysql/conf.d/cluster.cnf

ENV MYSQL_ROOT_PASSWORD=password

配置 slave 节点的 cluster.cnf 文件以及 Dockerfile 文件

[mysqld]

server_id=101

binlog-ignore-db=mysql

binlog_cache_size=1M

binlog_format=mixed

slave_skip_errors=1062

relay_log=replicas-mysql-relay-bin

log_slave_updates=1

read_only=1

# 我的 MySQL 为 8.x,需要如下配置

default_authentication_plugin=mysql_native_password

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

FROM mysql:latest

ADD ./mysql/slave/cluster.cnf /etc/mysql/conf.d/cluster.cnf

ENV MYSQL_ROOT_PASSWORD=password

创建容器

docker-compose up -d mysql-master mysql-slave

运行上述命令进行容器创建,如果构建时间过长,可以考虑更换镜像源,例如下面几个国内优质镜像源:

网易: http://hub-mirror.c.163.com

阿里云&#xff1a; http://< ;你的ID>.mirror.aliyuncs.com

中国科学技术大学&#xff1a; http://docker.mirrors.ustc.ed...

构建完成之后&#xff0c;使用 docker ps 命令查看一下容器是否正常运行&#xff0c;出现如下情形则可以认为已经构建成功。

bbaa2d517ac34d438b214a6506c5a9dd.png

配置 slave 节点

87635c408a93bca00c1d5c499e0e757c.png

首先使用 docker 命令进入到 mysql-master 容器中&#xff0c;再登录到 mysql 输入 show master status 命令获取主库状态&#xff0c;这里我们要关心两个参数 File 以及 Position &#xff0c;之后配置从库会用到这两个参数。

d524a0edb0909a1b336eafe25eeb7d16.png

接下来使用 docker 命令进入 mysql-slave 容器&#xff0c;再登录到 mysql 输入以下语句进行与 mysql-master 连接。

CHANGE MASTER TO

MASTER_HOST&#61;&#39;mysql-master&#39;,

MASTER_USER&#61;&#39;root&#39;,

MASTER_PASSWORD&#61;你设置的密码,

MASTER_LOG_FILE&#61;上一步得到的 File 参数,

MASTER_LOG_POS&#61;上一步得到的 Position 参数;

输入完成后再键入 start slave 命令启动 slave 服务。启动之后输入 show slave status \G 命令查看 slave 节点状态&#xff0c;出现如下情形可认为配置成功。

97d555e8c870db011ea730ee41e9f35d.png

测试主从节点同步状态

0521ea4c94c01f5db7d83e8a1c433dbd.png

登录到 mysql-master 节点&#xff0c;创建一个全新的库&#xff0c;创建成功之后&#xff0c;切换到 mysql-slave 节点&#xff0c;输入 show databases; 命令&#xff0c;查看是否成功同步&#xff0c;出现如下情形则配置成功。其他操作可以自己尝试&#xff0c;这里不再做演示。

d88d939a1deb99358529c9e85f48f702.png

总结

这是我自己尝试搭建 MySQL 主从架构所记录的步骤&#xff0c;到此这篇关于详解用Docker构建MySQL主从环境的文章就介绍到这了,更多相关Docker构建MySQL主从内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家&#xff01;



推荐阅读
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 如何正确配置Log4j以优化日志记录效果? ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
author-avatar
kevin2502896577
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有