MySQL 主从复制详解

MySQL 主从复制是一种非常常用的数据库架构方案,主要用于数据的高可用性和负载均衡。在这一架构中,一个数据库实例被设置为主数据库(Master),负责处理所有的写操作,而一个或多个从数据库(Slave)则从主数据库同步数据,以保证数据的一致性。接下来,我们将详细介绍MySQL主从复制的配置步骤和工作原理。

一、工作原理

在MySQL的主从复制模式中,主数据库负责所有写操作,然后将这些操作记录到二进制日志(Binary Log)中。从数据库会读取主数据库的二进制日志,将日志中的操作应用到自己的数据库中。整个过程可以分为以下几个步骤:

  1. 写入主数据库:应用程序向主数据库发送写请求(INSERT、UPDATE、DELETE等);
  2. 记录到二进制日志:主数据库处理请求后,将操作记录到二进制日志中;
  3. 复制进程:从数据库启动一个 I/O 线程连接到主数据库,读取二进制日志;
  4. 应用到从数据库:从数据库将从主数据库获取的操作应用到自己的数据库中。

这样的操作确保了从数据库与主数据库的数据同步。

二、主从复制的配置步骤

下面是如何配置MySQL主从复制的步骤:

1. 准备工作
  • 确保所有MySQL实例的版本一致。
  • 在主数据库上创建用于复制的用户。
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
2. 配置主数据库

在主数据库的配置文件(通常是my.cnfmy.ini)中添加以下内容:

[mysqld]
log-bin=mysql-bin
server-id=1

这里log-bin启用了二进制日志,server-id必须唯一。

之后,重启主数据库:

sudo service mysql restart
3. 获取主数据库状态

在主数据库上执行以下命令,以获取当前的二进制文件和位置:

SHOW MASTER STATUS;

注意到如下输出:

+-------------+----------+--------------+------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------+----------+--------------+------------------+
| mysql-bin.000001 |  123    |              |                  |
+-------------+----------+--------------+------------------+

记下FilePosition的值。

4. 配置从数据库

在从数据库的配置文件中设置以下内容:

[mysqld]
server-id=2

保证 server-id 在从数据库上也是唯一的。然后重启从数据库:

sudo service mysql restart
5. 连接从数据库到主数据库

在从数据库上执行以下命令,连接到主数据库,使用之前记录的File和Position:

CHANGE MASTER TO
  MASTER_HOST='主数据库IP',
  MASTER_USER='replica_user',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=123;
6. 启动从数据库复制

执行以下命令启动从数据库的复制进程:

START SLAVE;
7. 验证复制状态

可以通过以下命令检查从数据库的状态:

SHOW SLAVE STATUS\G;

确保 Slave_IO_RunningSlave_SQL_Running 的值都为 Yes,表示复制正常。

三、总结

MySQL主从复制通过将写操作分散到多个服务器,能够有效地提升应用系统的性能与可靠性。配置主从复制虽然看上去步骤较多,但通过以上步骤的详细说明和代码示例,相信开发者能在实际项目中顺利实现这一功能。需要注意的是,主从复制并不保证数据的强一致性,如果对数据一致性要求较高,可以考虑使用其他架构,比如主主复制或分库分表等方案。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部