RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章3关注圈子367圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# MySQL

MySQL 读写分离怎么实现?

读写分离:写走主库、读走从库(从库扩展读能力),核心组件与方式:① 应用层:代码里区分读写数据源(简单但侵入业务);② 中间件:ProxySQL(功能强:路由、读写分离、连接池、故障切换)、MyCat、ShardingSphere-Proxy(规则可配);③ 驱动层:ShardingSphere-JDBC(应用内数据源路由)。配套:主从延迟处理(读从库可接受延迟则直接路由,强一致读路由主库);监控从库延迟与健康;故障时自动剔除从库。注意…

2
# MySQL

MySQL 高可用方案有哪些?

① 主从复制 + 手动/脚本切换(MHA):简单,切换有延迟;② MMM(Multi-Master Replication Manager):双主+监控,切换快但写双主有风险;③ MGR(MySQL Group Replication,组复制):基于 Paxos 的组共识,多主/单主模式、自动故障检测与选主、强一致,8.0 推荐;④ Orchestrator:拓扑管理与自动切换(中间件,业界流行);⑤ 云 RDS 高可用(阿里云/腾讯云…

3
# MySQL

MySQL 8.0 有哪些重要新特性?

① 性能:默认字符集 utf8mb4、新增 hash join、redo 无锁优化、并行查询部分场景;② 安全:caching_sha2_password 默认认证、隐藏索引(INVISIBLE)、强制 SSL;③ 功能:窗口函数(ROW_NUMBER、RANK)、CTE(WITH 公共表表达式)、CHECK 约束、JSON 增强(JSON_TABLE)、原子 DDL(DDL 事务化);④ 管理:数据字典统一(去掉 .frm)、inst…

4
# MySQL

MySQL 双主架构和 MHA 是什么?

双主(主主)架构:两个节点互为主从(A→B、B→A),任一可写;风险:自增冲突(用不同自增偏移/步长或雪花 ID)、循环复制(server-id 不同可避免回环)。用途:一写一读互备、故障切换(B 顶 A)。MHA(Master High Availability):经典主从故障自动切换方案——监控主库,故障时选数据最新的从库提升为主、补齐 relay log、其他从库重新指向新主;切换需 MHA Manager 部署、有 10-30s…

6
# MySQL

MySQL 主从复制延迟怎么解决?

延迟原因:① 从库 SQL 线程单线程重放(写量大、大事务、DDL);② 主库并发写 vs 从库串行;③ 从库硬件/网络弱;④ 长事务、无主键表更新慢。解决:① 并行复制:replica_parallel_workers(MTS,按库/按事务/按行并行,5.7+);② 优化大事务:拆分批量提交;③ 提升从库硬件(IO/磁盘,用 SSD);④ 读写分离策略:强一致读走主库、延迟敏感业务读主;⑤ 监控秒级延迟(Seconds_Behind_…

7
# MySQL

MySQL 主从复制的原理是什么?

主从复制流程:① 主库写 binlog(提交时);② 从库 IO 线程连接主库请求 binlog,主库 dump 线程发送;③ 从库 IO 线程把 binlog 写入中继日志 relay log;④ 从库 SQL 线程读取 relay log 并重放,更新从库数据。三个线程:主库 dump 线程、从库 IO 线程、从库 SQL 线程。类型:异步复制(默认,主库不等待从库)、半同步复制(semisync:至少一个从库 ack 才提交,5.…

8
# MySQL

MySQL binlog 的三种格式:statement、row、mixed 有什么区别?

① STATEMENT:记录原始 SQL——日志小、可读性好,但结果不确定(NOW()、UUID()、存储过程)导致主从数据不一致;② ROW:记录每行变更(行前/后镜像)——最准确、主从一致,但日志量大(批量更新每条都记);③ MIXED:默认——大部分用 statement,不安全的语句自动切 row。8.0 默认 ROW(binlog_format=ROW),配合 binlog_row_image 控制镜像;row 格式支持闪回(…

9
# MySQL

MySQL redo log 为什么是物理日志?WAL 机制是什么?

redo log 记录页的物理修改(如页号 + 偏移 + 新值),因为崩溃恢复需要精确重放页变更(不依赖 SQL 重跑,幂等高效)。WAL(Write-Ahead Logging,先写日志再改数据):事务提交时先把 redo log 刷盘,数据页修改可留在 Buffer Pool 由后台异步落盘——即使数据页没刷盘崩溃,重启后重放 redo 即可恢复,保证持久性且性能高(顺序写日志 vs 随机写数据页)。刷盘策略:innodb_flus…

10
# MySQL

MySQL 的 binlog、redo log、undo log 有什么区别?

① redo log(重做日志,InnoDB 引擎层):记录物理页修改,循环写(ib_logfile),WAL 机制,用于崩溃恢复保证持久性(已提交事务不丢);② binlog(二进制日志,Server 层):记录逻辑 SQL/行变更,追加写,用于主从复制与时间点恢复;③ undo log(回滚日志,InnoDB 层):记录修改前的值,用于事务回滚与 MVCC 版本链,purge 线程清理。区分:redo 是物理(页)、InnoDB 特…