狠狠撸

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

More Related Content

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