什么时候需要对比MySQL参数
- 迁移时,从一个集群到另一个集群
- 升级时,从一个版本到另一个版本
- 巡检时,需要关注重点参数是否有人为修改过
- 其他时候,自己去想
怎么对比
实例少时,比如两个集群的几组实例
- 可以去每台机器上把重点参数打印出来
- 手动对比
大量数据库实例的对比,需要用脚本工具实现
第一步,建一个收集表
CREATE TABLE `info_variables` (
`instanceid` int NOT NULL DEFAULT '0',
`var_key` varchar(100) NOT NULL DEFAULT '',
`var_value` varchar(1000) NOT NULL DEFAULT '',
`linkname` varchar(50) NOT NULL DEFAULT '',
clustertype varchar(10) not null default '',
`_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`instanceid`,`var_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
第二步,建一个收集任务
- 我是在dboop平台上配置的,执行show global variables再 insert 到info_variables表
第三步,清理指标
delete from info_variables where var_key like 'wsrep%';
delete from info_variables where var_key like 'performance_schema_%';
delete from info_variables where var_key like 'ssl_%';
delete from info_variables where var_key like 'log%';
delete from info_variables where var_key like 'group%';
delete from info_variables where var_key like 'validate%';
delete from info_variables where var_key like 'gtid%';
delete from info_variables where var_value like '%/%';
delete from info_variables where var_key in ( 'datadir ', 'hostname ', 'innodb_data_home_dir ', 'innodb_log_group_home_dir ', 'innodb_undo_directory ', 'port ', 'relay_log ', 'relay_log_basename ', 'relay_log_index ', 'report_port ', 'server_id ', 'slave_load_tmpdir ', 'socket ', 'tmpdir ' );
第四步,形成报告
- 可以按需求出报告或报表
- 甚至做可视化的参数对比页面
重点关注参数
时间类:
- explicit_defaults_for_timestamp
- time_zone
自增主键:
- auto_increment_increment
- auto_increment_offset
- innodb_autoextend_increment
- innodb_autoinc_lock_mode
连接属性:
- join_buffer_size
- max_tmp_tables
- wait_timeout
- max_allowed_packet
- max_connections
字符编码:
- character_set_server
- transaction_isolation
- collation_connection
- collation_database
- collation_server
mode:
- sql_mode
>> Home以上参数的变化和不一致,可能会在迁移或升级过程中带来严重的后果,需慎重。