QQ扫一扫联系
在大规模的应用中,数据的高可用性和冗余备份是至关重要的。MySQL多主一从(Master-Master Replication)是一种常见的数据库高可用性架构,它可以确保数据库的可用性并提供冗余备份。本文将介绍在CentOS 7上如何配置MySQL多主一从复制。
首先,确保您的CentOS 7服务器上已经安装了MySQL数据库。如果尚未安装,可以使用以下命令安装:
sudo yum install mysql-server
然后,启动MySQL并设置其随系统启动:
sudo systemctl start mysqld
sudo systemctl enable mysqld
在两个主服务器上(Master 1和Master 2),打开MySQL配置文件以允许主复制:
sudo nano /etc/my.cnf
添加以下配置:
server-id=1
log-bin=mysql-bin
binlog-ignore-db=mysql
binlog-ignore-db=test
replicate-ignore-db=mysql
replicate-ignore-db=test
auto-increment-increment = 2
auto-increment-offset = 1
在第二个主服务器上,配置与主服务器1类似,但server-id
设置为2。确保auto-increment-offset
与主服务器1不同。
保存配置文件并重新启动MySQL:
sudo systemctl restart mysqld
为了使从服务器能够连接到主服务器,您需要在主服务器上创建一个复制用户并授予相应的权限。
登录到MySQL:
mysql -u root -p
然后,执行以下SQL命令以创建复制用户。请将your_replication_user
和your_password
替换为您选择的用户名和密码。
CREATE USER 'your_replication_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'your_replication_user'@'%';
FLUSH PRIVILEGES;
在从服务器上,打开MySQL配置文件并添加以下配置。将server-id
设置为3(确保不与主服务器的server-id
冲突):
sudo nano /etc/my.cnf
server-id=3
log-bin=mysql-bin
binlog-ignore-db=mysql
binlog-ignore-db=test
replicate-ignore-db=mysql
replicate-ignore-db=test
auto-increment-increment = 2
auto-increment-offset = 2
保存并关闭配置文件。然后,重启MySQL:
sudo systemctl restart mysqld
在从服务器上,执行以下SQL命令以启动复制。请将master1_ip
和master2_ip
替换为您的两个主服务器的IP地址。
CHANGE MASTER TO MASTER_HOST='master1_ip', MASTER_PORT=3306, MASTER_USER='your_replication_user', MASTER_PASSWORD='your_password', MASTER_AUTO_POSITION=1;
START SLAVE;
然后,连接到其中一个主服务器并创建一些测试数据。您将会发现这些数据在从服务器上也同步了。
要检查复制状态,请在从服务器上执行以下命令:
SHOW SLAVE STATUS\G
确保Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
,这表示复制正在运行。
通过按照以上步骤配置多主一从复制,您可以在CentOS 7上实现MySQL数据库的高可用性和冗余备份。这种配置允许数据在多个主服务器之间同步,提供了一种可靠的数据库解决方案,以确保系统的稳定性和数据的完整性。