王竹峰 - Inception自动审核系统设计与实现

凭水瑶

2018/05/13 发布于 技术 分类

Inception是集审核、执行、回滚于一体的一个自动化运维系统,它是根据MySQL代码修改过来的,用它可以很明确的,详细的,准确的审核MySQL的SQL语句, 它的工作模式和MySQL完全相同,可以直接使用MySQL客户端来连接,但不需要验证权限,它相对应用程序(上层审核流程系统等)而言,是一个服务器, 在连接时需要指定服务器地址及Inception服务器的端口即可,而它相对要审核或执行的语句所对应的线上MySQL服务器来说,是一个客户端, 它在内部需要实时的连接数据库服务器来获取所需要的信息,或者直接在在线上执行相应的语句及获取binlog等,Inception就是一个中间性质的服务。

文字内容
1. Inception⾃自动审核系统 ——设计与实现 ⺩王⽵竹峰 2015年3⽉月25⽇日
2. ⾃自我介绍 ‣ 先后就职于达梦数据库、⼈人⼈人⽹网 • DM7内核开发 • MySQL ‣ 2013年8⽉月加⼊入去哪⼉儿⽹网 • DBA • 负责酒店MySQL数据库运维与性能优化 • inception 的设计与开发 • Redis补丁、PXC哨兵( mysql-sentinel) ‣ 联系⽅方式: • http://www.cnblogs.com/bamboos • QQ:329570985;微信:tlf577
3. ⼤大纲 ‣ 常见 MySQL 审核⽅方法 ‣ Inception 简介 ‣ Inception 使⽤用⽅方法 ‣ Inception配置参数 ‣ Inception对OSC的⽀支持 ‣ Inception 执⾏行流程 ‣ Inception 备份回滚 ‣ Inception审核平台 ‣ Inception 问题改进
4. 常⻅见 MySQL 审核⽅方法  Beta Online           ‣ 半⾃自动化⽅方法 • 同步问题 • 准确性问题 • 被动发现错误 • 不能穷尽 • 备份/恢复
5. 常⻅见 MySQL 审核⽅方法 Heuristics   DBA/QA review ‣ ⼈人⾁肉法 •累 • 主观 • 哪错了? • 效率
6. Inception 简介                 ‣ 具备特性 • 源⾃自MySQL • 轻量级 • 精准 • ⽀支持Python、C接⼜⼝口 • ⽀支持 MySQL 协议 • 穷尽错误、结果集 • 服务器模式 • 上下⽂文逻辑相关性
7. Inception 简介 ‣ 架构 / Online Online Inception / / client/server
8. Inception 使⽤用⽅方式 ‣ Inception 服务器 • ⽇日志功能 • 启动 ‣ 语句格式 • 加注 hint,⽀支持若⼲干选项 • 开始、提交
9. Inception 使⽤用⽅方式 ‣ 审核结果集
10. Inception 使⽤用⽅方式 ‣ 结果集 • ID:sql序号 • stage:所处阶段信息 • errlevel:错误分级,包括通过、警告及严重错误 • stagestatus:阶段处理汇报信息 • errormessage:全部错误信息,包括执⾏行与备份 • SQL语句:语句块中被分离出来的⼀一条 • affected_rows:预计影响⾏行数、实际影响⾏行数 • sequence:备份、回滚序列号 • backup_dbname:备份数据库名字 • execute_time:当前语句执⾏行时间,单位是秒,精确到毫秒 ‣ ⼆二次开发——>审核平台
11. Inception 使⽤用⽅方式 ‣ ⽀支持选项 • --host • --port • --user • --password • --enable-check • --enable-execute • --enable-force • --enable-ignore-warnings • --enable-remote-backup DEV DBA www.qunar.com
12. Inception 配置参数 ‣ Inception⽀支持配置参数 inception_check_insert_field inception_check_dml_where inception_check_dml_limit inception_check_dml_orderby inception_enable_select_star inception_enable_orderby_rand inception_enable_nullable inception_enable_foreign_key Inception_max_key_parts inception_max_update_rows inception_remote_system_password inception_check_column_comment inception_check_primary_key inception_enable_partition_table inception_enable_enum_set_bit inception_check_index_prefix inception_enable_autoincrement_unsigned inception_max_char_length inception_check_autoincrement_init_value inception_check_autoincrement_datatype inception_check_timestamp_default inception_remote_system_user inception_max_keys inception_enable_not_innodb inception_support_charset inception_check_table_comment inception_max_char_length inception_check_autoincrement_init_value inception_check_autoincrement_datatype inception_check_timestamp_default inception_remote_backup_host inception_remote_backup_port inception_enable_identifer_keyword ‣ Inception配置参数查看及修改 inception get variables ‘variable_name’; inception get variables; inception set variable_name=value; inception set session variable_name=value;
13. Inception 执⾏行流程 NO YES YES NO inception_magi c_commit YES NO / NO YES DUMP binlog YES NO YES NO
14. Inception 执⾏行备份 YES NO YES NO ‣ 优势 • ⼀一键式 • DBA⼯工作效率 • 回滚简单易操作 • ⼆二次开发
15. Inception对OSC的⽀支持 ‣ 友好性 ‣ Inception⽀支持配置参数 • 会话级参数修改(inception set session …) ‣ OSC进度查询 • HASH值的获取 • inception get osc_percent ‘HASH value’; inception_osc_bin_dir inception_osc_check_interval inception_osc_chunk_size inception_osc_chunk_size_limit inception_osc_chunk_time inception_osc_critical_thread_connected inception_osc_critical_thread_running inception_osc_drop_new_table inception_osc_drop_old_table inception_osc_max_lag inception_osc_max_thread_connected inception_osc_max_thread_running inception_osc_min_table_size inception_osc_on inception_osc_print_sql inception_osc_print_none
16. Inception 备份 ‣ 备份存储⽅方式 • 可配置 • 集中式库级备份(192_168_168_168_3310_inception) ‣ 操作备份信息(操作备份表) • SQL 语句 • Binlog 前后位置 • 数据库地址、端⼜⼝口 • 操作类型(insert/update...) • 回滚序号(opid_time)
17. Inception 回滚 ‣ 存储(回滚表)
18. Inception 回滚 ‣ 存储结构 db1 table1 table2 db2 table3 table4 MySQL    HP_db1 backup table1 table2 HP_db2 backup table3 table4
19. Inception 回滚语句⽣生成 ‣ DML • ⾏行模式(mixed) • insert、delete、update • ⼀一条语句对多条回滚语句 • 各种反拼 ‣ DDL • 执⾏行前 • ALTERTABLE、CREATETABLE、DROPTABLE等 • 处理范围
20. Inception 回滚⽅方法 ‣ 回滚⼀一条 • 回滚 sequence • 事务 ‣ 回滚多条 • 回滚 sequence • 从后向前 • 事务                  
21. Inception 审核平台 ‣ 开发请求界⾯面
22. Inception 审核平台 ‣ 审核通过提交界⾯面
23. Inception 审核平台 ‣ 待审核界⾯面
24. Inception 审核平台 ‣ 待执⾏行界⾯面 ‣ 已执⾏行界⾯面