MySQL 单机主从复制实现指南

在现代应用中,数据库的读写分离是提升性能的一种常见方法。在本教程中,我们将学习如何实现MySQL的单机主从复制。通过复制,可以将主数据库的数据同步到从数据库上,从而提高系统的可用性和扩展性。下面是整个流程的图示和步骤。

流程步骤表

步骤 描述
1 配置主数据库
2 创建复制用户
3 配置从数据库
4 启动复制
5 测试复制

关系图

erDiagram
    主数据库 ||--o{ 从数据库 : 复制
    主数据库 {
        string 数据库名称
        string 用户名
     }
    从数据库 {
        string 数据库名称
        string 用户名
     }

步骤详细说明

1. 配置主数据库

首先,我们需要配置主数据库,使其能够记录binlog(binary log)。

操作代码
-- 打开 MySQL 配置文件
sudo nano /etc/my.cnf

-- 在[mysqld]部分添加以下配置
[mysqld]
log-bin=mysql-bin
server-id=1
说明
  • log-bin=mysql-bin: 开启二进制日志,日志文件名为mysql-bin。
  • server-id=1: 设置服务器ID,主数据库的ID唯一。

2. 创建复制用户

接下来,我们需要在主数据库上创建一个供从数据库使用的复制用户。

操作代码
-- 登录到 MySQL
mysql -u root -p

-- 创建一个复制用户
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';

-- 授权复制权限
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
说明
  • CREATE USER: 创建用户。
  • GRANT REPLICATION SLAVE: 授权该用户进行复制操作。

3. 配置从数据库

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

操作代码
-- 打开 MySQL 配置文件
sudo nano /etc/my.cnf

-- 在[mysqld]部分添加以下配置
[mysqld]
server-id=2
说明
  • server-id=2: 设置从数据库的ID,确保不同于主数据库。

4. 启动复制

在从数据库上设置主数据库信息并启动复制。

操作代码
-- 登录到从数据库
mysql -u root -p

-- 指定主数据库信息
CHANGE MASTER TO
    MASTER_HOST='主数据库的IP地址',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='mysql-bin.000001',  -- 注意替换为实际的binlog文件名
    MASTER_LOG_POS=0;  -- 替换为实际的log position

-- 启动复制
START SLAVE;
说明
  • CHANGE MASTER TO: 配置主数据库连接信息。
  • START SLAVE: 启动从数据库的复制进程。

5. 测试复制

最后,检查复制是否成功。

操作代码
-- 登录到从数据库
mysql -u root -p

-- 查看复制状态
SHOW SLAVE STATUS\G;

-- 应该看到  "Slave_IO_Running: Yes" 和 "Slave_SQL_Running: Yes"
说明
  • SHOW SLAVE STATUS: 显示从数据库的复制状态,确认是否正常运行。

结尾

通过以上步骤,我们成功实现了MySQL的单机主从复制。在实际应用中,主从复制能显著提高系统的读性能和可用性。希望这篇文章对你理解和操作MySQL复制有所帮助!如有疑问,请随时提问。