MySQL 主从复制

MySQL 主从复制(Master-Slave Replication)是一种常用的数据库高可用性和扩展性解决方案。主从复制可以将一个数据库的更改复制到另一个数据库,实现数据的冗余备份,提高读写性能。以下是 MySQL 主从复制的基本概念和配置步骤:

基本概念

  • 主库(Master):负责处理所有的写操作(INSERT、UPDATE、DELETE),并记录所有更改的二进制日志(Binary Log)。
  • 从库(Slave):从主库获取二进制日志,并重放日志中的更改,从而保持与主库数据的一致性。可以处理读操作,减轻主库的压力。

配置步骤

1. 主库配置

编辑 MySQL 配置文件(通常是 /etc/mysql/my.cnf/etc/my.cnf),添加以下配置:
[mysqld]
log-bin=mysql-bin
server-id=1
重启 MySQL 服务:
sudo systemctl restart mysql
创建复制用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

锁定主库并记录位置

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记录 File 和 Position 信息,这些信息将用于从库的配置。

从库配置完成后, 解锁:
UNLOCK TABLES;

2. 从库配置

编辑 MySQL 配置文件(通常是 /etc/mysql/my.cnf/etc/my.cnf),添加以下配置:
[mysqld]
server-id=2
relay-log=relay-log
重启 MySQL 服务:
sudo systemctl restart mysql

在从库中执行以下命令,替换 <master_host><repl_password><log_file><log_pos> 为相应的值:

CHANGE MASTER TO
    MASTER_HOST='<master_host>',
    MASTER_USER='repl',
    MASTER_PASSWORD='<repl_password>',
    MASTER_LOG_FILE='<log_file>',
    MASTER_LOG_POS=<log_pos>;
启动从库复制:
START SLAVE;
验证复制状态:
SHOW SLAVE STATUS\G;

确认 Slave_IO_RunningSlave_SQL_Running 都是 Yes

常见问题

1, 主从库数据不一致:可以使用 pt-table-checksum 和 pt-table-sync 工具来检查和修复数据不一致的问题。
2. 网络延迟导致复制延迟:可以调整网络设置或使用更高效的硬件。
3. 主库压力过大:可以添加多个从库,并使用负载均衡器分发读请求。

通过以上步骤,你可以配置一个基本的 MySQL 主从复制系统,实现数据的高可用性和读写分离。如果有更多的需求或疑问,可以根据具体情况进行调整和优化。


其他说明

relay-log=relay-log

relay-log 是 MySQL 从库配置中的一个参数,用于指定中继日志(relay log)的文件名和路径。在主从复制中,从库需要从主库获取二进制日志(binary log),然后将其存储在本地的中继日志中,并通过 SQL 线程重放这些日志来保持与主库的数据一致性。

中继日志的作用
1. 存储主库的二进制日志:从库从主库获取的二进制日志被存储在中继日志文件中。
2. 重放日志以保持数据一致性:SQL 线程读取中继日志,并将其中的更改应用到从库中,以保持与主库的数据同步。
relay-log 参数的配置

relay-log 参数用于指定中继日志文件的前缀和位置。你可以在 MySQL 的配置文件(通常是 /etc/mysql/my.cnf 或 /etc/my.cnf)中配置它。例如:

[mysqld]
server-id=2
relay-log=/var/lib/mysql/relay-log

在上面的配置中,中继日志文件将存储在 /var/lib/mysql/ 目录下,文件名以 relay-log 为前缀。

相关参数

除了 relay-log 参数,还有一些相关的参数可以配置中继日志的行为:

  1. relay-log-index:指定中继日志索引文件的路径和名称。索引文件包含所有中继日志文件的列表。
relay-log-index=/var/lib/mysql/relay-log.index
  1. relay-log-info-file:指定存储从库复制状态信息的文件。默认是 relay-log.info 文件。
relay-log-info-file=/var/lib/mysql/relay-log.info

relay-log-purge:指定是否自动清理已应用的中继日志文件。默认值是 ON。

relay-log-purge=ON
示例配置

下面是一个完整的从库配置示例,包括了中继日志的相关配置:

[mysqld]
server-id=2
relay-log=/var/lib/mysql/relay-log
relay-log-index=/var/lib/mysql/relay-log.index
relay-log-info-file=/var/lib/mysql/relay-log.info
relay-log-purge=ON
总结

relay-log 参数用于指定从库中继日志的存储位置和文件名,通过配置中继日志,可以确保从库能够正确地接收和应用来自主库的二进制日志,从而保持数据的一致性。配置中继日志和相关参数可以帮助你更好地管理和监控主从复制过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值