1. 双主双从 主主互备
MySQL的双主双从(主主互备)架构是一种高可用性和负载均衡的解决方案,它由两台主数据库服务器和两台从数据库服务器组成。每台主服务器同时充当另一台主服务器的从服务器,形成一个互为主从的关系。这种架构可以提供以下优势:
- 高可用性:任何一台主服务器故障,另一台主服务器可以立即接管其工作,确保系统持续运行。
- 负载均衡:读操作可以分散到多台从服务器上,减轻主服务器的负担,提高整体性能。
- 数据冗余:数据在多台服务器上备份,降低了数据丢失的风险。
- 灵活扩展:可以根据需求增加从服务器,进一步提升系统的处理能力。
在配置MySQL双主双从架构时,需要考虑以下几个关键步骤:
-
环境准备:确保所有服务器上安装相同版本的MySQL,并关闭防火墙以允许服务器之间的通信。
-
配置主服务器:在每台主服务器上配置
my.cnf
文件,设置唯一的server-id
,启用二进制日志(log-bin
),并设置binlog-format
为mixed
或ROW
以支持事务完整性。同时,需要配置自增字段的起始值和递增量,以避免主键冲突。 -
配置从服务器:在从服务器上配置
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
# 在作为从数据库的时候,有写入