MySQL 主主搭建

介绍

MySQL是一种开源的关系型数据库管理系统,广泛应用于各种规模的应用程序中。在一些高可用性的场景中,我们通常需要将数据库设置为主主复制模式,以确保数据的高可靠性和可用性。本文将介绍如何在MySQL中搭建主主复制模式,并附带代码示例。

主主复制模式

主主复制模式是MySQL复制的一种形式,其中两个或多个MySQL数据库服务器相互复制彼此的数据。在主主复制模式中,每个数据库都可以处理读和写请求,并且可以自动将更改传播到其他数据库中,从而实现了高可用性和数据冗余。

主主复制模式的工作原理如下:

  1. 在每个MySQL服务器上配置复制参数,指定对方为复制的“从服务器”。
  2. 当一个服务器上的数据发生更改时,该更改将被自动复制到其他服务器上。
  3. 当一个服务器无法连接时,其他服务器可以继续处理请求,确保了应用程序的高可用性。

使用主主复制模式,即使其中一个服务器发生故障,其他服务器仍然可以继续处理请求,并且数据不会丢失。

环境准备

在开始搭建主主复制模式之前,我们需要准备以下环境:

  1. 安装MySQL数据库服务器。
  2. 确保网络通信正常,各个服务器之间可以相互访问。
  3. 确保每个服务器可以访问其他服务器的MySQL端口(默认为3306)。

配置主主复制

步骤一:创建复制账户

首先,在每个服务器上创建用于复制的账户。这个账户将用于复制数据到其他服务器。假设我们要在两台服务器上搭建主主复制,分别为Server A和Server B。

在Server A上执行如下SQL语句创建复制账户:

CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

在Server B上执行相同的SQL语句创建复制账户。

步骤二:配置主服务器

在Server A上执行以下步骤配置主服务器:

  1. 打开MySQL配置文件,一般为my.cnf
  2. 修改server-id参数,设置为一个唯一的值,例如1。
  3. 修改log_bin参数,启用二进制日志。将其设置为一个唯一的文件名,例如mysql-bin.
  4. 重启MySQL服务使配置生效。
[mysqld]
server-id = 1
log-bin = mysql-bin

步骤三:配置从服务器

在Server B上执行以下步骤配置从服务器:

  1. 打开MySQL配置文件,一般为my.cnf
  2. 修改server-id参数,设置为一个唯一的值,例如2。
  3. 修改log_bin参数,启用二进制日志。将其设置为一个唯一的文件名,例如mysql-bin.
  4. 重启MySQL服务使配置生效。
[mysqld]
server-id = 2
log-bin = mysql-bin

步骤四:配置主主复制

在Server A上执行以下步骤配置主主复制:

  1. 连接到Server A的MySQL服务器。
mysql -u root -p
  1. 执行以下SQL语句,设置Server B为Server A的从服务器。
CHANGE MASTER TO MASTER_HOST='Server B的IP地址', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='当前二进制日志文件', MASTER_LOG_POS=当前二进制日志位置;
  1. 启动主主复制。
START SLAVE;
  1. 重复以上步骤,在Server B上将Server A设置为从服务器。

步骤五:验证复制状态

连接到任一MySQL服务器,执行以下命令查看复制状态:

SHOW SLAVE STATUS\G

如果输出中的Slave_IO_Running和`