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 主从设置的配置,如有疑问,随时提问!