实现 MySQL 主从复制

简介

MySQL 主从复制是一种常用的数据备份和读写分离方案,通过将数据从一个数据库实例(主库)复制到其他多个数据库实例(从库),可以实现数据的冗余备份、负载均衡和高可用性。

在本文中,我将介绍如何实现 MySQL 主从复制,并给出每一步的具体操作和相应的代码示例。

流程图

flowchart TD
    A[创建主从复制账户] --> B[配置主库]
    B --> C[配置从库]
    C --> D[启动主库的二进制日志]
    D --> E[获取主库的二进制日志位置]
    E --> F[在从库上设置主库的连接信息]
    F --> G[启动从库的复制进程]

步骤

步骤1:创建主从复制账户

在主库和从库上都需要创建一个用于主从复制的账户。这个账户将用于从库连接主库并获取数据。

代码示例:

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

步骤2:配置主库

在主库上进行配置,使其能够记录二进制日志并对外提供复制服务。

代码示例:

# 修改主配置文件(my.cnf)
[mysqld]
log-bin=mysql-bin  # 开启二进制日志
server-id=1        # 主库的唯一标识

步骤3:配置从库

在从库上进行配置,使其能够连接主库并获取数据。

代码示例:

# 修改从配置文件(my.cnf)
[mysqld]
server-id=2        # 从库的唯一标识

步骤4:启动主库的二进制日志

在主库上启动二进制日志,使其开始记录数据的更改。

代码示例:

FLUSH TABLES WITH READ LOCK;  -- 确保主库上的数据一致性
SHOW MASTER STATUS;           -- 获取当前二进制日志的文件名和位置
UNLOCK TABLES;                -- 解锁主库上的表

步骤5:获取主库的二进制日志位置

在主库上获取当前二进制日志文件的名称和位置,以便在从库上设置复制进程。

步骤6:在从库上设置主库的连接信息

将步骤5中获取到的主库的连接信息配置到从库上,以便从库能够连接主库并获取数据。

代码示例:

CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='master_log_file',
    MASTER_LOG_POS=master_log_pos;

步骤7:启动从库的复制进程

在从库上启动复制进程,使其连接主库并开始获取数据。

代码示例:

START SLAVE;

总结

通过以上步骤,我们成功地实现了 MySQL 主从复制。主库将记录数据的更改并提供复制服务,从库将连接主库并获取数据,从而实现数据的备份和读写分离。

希望本文对刚入行的小白能够有所帮助,让他能够理解和掌握 MySQL 主从复制的实现过程。如果有任何疑问或需要进一步的帮助,请随时向我提问。