MySQL云实践@淘宝丁奇基本结构服务高可用数据高可靠运维成本迭代的矛盾基本结构—主备常规一主一备双M&备库readonly只读实例高可用用户只看见主库•主备保障数据安全•切换后继续使用切换闪断•游戏用户痛点•Proxy桥接方案短链接性能–proxy连接复用高可用—切换闪断问题流程•连接创建•使用•用户关闭放入链接池•再次连接复用•使用问题•Killconnection解决•setconnectionid连接复用问题高可靠•恢复到任意时间点•主备一致性•延迟问题•Crash数据不丢专治剁手•删错库/表了!•U/D忘记where备份•定期全备•备份binlog恢复到任意时间点校验•常见校验方案•改进:利用主备复制机制修复•按片检测,按片修复主备一致性主库insertintotmp(select…)等待备库同步完成校验两个tmp问题•Binlog格式•warning日志问题主备一致性--利用主备复制机制多线程复制无主键表的问题•Row格式•备库全表扫描•隐含主键主备一致性—延迟问题主库能恢复自然不丢•恢复时间不可控切换•直接切成备库就可以吗?•等备库执行完日志就可以吗?•Semi-sync就可以吗?•我们的方案Crash数据不丢MasterSlaveasync•双通道(multi-sourcereplication)•改造的semi-sync•数据补齐运维成本•自动化•诊断系统基本的自动化•创建、删除•升级、迁移•备份、恢复•加锁、解锁进一步的•备库自动修复•现场保留一个有趣的投诉自动化监控图•实例数/运维人数20还能依赖人工?实例诊断卡慢诊断全链路诊断诊断系统云服务特点•“最强测试”—用户存储过程中用prepare语法创建三层视图使用MyISAM引擎,在scheduler中使用事务语法存储过程中死循环无限申请内存•“我买了RDS,MySQL的bug我就认为是RDS的bug”•“我使用中没碰到问题,为什么要强制升级”迭代的矛盾需要稳定,没问题的用户不想升级需要迭代,有bug的用户必须升级多租户无法统一的“业务低峰”升还是不升,这是个问题我们的方案•单机多版本•按实例升级迭代的矛盾一点感悟人性化谢谢