SQL解析在腾讯游戏GCS平台中的应用-韩全安

ddvd

贡献于2015-06-25

字数:0 关键词: SQL

SQL解析在腾讯游戏GCS平台中的应用 腾讯游戏DBA 韩全安 个人介绍 • 韩全安(willhan) • 华中科技大学,硕士,现代数据库方向 • 2013年毕业,就职于腾讯到今 • 涉及的项目: – TMySQL – SQL审核 – InnoDB列压缩 – TSpider – GCS • 团队博客: tencentdba.com • 团队Github: https://github.com/TencentDBA/TMySQL 目录 • SQL解析介绍 – 诞生背景 – 实现原理 – 使用介绍 • SQL解析在GCS平台的应用 – 单据审核 – TSpider集群变更 – Binlog并行恢复 • 改进与规划 SQL解析介绍 • 诞生背景 • 实现原理 • 使用介绍 诞生背景 • GCS平台介绍 – Game Cloud Storage,游戏云存储 – DBA管理腾讯游戏DB的系统 – 250+款游戏(端游+手游)、10000+台服务器、20000+个实例 – 690次SQL变更/月,人均每天支撑3个业务SQL变更,人均管理着500台机器、1000个实例 诞生背景 • SQL变更状况 – 变更因语法错误失败率:3.3% – 平均每2天一个变更失败由语法错误导致 实现原理 • SQL解析实现 – 输入 – 语法分析 – 特征提取 – 输出 输入 语法分析 特征提取 输出 MySQL client 模块 MySQL语法 分析模块 针对语法特 征提取 输出 实现原理 • MySQL语法处理 – 语法规则,yacc – 数据结构,LEX – 核心函数,parse_sql • SQL解析语法处理 – 提取parse_sql最小依赖集 – 部分保留字处理 实现原理 • SQL解析输入模块 – 普通mysql client流程 – SQL解析client流程 mysql client tmysqlparse 使用介绍 • SQL解析组件 – 基于MySQL 5.5.24实现的组件TMySQLParse – 检查SQL语法正确性,并提取语法特征 • SQL解析工具特点 – 独立组件 – 兼容MySQL的输入(终端/文件,delimiter断句) – 支持MySQL语法(MySQL 5.5.24, TMySQL 1.4) – 兼容多个MySQL版本的保留字 – 提取语句类型,包括自定义类型(CREATE_TABLE_WITHOUT_INDEX) – 提取库、表、索引等信息 使用介绍 • SQL解析组件支持参数 •-?, --help 帮助,显示各参数使用 •-f, --file-name 指定输出文件名 •-V, --version 版本信息 •-F, --force 出错继续执行 •-v, --set-version 指定MySQL版本 •-c, --set-charset 指定字符集 •-d, --all-dml-out 判断所有SQL是否为DML •-s, --split-sql 进行SQL切分 •-S, --split-sql-path 指定路径存储SQL切分后的文件 •-w, --show-create 提取SQL库表、索引信息等 •-W, --show-create-path 指定文件存储SQL库表、索引信息 •-T, --get-only-ntables 获取SQL中涉及的table数 使用介绍 • SQL解析组件使用 – 独立使用 – 集成到系统 SQL解析在GCS平台的应用 • 单据审核 • TSpider集群变更 • Binlog并行恢复 单据审核 • GCS系统中单据审核流程 单据审核 • 语法检查 单据审核 • 高危告警 单据审核 • 高危告警类型 单据审核 • GCS引入SQL解析 – 基本杜绝语法错误引起的SQL变更失败 – 节省DBA排查单据错误的精力 – 高危告警让审核更轻松 TSpider集群变更 • TSpider介绍 – 分布式数据库解决方案 – 多种数据分布策略 – 完善的可用性和数据保护支持 – 节点动态在线扩展 – 完全兼容MySQL协议 – 方便的部署和管理工具 DB DB 6W在线,负载40% spider DB spider TSpider集群变更 • TSpider原理 – Partition – Federated TSpider集群变更 • 普通MySQL变更对比Tspider集群变更 • DDL语句为什么不透传 ? – 多个spider结点 – 外围工具灵活 TSpider集群变更 • SQL解析工具提取SQL信息示例 binlog并行恢复 • binlog并行恢复介绍 – TMysqlbinlogex工具实现多线程binlog并行恢复 – 参数和使用方式跟mysqlbinlog一致,增加远程实例和并发数指定 • tmysqlbinlogex --remote-host=** --remote-port=** --remote-user=** --remote-pwd=** -- concurrency=4 --start-position=** --stop-position=*** binlogfile – 回档效率加快3-4倍 – 支持:语句级binlog与行级binlog – 约束:不支持event, UDF binlog并行恢复 • binlog并行恢复原理 – 按表名分发并发线程 – 语句级binlog表名通过SQL解析工具得到 – 行级binlog通过table_map事件得到 改进与规划 • 工具开发: • 提取更丰富的语法特征 • 对外API接口 • 应用 • 变更时长评估 • 变更前后备份判定

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档