goinception审核规则
Posted _雪辉_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了goinception审核规则相关的知识,希望对你有一定的参考价值。
#备份ip
backup_host xxx
#备份密码
backup_password xxx
#备份端口
backup_port 33071
#备份用户
backup_user goinception
#当建表时自增列的类型不为int或者bigint时报错
check_autoincrement_datatype true
#当建表时自增列的值指定的不为1,则报错
check_autoincrement_init_value false
建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示
check_autoincrement_name true
建表时,列没有注释时报错
check_column_comment false
检查在建表、修改列、新增列时,新的列属性是不是要有默认值
check_column_default_value false
检查列位置/顺序变更
check_column_position_change false
#检查字段类型变更
check_column_type_change true
#在DML语句中使用了LIMIT时,是不是要报错
check_dml_limit false
在DML语句中使用了Order By时,是不是要报错
check_dml_orderby false
在DML语句中没有WHERE条件时,是不是要报错
check_dml_where false
#检查标识符是否正确,规则是[a-z,A-Z,0-9,_]
check_identifier false
#检查where条件中是否存在隐式类型转换
check_implicit_type_conversion false
#是否检查索引前缀,索引前缀通过参数index_prefix和uniq_index_prefix配置
check_index_prefix false
#是不是要检查插入语句中的列链表的存在性
check_insert_field false
#建表时,如果没有主键,则报错
check_primary_key false
#建表时,表没有注释时报错
check_table_comment false
#建表时,如果没有为timestamp类型指定默认值,则报错
check_timestamp_default false
#配置是否检查current_timestamp数量
check_timestamp_count true
#设置是否允许 timestamp 类型字段,包括建表、修改列、新增列操作,默认为 true
enable_timestamp_type true
#设置是否支持时间为0值,关闭时强制报错。默认值为 true,即开启,此时会基于数据库sql_mode的NO_ZERO_DATE判断是否支持
enable_zero_date true
#检查datetime
check_datetime_default false
check_datetime_count false
#开启时,当使用 float/double 类型时提示转成 decimal 类型
check_float_double false
#要求标识符即表名、列名、索引名等必须为大写,默认为false
check_identifier_upper false
#默认字符集
default_charset utf8mb4
#自增列是不是要为无符号型
enable_autoincrement_unsigned false
#是否允许blob/text/json类型置为not null,默认为false,即不允许
enable_blob_not_null false
#检查是不是支持BLOB字段,包括建表、修改列、新增列操作
enable_blob_type false
#设置是否支持change column语法,默认值true
enable_change_column true
#允许列自己设置字符集
enable_column_charset false
#是否允许删除数据库
enable_drop_database false
#是否允许删除表
enable_drop_table false
#是不是支持enum,set,bit数据类型
enable_enum_set_bit false
#sql指纹功能。dml语句相似时,可以根据相同的指纹ID复用explain结果,以减少远端数据库explain操作,并提高审核速度
enable_fingerprint false
#是不是支持外键
enable_foreign_key false
#检查在SQL语句中,是不是有标识符被写成mysql的关键字,默认值为报警。
enable_identifer_keyword false
#设置是否允许json类型字段,包括建表、修改列、新增列操作
enable_json_type false
#支持创建和使用视图
enable_use_view false
#设置是否启用最小化回滚SQL,当开启时,update的回滚语句仅记录最小化变更(未变更列不再记录), 默认为false
enable_minimal_rollback false
#是否允许指定存储引擎,默认为true
enable_set_engine true
#创建或者新增列时是否允许列为NULL
enable_nullable true
#创建索引时是否允许空索引名
enable_null_index_name false
#order by rand时是不是报错
enable_orderby_rand false
#是不是支持分区表
enable_partition_table false
#是否强制主键列必须是int
enable_pk_columns_only_int false
#Select*时是不是要报错
enable_select_star false
#是否允许指定表和数据库的字符集
enable_set_charset false
#是否允许指定表和数据库的排序规则
enable_set_collation false
#开启统计功能
enable_sql_statistic false
#explain判断受影响行数时使用的规则
explain_rule first
#连接远程数据库的默认sql_mode设置
sql_mode
general_log false
#在解析binlog时,二进制类型如果无法以字符串形式保存,则以十六进制字符串转储(影响类型:binary,varbinary,blob),默认关闭
hex_blob false
#普通索引前缀
index_prefix idx_
#唯一索引前缀
uniq_index_prefix udx_
#表前缀
table_prefix
#返回的信息使用语言,可选值en-US,zh-CN
lang en_us
#允许的最大数据包大小.默认为 4194304,单位字节,即4MB
max_allowed_packet 4194304
#最大char长度,当超出时警告转换为varchar类型
max_char_length 0
#当DDL预估受影响行数超出设置值时警告,为0时不限制
max_ddl_affect_rows 10000000
#设置insert values允许的最大行数.0为不限制
max_insert_rows 10000
#单表允许的最大索引数
max_keys 0
#一个索引最多可指定的列数
max_key_parts 0
#当update/delete预估受影响行数超出设置值时警告
max_update_rows 10000
#主键最多可指定的列数
max_primary_key_parts 0
#在多个改同一个表的语句出现是,报错,提示合成一个
merge_alter_table false
#用以指定建表时必须创建的列。多个列时以逗号分隔(格式: 列名 [列类型,可选])
must_have_columns
#指定的列必须添加索引。多个列时以逗号分隔(格式: 列名 [列类型,可选]),指定列类型时对类型也会限制
columns_must_have_index createtime,updatetime
skip_grant_table true
#指定不再审核的SQL.该参数指定要跳过的客户端/框架默认SQL,以实现客户端兼容
skip_sqls
#配置要强制忽略osc的alter子句. 格式为drop index,add column等,多个时以逗号分隔
ignore_osc_alter_stmt
#安全更新.-1表示不做操作,基于远端数据库,0表示关闭安全更新,1表示开启安全更新
sql_safe_updates -1
#会话在执行SQL时的元数据锁等待超时,单位:秒
lock_wait_timeout -1
#支持的字符集,多个时以逗号分隔
support_charset utf8,utf8mb4
#支持的排序规则,多个时以逗号分隔
support_collation
#支持的存储引擎类型.默认为innodb,此处可以设置多个,以逗号分隔,或者修改默认的存在引擎类型
support_engine innodb
#远端数据库等待超时时间, 单位:秒, 默认值为 0 时表示使用数据库默认值
wait_timeout 0
#阿里云rds数据库标志
ghost_aliyun_rds false
#允许gh-ost运行在双主复制架构中,一般与-assume-master-host参数一起使用
ghost_allow_master_master false
#允许gh-ost在数据迁移(migrate)依赖的唯一键可以为NULL,默认为不允许为NULL的唯一键。如果数据迁移(migrate)依赖的唯一键允许NULL值,则可能造成数据不正确,请谨慎使用。
ghost_allow_nullable_unique_key false
#允许gh-ost直接运行在主库上。默认gh-ost连接的主库
ghost_allow_on_master true
#如果支持修改列名,则需设置此参数为true,否则gh-ost不会执行。
ghost_approve_renamed_columns true
#为gh-ost指定一个主库,格式为"ip:port"或者"hostname:port"。默认推荐gh-ost连接从库。
ghost_assume_master_host
#确认gh-ost连接的数据库实例的binlog_format=ROW的情况下,可以指定-assume-rbr,这样可以禁止从库上运行stop slave,start slave,执行gh-ost用户也不需要SUPER权限。为避免影响生产数据库,此参数建议置为true
ghost_assume_rbr true
#该参数如果为True(默认值),则进行row-copy之后,估算统计行数(使用explain select count(*)方式),并调整ETA时间,否则,gh-ost首先预估统计行数,然后开始row-copy。
ghost_concurrent_rowcount true
#当值为0时,当达到-critical-load,gh-ost立即退出。当值不为0时,当达到-critical-load,gh-ost会在-critical-load-interval-millis秒数后,再次进行检查,再次检查依旧达到-critical-load,gh-ost将会退出。
ghost_critical_load_interval_millis 0
#负载达到critical-load时,gh-ost在指定的时间内进入休眠状态。 它不会读/写任何来自任何服务器的任何内容。
ghost_critical_load_hibernate_seconds 0
#选择cut-over类型:atomic/two-step,atomic(默认)类型的cut-over是github的算法,two-step采用的是facebook-OSC的算法。
ghost_cut_over atomic
#在两次失败的切换尝试之间等待的时间间隔呈指数增长。等待间隔服从一个可配置的最大值(使用“指数退避最大间隔”)。
ghost_cut_over_exponential_backoff false
#在每次迭代中处理的行数量(允许范围:100-100000),默认值为1000。
ghost_chunk_size 1000
#gh-ost在cut-over阶段最大的锁等待时间,当锁超时时,gh-ost的cut-over将重试。(默认值:3)
ghost_cut_over_lock_timeout_seconds 3
#该参数针对一个有外键的表,在gh-ost创建ghost表时,并不会为ghost表创建外键。该参数很适合用于删除外键,除此之外,请谨慎使用。
ghost_discard_foreign_keys false
#各种操作在panick前重试次数。(默认为60)
ghost_default_retries 60
#在单个事务中应用DML事件的批量大小(范围1-100)(默认值为10)
ghost_dml_batch_size 10
#准确统计表行数(使用select count(*)的方式),得到更准确的预估时间。
ghost_exact_rowcount false
#使用指数退避执行各种操作时,尝试之间等待的最大秒数(默认值(64)
ghost_exponential_backoff_max_interval 64
#临时表上使用的表名前缀
ghost_force_table_names
#如果为true,则“unpostone | cut-over”交互命令必须命名迁移的表
ghost_force_named_cut_over false
#google云平台支持
ghost_gcp false
#gh-ost心跳频率值,默认为500ms。
ghost_heartbeat_interval_millis 500
#gh-ost操作之前,检查并删除已经存在的ghost表。该参数不建议使用,请手动处理原来存在的ghost表。
ghost_initially_drop_ghost_table false
#gh-ost操作之前,检查并删除已经存在的旧表。该参数不建议使用,请手动处理原来存在的ghost表。
ghost_initially_drop_old_table false
#gh-ost强制删除已经存在的socket文件。该参数不建议使用,可能会删除一个正在运行的gh-ost程序,导致DDL失败。
ghost_initially_drop_socket_file false
#主从复制最大延迟时间,当主从复制延迟时间超过该值后,gh-ost将采取节流(throttle)措施,默认值:1500ms。
ghost_max_lag_millis 1500
#每次chunk时间段的休眠时间,范围[0.0...100.0]。e.g:0:每个chunk时间段不休眠,即一个chunk接着一个chunk执行;1:每row-copy 1毫秒,则另外休眠1毫秒;0.7:每row-copy 10毫秒,则另外休眠7毫秒。
ghost_nice_ratio 0
#gh-ost开关
ghost_on true
#gh-ost操作结束后,删除旧表,默认状态是删除旧表。
ghost_ok_to_drop_table true
#当这个文件存在的时候,gh-ost的cut-over阶段将会被推迟,直到该文件被删除。
ghost_postpone_cut_over_flag_file
#跳过外键检查,默认为true
ghost_skip_foreign_key_checks true
#列出所有需要被检查主从复制延迟的从库
ghost_throttle_control_replicas
# --throttle http标志允许通过http进行限制。每100ms ghost向提供的URL发出一个HEAD请求。如果响应状态代码不是200,则在返回200响应状态代码之前,节流将启动
ghost_throttle_http
#在旧表名中使用时间戳。 这会使旧表名称具有唯一且无冲突的交叉迁移
ghost_timestamp_old_table false
#节流查询。每秒钟执行一次。当返回值=0时不需要节流,当返回值>0时,需要执行节流操作。该查询会在数据迁移(migrated)服务器上操作,所以请确保该查询是轻量级的。
ghost_throttle_query
#当该文件被创建后,gh-ost操作立即停止。该参数适合控制单个gh-ost操作。-throttle-additional-flag-file string适合控制多个gh-ost操作。
ghost_throttle_flag_file
#当该文件被创建后,gh-ost操作立即停止。该参数可以用在多个gh-ost同时操作的时候,创建一个文件,让所有的gh-ost操作停止,或者删除这个文件,让所有的gh-ost操作恢复。
ghost_throttle_additional_flag_file
#告诉gh-ost你正在运行的是一个tungsten-replication拓扑结构。
ghost_tungsten false
#检查主从复制延迟的SQL语句,默认gh-ost通过show slave status获取Seconds_behind_master作为主从延迟时间依据。如果使用pt-heartbeat工具,检查主从复制延迟的SQL语句类似于:SELECT ROUND(UNIX_TIMESTAMP() - MAX(UNIX_TIMESTAMP(ts))) AS delay FROM my_schema.heartbeat;
ghost_replication_lag_query
# 用来设置在arkit返回结果集中,对于原来OSC在执行过程的标准输出信息是不是要打印到结果集对应的错误信息列中,
# 如果设置为1,就不打印,如果设置为0,就打印。而如果出现了错误,则都会打印。默认值:OFF
osc_print_none = false
# 对应参数pt-online-schema-change中的参数--print。默认值:OFF
osc_print_sql = false
# 全局的OSC开关,默认是打开的,如果想要关闭则设置为OFF,这样就会直接修改。默认值:OFF
osc_on = false
# 这个参数实际上是一个OSC开关,如果设置为0,则全部ALTER语句都使用OSC方式,
# 如果设置为非0,则当这个表占用空间大小大于这个值时才使用OSC方式。
# 单位为M,这个表大小的计算方式是通过语句
# select (DATA_LENGTH + INDEX_LENGTH)/1024/1024 from information_schema.tables
# where table_schema = 'dbname' and table_name = 'tablename' 来实现的。默认值:16
# [0-1048576]
osc_min_table_size = 16
# 对应参数pt-online-schema-change中的参数alter-foreign-keys-method,具体意义可以参考OSC官方手册。默认值:none
# [auto | none | rebuild_constraints | drop_swap]
osc_alter_foreign_keys_method = "none"
# 对应参数pt-online-schema-change中的参数recursion_method,具体意义可以参考OSC官方手册。默认值:processlist
# [processlist | hosts | none]
osc_recursion_method = "processlist"
# 对应参数pt-online-schema-change中的参数--max-lag。默认值:3
osc_max_lag = 3
# 类似--max-lag,检查集群暂停流量控制所花费的平均时间(仅适用于PXC 5.6及以上版本,会自动检测)
osc_max_flow_ctl = -1
# 对应参数pt-online-schema-change中的参数 --sleep 默认值:0.0
osc_sleep = 0.0
# 对应参数pt-online-schema-change中的参数 --set-vars lock_wait_timeout=?
osc_lock_wait_timeout = 60
# 对应参数pt-online-schema-change中的参数--[no]check-alter。默认值:ON
osc_check_alter = true
# 对应参数pt-online-schema-change中的参数--[no]check-replication-filters。默认值:ON
osc_check_replication_filters = true
# 对应参数pt-online-schema-change中的参数--[no]drop-old-table。默认值:ON
osc_drop_old_table = true
# 对应参数pt-online-schema-change中的参数--[no]drop-new-table。默认值:ON
osc_drop_new_table = true
# 对应参数pt-online-schema-change中的参数--max-load中的thread_running部分。默认值:80
osc_max_thread_running = 80
# 对应参数pt-online-schema-change中的参数--max-load中的thread_connected部分。默认值:1000
osc_max_thread_connected = 1000
# 对应参数pt-online-schema-change中的参数--critical-load中的thread_running部分。默认值:80
osc_critical_thread_running = 80
# 对应参数pt-online-schema-change中的参数--critical-load中的thread_connected部分。默认值:1000
osc_critical_thread_connected = 1000
# 对应参数pt-online-schema-change中的参数--chunk-time。默认值:1
osc_chunk_time = 1.0
# 对应参数pt-online-schema-change中的参数--chunk-size-limit。默认值:4
osc_chunk_size_limit = 4
# 对应参数pt-online-schema-change中的参数--chunk-size。默认值:1000
osc_chunk_size = 1000
# 对应参数pt-online-schema-change中的参数--check-interval,意义是Sleep time between checks for --max-lag。默认值:5
osc_check_interval = 5
osc_bin_dir = "/usr/local/bin"
以上是关于goinception审核规则的主要内容,如果未能解决你的问题,请参考以下文章