首页 > 数据库 >Docker部署MySQL双主双从,主主互备

Docker部署MySQL双主双从,主主互备

时间:2024-11-03 21:47:19浏览次数:6  
标签:binlog 主主互备 双主双 复制 mysql 服务器 Docker

 1. 双主双从 主主互备

MySQL的双主双从(主主互备)架构是一种高可用性和负载均衡的解决方案,它由两台主数据库服务器和两台从数据库服务器组成。每台主服务器同时充当另一台主服务器的从服务器,形成一个互为主从的关系。这种架构可以提供以下优势:

  • 高可用性:任何一台主服务器故障,另一台主服务器可以立即接管其工作,确保系统持续运行。
  • 负载均衡:读操作可以分散到多台从服务器上,减轻主服务器的负担,提高整体性能。
  • 数据冗余:数据在多台服务器上备份,降低了数据丢失的风险。
  • 灵活扩展:可以根据需求增加从服务器,进一步提升系统的处理能力。

在配置MySQL双主双从架构时,需要考虑以下几个关键步骤:

  • 环境准备:确保所有服务器上安装相同版本的MySQL,并关闭防火墙以允许服务器之间的通信。

  • 配置主服务器:在每台主服务器上配置my.cnf文件,设置唯一的server-id,启用二进制日志(log-bin),并设置binlog-formatmixedROW以支持事务完整性。同时,需要配置自增字段的起始值和递增量,以避免主键冲突。

  • 配置从服务器:在从服务器上配置my.cnf文件,设置唯一的server-id,并启用中继日志(relay-log)。

  • 创建复制用户并授权:在每台主服务器上创建用于复制的用户,并授权该用户在所有数据库上进行复制操作。

  • 配置主从复制:在每台从服务器上使用CHANGE MASTER TO命令配置主服务器的信息,包括主服务器的地址、复制用户的用户名和密码、二进制日志文件名和位置。

  • 启动复制并监控状态:在从服务器上启动复制过程,并定期使用SHOW SLAVE STATUS\G命令监控复制状态,确保复制正常进行。

  • 处理自增ID冲突:在双主架构中,需要特别注意自增ID的冲突问题。可以通过设置不同的初始值和增长步长来避免冲突,或者使用全局事务ID(GTID)来简化冲突处理。

通过搭建一个稳定的MySQL双主双从架构,以实现高可用性和负载均衡。在实际部署时,还需要根据具体的业务需求和环境进行调整和优化。

2. 准备工作

编号

角色

IP

端口

1

masterMysqlOne

192.168.0.15

3507

2

SlaveMysql1

192.168.0.15

3508

3

masterMysqlTwo 192.168.0.15

3509

4

SlaveMysql2

192.168.0.15

3505

实际开发中,双主机、双从机配置完成一定要重启 mysql 服务,检查端口号是否开启 或关闭防火墙。

参考文章

Docker安装Mysql数据库-CSDN博客文章浏览阅读761次,点赞17次,收藏21次。Docker 镜像是用于创建容器的蓝图,包含了运行应用的所有依赖,如代码、运行时、库和配置文件。它们是轻量级、可移植的,确保应用在任何环境中都能一致运行。每个镜像由多个层组成,每层对应Dockerfile中的一个指令,这种分层帮助实现资源共享,优化存储和传输效率。Docker 镜像可以通过docker build创建,也可以从公共或私有仓库如Docker Hub拉取。使用docker pull命令获取镜像,Docker部署mysql数据库,主从复制,双主双从,主主互备,实现数据同步复制https://blog.csdn.net/ddf128/article/details/143084252

Docker部署MySQL主从复制-CSDN博客文章浏览阅读1.4k次,点赞40次,收藏30次。Docker 镜像是用于创建容器的蓝图,包含了运行应用的所有依赖,如代码、运行时、库和配置文件。它们是轻量级、可移植的,确保应用在任何环境中都能一致运行。每个镜像由多个层组成,每层对应Dockerfile中的一个指令,这种分层帮助实现资源共享,优化存储和传输效率。Docker 镜像可以通过docker build创建,也可以从公共或私有仓库如Docker Hub拉取。使用docker pull命令获取镜像,Docker部署mysql数据库,主从复制,双主双从,主主互备,实现数据同步复制https://blog.csdn.net/ddf128/article/details/143187363

3. 双主配置

3.1 部署masterMysqlOne

masterMysqlOne容器

docker run -p 3507:3306 --name masterMysqlOne -v /mysqldata/mysql-master1/log:/var/log/mysql -v /mysqldata/mysql-master1/data:/var/lib/mysql -v /mysqldata/mysql-master1/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7

修改配置文件

vi /mysqldata/mysql-master1/conf/my.cnf

配置内容

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=1
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=users
## 开启二进制日志功能
log-bin=mall-mysql-bin
#设置logbin格式
binlog_format=STATEMENT
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
# 在作为从数据库的时候,有写入

标签:binlog,主主互备,双主双,复制,mysql,服务器,Docker
From: https://blog.csdn.net/ddf128/article/details/143318625

相关文章

  • docker相关知识
    docker-compose自定义执行文件:docker-compose-fdocker-compose.rel.yamlup-d docker前期准备://给某个ubuntu添加docker权限,否则每次都需要去root权限下执行docker-compose命令sudogroupadddockersudogpasswd-aubuntudockersudosystemctlrestartdo......
  • Docker for the Virtualization Admin
    Dockerisoneofthemostsuccessfulopensourceprojectsinrecenthistory,andorganizationsofallsizesaredevelopingplansaroundhowtocontainerizetheirapplications.Thefirststepinthisjourneyis,ofcourse,tounderstandwhatcontainersare......
  • Docker仓库之Registry私有镜像仓库的搭建与使用
    本章将和大家分享Docker仓库之Registry私有镜像仓库的搭建与使用。废话不多说,下面我们直接进入主题。一、官方标配:Registry私有镜像仓库DockerHub作为Docker默认官方公共镜像仓库,如果想要自己搭建私有镜像仓库,官方也提供了Registry镜像,使得我们搭建私有仓库变得非常简单。所谓......
  • Docker | 创建私有库并了解将项目放入和拉取到私有库的流程
    搭建私有库并推送镜像DockerRegistry1.下载Dockerregistry镜像2.运行私有库Registry,相当于本地有个私有Dockerhub3.ubuntu增加ifconfig命令并生成新镜像⭐4.curl验证私服库上有什么镜像什么是curl?5.将新镜像修改符合私服规范的Tag6.修改配置文件使之支持http7.......
  • Docker和k8s核心概念(理解友好版)
    背景这是在HWL负责网校云业务线测试时,给同事分享的基础概念文档。目录:一.Docker核心概念二.Kubernetes是什么及架构三.Kubernetes核心概念四.Deployment部署Pod操作一、Docker核心概念 1、为什么是Docker虚拟机:基础设施(Infrastructure)。服务器,或者是云主机。主......
  • dockerfile 和 docker compose
    目录1.dockerfile和dockercompose区别 主要区别目的:格式:使用场景:2.Dockerfile2.1基本格式 2.2模块解析 2.3例子 3.dockercompose 3.1安装 3.2格式 3.3执行1.dockerfile和dockercompose区别 Dockerfile和DockerCompose是Docker生态系统中两个......
  • docker对nginx.conf进行修改后页面无变化或页面报错
    可能是因为没有重启nginx容器可以执行dockerrestartnginx重启nginx试试引入了其他的配置文件本人安装的是docker默认的nginx,自带了一个default.conf的配置文件,并且在nginx.conf中还引入了这个文件,后面我还对nginx.conf添加了一个server并且端口号都是80,在打印dockerl......
  • dockerfile中copy与run区别
    本文记录一个很简单的问题,记录该文章的原因是在调试过程中,老眼昏花,因为copy和run的原因,多排错一小时,特此记录。首先看看以下。 COPY:功能:COPY是用来将构建上下文(本地机器的文件系统)中的文件或目录复制到Docker镜像中的指定位置。它只是一个复制操作,不执行......
  • 【docker】—— 部署python项目
    使用docker部署python项目这里默认已经安装好docker并进行了相关配置,只演示使用docker打包并部署一个简单的python项目。更多docker基本操作参考:【docker】——docker常用操作下面是准备好的项目和程序:项目结构:项目:DOCKER_PYTHON_TESE文件:main.ipynb代码如下:#......