说一下MySQL主从复制的原理?

MySQL 主从复制(Master-Slave Replication)是一种数据复制技术,用于在多个数据库服务器之间的数据同步 。在主从复制架构中,一个服务器被设置为主服务器(Master),充当数据源,其他服务器被设置为从服务器(Slave),用来复制主服务器的数据 。

说一下MySQL主从复制的原理?

文章插图
一、主从复制优点主从复制的主要优点有以下几个:
  • 高可用性:通过将主数据库的数据复制到一个或多个从数据库,可以在主数据库故障时快速切换到从数据库,以实现系统的高可用性和容错能力,从而保证系统的持续可用性 。
  • 提高整体性能和吞吐量:通过将读请求分散到多个从服务器上进行处理 , 从而减轻了主服务器的负载压力 , 提高数据库系统的整体性能和吞吐量 。主服务器主要负责写操作,而从服务器主要负责读操作,从而分担了主服务器的压力 。
  • 数据备份和恢复:通过主从同步,可以将主服务器上的数据异步复制到从服务器上,从而实现数据备份和灾难恢复的需求 。在应对意外数据丢失、灾难恢复或误操作时,可以使用从服务器作为数据的备份源来进行数据恢复 。
二、如何实现主从复制?1.配置并重启主服务器在主服务器的配置文件(my.cnf)中添加以下参数:
  • [mysqld] server-id = 1 # 设置服务器 ID,每个主服务器和从服务器都必须有唯一的 ID
  • log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志,记录数据修改操作
以上配置完成之后,重启 MySQL 服务器 , 因为重启了 MySQL 服务才能让配置生效 。
2.创建用于主从复制的用户登录到主服务器上 , 执行以下命令:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';-- 替换为实际的用户名和密码GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';3.查看主服务器状态在 MySQL 主服务器中,执行以下命令,记录下 File 和 Position 的值,后续用于配置从服务器:
SHOW MASTER STATUS;4.配置并重启从服务器在从服务器的配置文件(my.cnf)中添加以下参数:
  • [mysqld] server-id = 2 # 设置服务器 ID , 每个主服务器和从服务器都必须有唯一的 ID
重启从服务器 , 让以上配置生效 。
5.在从服务器上设置主服务器信息登录到从服务器的 MySQL 中 , 执行以下命令(将 MASTER_HOST、MASTER_USER、MASTER_PASSWORD、MASTER_LOG_FILE 和 MASTER_LOG_POS 替换为对应的值):
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='binlog_file', MASTER_LOG_POS=log_file_position;6.启动从服务器的复制进程执行以下命令启动从服务器的复制进程:
START SLAVE;7.检查从服务器的复制状态执行以下命令 , 确保 Slave_IO_Running 和 Slave_SQL_Running 的值都为 "YES":
SHOW SLAVE STATUS G;三、主从复制原理MySQL 数据库的主从复制主要是基于 Binary Log(二进制文件,简称 bin log)实现的,它的实现流程如下:
说一下MySQL主从复制的原理?

文章插图
它的主要执行流程如下:
  • 主数据库接收到一个写操作(如 INSERT、UPDATE、DELETE)时 , 会将这个操作记录到二进制日志(Binary Log)中,将数据修改的操作按顺序记录下来 。
  • 从数据库 IO 线程会自动连接主服务,从二进制中读取同步数据,记录到中继日志(Relay Log)中 。
  • 从数据库的 SQL 线程会定期从中继日志中获取同步数据,写入到从数据库中 。
四、Bin Log 日志格式Binary Log 二级制日志,它总共有以下三种格式(不同的日志格式决定了不同的主从同步效果):
(1) STATEMENT 格式(语句模式,出现在 MySQL 5.1 之前):在这种格式下,binlog 记录的是执行的 SQL 语句的文本 。