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

 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
# 在作为从数据库的时候,有写入