MySQL 主从复制(Master-Slave Replication)是一种数据复制技术,用于在多个数据库服务器之间的数据同步 。在主从复制架构中,一个服务器被设置为主服务器(Master),充当数据源,其他服务器被设置为从服务器(Slave),用来复制主服务器的数据 。
文章插图
一、主从复制优点主从复制的主要优点有以下几个:
- 高可用性:通过将主数据库的数据复制到一个或多个从数据库,可以在主数据库故障时快速切换到从数据库,以实现系统的高可用性和容错能力,从而保证系统的持续可用性 。
- 提高整体性能和吞吐量:通过将读请求分散到多个从服务器上进行处理 , 从而减轻了主服务器的负载压力 , 提高数据库系统的整体性能和吞吐量 。主服务器主要负责写操作,而从服务器主要负责读操作,从而分担了主服务器的压力 。
- 数据备份和恢复:通过主从同步,可以将主服务器上的数据异步复制到从服务器上,从而实现数据备份和灾难恢复的需求 。在应对意外数据丢失、灾难恢复或误操作时,可以使用从服务器作为数据的备份源来进行数据恢复 。
- [mysqld] server-id = 1 # 设置服务器 ID,每个主服务器和从服务器都必须有唯一的 ID
- log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志,记录数据修改操作
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)实现的,它的实现流程如下:文章插图
它的主要执行流程如下:
- 主数据库接收到一个写操作(如 INSERT、UPDATE、DELETE)时 , 会将这个操作记录到二进制日志(Binary Log)中,将数据修改的操作按顺序记录下来 。
- 从数据库 IO 线程会自动连接主服务,从二进制中读取同步数据,记录到中继日志(Relay Log)中 。
- 从数据库的 SQL 线程会定期从中继日志中获取同步数据,写入到从数据库中 。
(1) STATEMENT 格式(语句模式,出现在 MySQL 5.1 之前):在这种格式下,binlog 记录的是执行的 SQL 语句的文本 。
- 优点:日志文件通常较小,复制效率较高 。
- 缺点:在某些情况下,由于数据库环境的差异(如表结构、字符集等),在从服务器上重放这些 SQL 语句可能会导致不一致的结果 。例如,获取当前时间的函数或存储过程等,可能会导致数据不一致 。
推荐阅读
- 《王者荣耀》传说皮肤艾琳-觅芳踪上线:V10贵族专属 得充值18888元
- 领导对属下说你还有进步空间是什么意思 领导对属下说你还有进步空间释义
- 民俗学者详说清明节的意义
- 看懂《琅琊榜》秦般弱对誉王说的话,就知两人到底有没发生过关系
- 投资活动现金流为负说明什么
- 这3种常见花虽说好看却暗藏隐患
- 网上说的吃麻辣烫是什么意思 对女生说吃麻辣烫是什么意思
- 宣布退圈的5位明星,前4位说到做到,只有他厚脸皮复出
- 韩红说:做慈善最大的经验,就是把钱直接给到受助者
- 定时说说该咋得才可以修改