概述目标:启用主从复制并在应用层进行读写分离,结合延迟读策略保证关键读与写一致性,降低热点压力。适用:高并发读写场景、报表与查询分担。核心与实战启用GTID复制(MySQL 8):-- 主库配置 SET GLOBAL gtid_mode = ON; SET GLOBAL enforce_gtid_consistency = ON; -- 创建复制用户 CREATE USER 'repl'@'%' IDENTIFIED BY 'secret'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; -- 从库配置并建立复制 CHANGE REPLICATION SOURCE TO SOURCE_HOST='primary', SOURCE_USER='repl', SOURCE_PASSWORD='secret', SOURCE_AUTO_POSITION=1; START REPLICA; 读写分离要点:-- 应用层将写路由到主库,读路由到只读从库 -- 关键读(写后读)采用强一致:读主库或等待复制追上 延迟读策略(等待复制追上):-- 在事务结束后记录当前GTID或binlog位置;读从库前检查 SELECT SOURCE_UUID, SOURCE_LOG_FILE, SOURCE_LOG_POS FROM performance_schema.replication_connection_status\G SELECT seconds_behind_source FROM performance_schema.replication_applier_status_by_worker\G -- 当延迟小于阈值(如<500ms)则允许读从库,否则读主库 示例监控复制状态:SHOW REPLICA STATUS\G ProxySQL路由(简要示例):INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (1,1,'^SELECT',20); INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (2,1,'^(INSERT|UPDATE|DELETE)',10); LOAD MYSQL QUERY RULES TO RUNTIME; SAVE MYSQL QUERY RULES TO DISK; 验证与监控延迟与一致性:观察`seconds_behind_source`与复制错误;关键请求执行强一致策略。复制健康:监控`Replica_IO_Running/Replica_SQL_Running`状态与错误码;设置告警。容灾与切换:使用`SOURCE_AUTO_POSITION=1`与GTID简化切换;确保只读副本`read_only=ON`。常见误区盲目读从库导致写后读不一致;关键请求需读主库或等待复制追上。未启用GTID导致切换复杂且易错;复制建议使用GTID。未监控复制延迟与错误;需建立指标与告警。结语通过GTID复制与读写分离,并结合延迟读策略,可在保障一致性的同时提升读性能与稳定性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部