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双主双从架构,以实现高可用性和负载均衡。在实际部署时,还需要根据具体的业务需求和环境进行调整和优化。
编号 |
角色 |
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 服务,检查端口号是否开启 或关闭防火墙。
参考文章
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
- # 在作为从数据库的时候,有写入