MySQL 主从设置,实现从库只读

在现代的数据库架构中,主从复制是一种常见的配置,能够提高系统的可用性和性能。在本篇文章中,我们将详细讨论如何配置 MySQL 主从数据库,并使从库保持只读状态。

流程概述

以下是配置 MySQL 主从复制以及设置只读状态的主要步骤:

步骤 操作
1 在主库上配置并启动复制
2 在从库上配置复制设置
3 启动从库并开始复制
4 设置从库只读

步骤详细说明

1. 在主库上配置并启动复制

在开始之前,确保你有两台机器(或容器),一台作为主库(master),另一台作为从库(slave)。你需要在主库上进行以下操作:

-- 1. 登录到主库
mysql -u root -p

-- 2. 创建用于复制的用户账户
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';  -- 创建复制用户
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';  -- 授予复制权限

-- 3. 查看主库的当前状态
SHOW MASTER STATUS;  -- 确保你记下了File和Position的值

2. 在从库上配置复制设置

接下来,我们需要在从库上配置复制。打开从库的 MySQL 客户端并执行以下命令:

-- 1. 登录到从库
mysql -u root -p

-- 2. 设置主库信息(使用上面记录的File和Position)
CHANGE MASTER TO 
    MASTER_HOST='主库IP',            -- 主库的IP地址
    MASTER_USER='replica_user',      -- 在主库上设置的复制用户
    MASTER_PASSWORD='your_password',  -- 复制用户的密码
    MASTER_LOG_FILE='记录的File',     -- 主库SHOW MASTER STATUS获取的File
    MASTER_LOG_POS=记录的Position;    -- 主库SHOW MASTER STATUS获取的Position

-- 3. 启动复制
START SLAVE;  -- 启动从库的复制

3. 启动从库并开始复制

保证从库配置正确后,你可以使用以下命令来确认从库的状态:

SHOW SLAVE STATUS\G;  -- 查看从库的状态

你需要关注以下两个字段:

  • Slave_IO_Running: 该字段应为 Yes,表示 I/O 线程在运行。
  • Slave_SQL_Running: 该字段也应为 Yes,表示 SQL 线程在运行。

4. 设置从库只读

为了确保从库只能做读取操作,而不接受任何写入,我们需要在从库上进行以下设置:

-- 1. 设置从库为只读模式
SET GLOBAL read_only = ON;  -- 设置全局只读

此外,你还可以在 MySQL 配置文件(通常位于/etc/my.cnf/etc/mysql/my.cnf)中添加以下行,以使设置在重启后持久:

[mysqld]
read_only=1  -- 将从库配置为只读

关系图

我们来看看 MySQL 的主从结构关系图:

erDiagram
    MASTER {
        string id
        string name
    }
    SLAVE {
        string id
        string name
    }
    MASTER ||--o{ SLAVE : replicates

结论

通过上述步骤,我们成功配置了 MySQL 主从复制,并将从库设置为只读。只读模式将有效防止从库数据的修改,保护了数据的完整性,并提高了系统的可用性。

你可以根据具体的需求随时调整这项设置。在实际的生产环境中,确保定期备份数据库,并监控主从同步的状态,以保证系统的稳定运行。希望这篇文章能够帮助你顺利完成 MySQL 主从设置的配置,如有疑问,随时提问!