想象一下,你负责维护一个电商平台的数据库,双十一凌晨,流量瞬间暴涨,用户疯狂刷新商品页面、下单支付,突然,你的主数据库CPU飙到100%,响应速度直线下降,整个网站开始卡顿...
这时候,如果你提前配置好了MySQL主从复制,就能轻松把读请求分散到多个从库上,主库专心处理写操作,系统依然丝滑流畅,这就是主从复制的魅力所在!
简单说,主从复制就是让一个MySQL服务器(主库)的数据自动同步到其他MySQL服务器(从库)的过程,就像老师(主库)讲课,学生们(从库)记笔记,最终大家掌握的知识点都是一样的。
核心特点:
主库会把所有修改数据的操作记录在binlog里,包括:
-- 查看主库binlog状态 SHOW MASTER STATUS;
从库上有两个关键线程:
每个从库都记录着自己同步到了主库binlog的哪个位置(Position),确保不会漏掉任何变更,也不会重复处理。
主库记录SQL语句本身,从库直接执行相同语句。
优点:
缺点:
主库记录每行数据的变化细节。
优点:
缺点:
智能选择SBR或RBR,平衡日志量和准确性。
-- 查看当前复制模式 SHOW VARIABLES LIKE 'binlog_format';
SHOW SLAVE STATUS\G -- 查看Seconds_Behind_Master字段
[mysqld] server-id = 1 log-bin = mysql-bin binlog-format = ROW sync_binlog = 1
[mysqld] server-id = 2 relay-log = mysql-relay-bin read_only = ON
主库创建复制账号
CREATE USER 'repl'@'%' IDENTIFIED BY '密码'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
从库配置主库信息
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=位置;
启动复制
START SLAVE;
MySQL 5.6引入的全局事务ID,简化故障恢复和主从切换。
特点:
介于异步和全同步之间,确保至少一个从库收到变更后才返回成功。
-- 主库安装插件 INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
MySQL 5.7引入的分布式数据库解决方案,基于Paxos协议实现多主复制。
Last_IO_Error
和Last_SQL_Error
read_only=ON
,防止误操作主从复制的原理是什么?
回答要点:binlog、I/O线程、SQL线程、relay log
主从延迟怎么处理?
回答要点:监控指标、并行复制、硬件优化、架构调整
GTID有什么优势?
回答要点:全局唯一、不依赖位置、简化运维
如何保证主从数据一致性?
回答要点:校验工具、半同步复制、禁止直接操作从库
主库宕机如何恢复?
回答要点:从库提升为主、应用切换、数据校验
MySQL主从复制看似简单,实则内涵丰富,从基础的异步复制到高级的组复制,构成了MySQL高可用架构的基石,理解其原理和实现细节,不仅能帮你在面试中脱颖而出,更能让你在实际工作中游刃有余地处理各种数据库扩展和高可用场景。
本文由 习巧凡 于2025-08-02发表在【云服务器提供商】,文中图片由(习巧凡)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/517180.html
发表评论