Linux 主从配置
在现代 IT 基础设施中,数据库的主从复制配置是一项至关重要的技术,通过主从复制,可以提高数据的安全性、可靠性和读取性能,本文将详细介绍如何在 Linux 环境下实现 MySQL 数据库的主从配置。
一、什么是主从复制?
主从复制(Master-Slave Replication)是指将数据从一个主数据库(Master)复制到一个或多个从数据库(Slave)的过程,这种机制不仅有助于提高系统的读取性能,还能在主数据库发生故障时提供数据备份。
二、主从复制的原理
1、主库操作记录:主库将所有数据变更记录到二进制日志(Binary Log)中。
2、从库读取日志:从库通过 I/O 线程读取主库的二进制日志,并写入自己的中继日志(Relay Log)。
3、SQL 线程执行:从库的 SQL 线程从中继日志中读取事件并在本地执行,从而实现数据的同步。
三、环境准备
假设我们已经有两台 Linux 服务器:
主库服务器 IP:192.168.1.100
从库服务器 IP:192.168.1.101
四、安装 MySQL
首先需要在两台服务器上分别安装 MySQL,这里以 CentOS 7 为例。
1. 更新系统包
sudo yum update -y
2. 下载并安装 MySQL
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm sudo yum install mysql-community-server -y
3. 启动并设置 MySQL 服务
sudo systemctl start mysqld sudo systemctl enable mysqld
4. 查看临时密码
sudo grep 'temporary password' /var/log/mysqld.log
5. 登录 MySQL 并修改密码
mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword'; FLUSH PRIVILEGES; EXIT;
五、配置主库
1. 修改主库配置文件my.cnf
sudo vi /etc/my.cnf
添加以下内容:
[mysqld] log-bin=master-bin server-id=1
log-bin
:启用二进制日志。
server-id
:设置服务器 ID,主库设置为 1。
2. 重启 MySQL 服务
sudo systemctl restart mysqld
3. 创建用于复制的用户
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%' IDENTIFIED BY 'ReplicaPassword'; FLUSH PRIVILEGES;
4. 锁定主库表并导出数据
FLUSH TABLES WITH READ LOCK; mysqldump --all-databases --master-data > master_backup.sql UNLOCK TABLES;
六、配置从库
1. 修改从库配置文件my.cnf
sudo vi /etc/my.cnf
添加以下内容:
[mysqld] server-id=2 relay-log=slave-relay-bin
server-id
:设置服务器 ID,从库设置为 2。
relay-log
:启用中继日志。
2. 重启 MySQL 服务
sudo systemctl restart mysqld
3. 导入主库数据
mysql -uroot -p < master_backup.sql
4. 配置从库连接主库的信息
CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='replica_user', MASTER_PASSWORD='ReplicaPassword', MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS= 4;
> 注意:MASTER_LOG_FILE
和MASTER_LOG_POS
的值需要从主库获取,可以通过以下命令查看:
SHOW MASTER STATUS;
查找File
和Position
的值。
5. 启动从库的复制线程
START SLAVE;
6. 验证复制状态
SHOW SLAVE STATUS\G;
检查Slave_IO_Running
和Slave_SQL_Running
是否都显示为Yes
,如果出现错误,可以查看Last_IO_Error
和Last_SQL_Error
获取详细的错误信息。
七、常见问题及解决方案
Q1: 如何更改 MySQL 复制用户的认证插件?
A1: 如果遇到由于认证插件不同导致的问题,可以在创建用户时指定认证插件,或者修改现有用户的认证插件:
ALTER USER 'replica_user'@'%' IDENTIFIED BY 'ReplicaPassword' PASSWORD EXPIRE NEVER; ALTER USER 'replica_user'@'%' IDENTIFIED WITH mysql_native_password BY 'ReplicaPassword'; FLUSH PRIVILEGES;
确保主从库使用相同的认证插件。
Q2: 如何处理主从复制中的延迟问题?
A2: 如果发现从库存在延迟,可以考虑以下几点:
确保主从库之间的网络连接稳定且带宽充足。
优化主库上的事务,避免长时间运行的大型事务。
检查从库的硬件资源,确保有足够的 CPU 和内存处理复制任务。
如果可能,调整从库的配置参数,如innodb_flush_log_at_trx_commit
,以减少磁盘 I/O 的影响,但是要注意这些调整可能会影响数据的持久性。
以上内容就是解答有关“linux主从配置”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。