之前我们重点搭建了一个数据克隆的服务。其实这个名字我们想了很久。很多商科学生不懂逻辑备份和恢复。GET就是我们要解决的问题,数据克隆的概念比较清晰。首先说说我们对数据克隆的定义1)数据克隆可以快速从网上导出指定的数据库/表数据,构建虚拟环境,提供高效的数据服务;2)在功能上,实现业务数据自助抽取,分钟级构建环境,无需DBA介入,通过workbench等工具即可访问数据;3)安全方面,支持数据库操作日志审计,已接入ES审计,提供库/表访问过滤,虚拟环境随机分配,临时密码下发,同时,虚拟环境的使用时间是有限的。适用场景:1)快速查看在线配置数据;2)在线表结构提取;3)日志数据查询,在线大表;4)在线SQL异常,快速搭建SQL优化、压力测试等虚拟环境;5)指定大表变更及数据运行影响评估;6)基于业务逻辑的数据补丁合并、数据操作和数据补丁整理。从数据克隆的使用角度来说,其实可以满足一些不确定的需求,比如做一些全方位的查询过滤等,但是因为与线上环境隔离,所以不会同步线上数据。此时我们可以更进一步,即实现数据实时克隆,从而实现数据的实时同步。当然,这种同步是一种多源幂等复制。比如源库有10张表,我们的目标环境可能只克隆了2张表,做实时复制的时候需要排除这8张表,而同一个实例上有多个环境,所以多源复制模式自然会启用。如果排除一些琐碎的细节,我们可以总结如下:实时克隆的核心是GTID_SET的管理,设计中需要考虑以下因素:基本限制和配置1.相同的数据库instance只能被克隆一次2.Data启用GTID,实时克隆不支持MySQL5.5版本3.数据库参数slave_exec_mode的值为IDEMPOTENT4。设置数据库参数skip-slave-errors=11465。实时克隆环境建议只读。6.克隆的数据库复制账号为db_clone_repl7。通常clone环境中的表数小于源数据库环境GTID变更过程1.数据逻辑备份时,需要在导出记录中包含并记录GTID值。2.当数据逻辑恢复时,可以参考以下步骤:a)如果已经存在数据复制通道Runi.暂停复制通道Channelii。获取固定的GTID_SET值iii。将导出的GTID附加到GTID_SET,并更新为GTID_PURGEDiv。启动复制通道Channelb)如果没有数据复制通道就运行i。将导出的GTID附加到当前的GTID_SET,并将Go更新为GTID_PURGEDii。启动复制通道。注:复制通道名称为db_clone_[源IP]_[源端口]3.每日定时任务清理环境时,自动执行resetmaster操作清除GTID_SET本文转载自微信公众号《杨建荣的学习笔记》,可以通过以下二维码关注。转载本文请联系杨建荣学习笔记公众号。
