MySQL 数据库 参数是数据库系统运行的关键配置信息,设置不合适的参数值可能会影响业务。本文列举了一些重要参数说明,更多参数详细说明,请参见MySQL官网。
修改敏感参数
若干参数相关说明如下:
“lower_case_table_names;”:
云数据库 默认值:“1;”。
作用:该参数表示创建数据库及表时,表存储是否大小写敏感。设置为默认值“1;”,表示创建数据库及表时,默认小写,不区分大小写,设置为“0;”时,则存储与查询均区分大小写(MySQL 8.0不支持修改该参数)。
影响:修改数据库主实例默认参数值时,用户需要手动同步修改只读实例、灾备实例、通过备份恢复至目标实例的参数。当主实例区分大小写,而只读实例、灾备实例、通过备份恢复至目标实例不区分大小写时,比如主实例先后创建两张表,表名分别为 “abc;”、“Abc ;”时,会导致数据同步、 数据恢复 异常,原因为“abc;”表名已存在。
“innodb_flush_log_at_trx_commit;”:
云数据库默认值:“1;”。
作用:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。设置为默认值“1;”,是为了保证完整的ACID,每次提交事务时,把事务日志从缓存区写到日志文件中,并刷新日志文件的数据到磁盘上;当设为“0;”时,每秒把事务日志缓存区的数据写入日志文件,并刷新到磁盘;如果设为“2;”,每次提交事务都会把事务日志从缓存区写入日志文件,每隔一秒左右会刷新到磁盘。
影响:参数设置为非默认值“1;”时,降低了 数据安全 性,在系统崩溃的情况下,可能导致数据丢失。
“sync_binlog;”:
云数据库默认值:“1;”。
作用:该参数控制MySQL服务器将二进制日志同步到磁盘的频率。设置为默认值“1;”,表示MySQL每次事务提交,binlog同步写入磁盘,是最安全的设置;设置为“0;”时,表示MySQL不控制binlog的刷新,由文件系统自己控制其缓存的刷新。此时的性能最好,但风险最大,因为一旦断电或操作系统崩溃,在“binlog_cache;”中的所有binlog信息都会被丢失。
影响:参数设置为非默认值“1;”时,降低了数据安全性,在系统崩溃的情况下,可能导致binlog丢失。
修改性能参数
若干参数相关说明如下:
“innodb_spin_wait_delay;”和“query_alloc_block_size;”依赖于实例的规格,设置过大时,可能会影响数据库的使用。
“key_buffer_size;”参数值设置较小(小于4096),参数值将修改失败.
“max_connections;”参数值设置较小,将影响数据库访问。
“innodb_buffer_pool_size;”、“max_connections;”和“back_log;”参数依赖于实例的规格,实例规格不同对应其默认值也不同。因此,这些参数在用户未设置前显示为“default;”。
“innodb_io_capacity_max;”、“innodb_io_capacity;”参数依赖于磁盘类型,用户未设置前显示“default;”。
联动参数
“character_set_server;”:修改该参数的值, 系统会联动调整“collation_server、“character_set_database;”和“collation_database;”的取值。其中,字符序“character_set_server;”跟字符集“collation_server;”存在对应关系,比如针对MySQL 5.7而言,“character_set_server;”为“latin1;”时,对应的“collation_server;”默认值为“latin1_swedish_ci;”,此时“collation_server;”的取值区间为以“latin1;”开头的字符序。
“innodb_io_capacity;”:该参数的取值必须小于等于“innodb_io_capacity_max;”的取值。 比如“innodb_io_capacity_max;”为“2000;”, 则“innodb_io_capacity;”最大设置为“2000"。
“innodb_buffer_pool_size;”: 该参数受“innodb_buffer_pool_chunk_size ;”* “innodb_buffer_pool_instances;”的影响,为两参数乘积的整数倍向上取值。
比如“innodb_buffer_pool_chunk_size;”为“134217728;”,“ innodb_buffer_pool_instances;”为“1;”,那“innodb_buffer_pool_size;”必须大于等于“134217728;”。
其他参数
“max_prepared_stmt_count;”:准备大量的语句会消耗服务器的内存资源,参数设置较小,会带来潜在的“拒绝服务;”的风险,建议您根据业务情况,调整该参数的值。
如下参数的输入会根据内核规则对取值进行对应的调整。调整的规则如下所示:
“key_cache_age_threshold;”会自动调整为100的倍数。
“join_buffer_size;”和“key_cache_block_size;”会自动调整为128的倍数。
“query_cache_size;”、“query_prealloc_size;”、“innodb_log_buffer_size;”和“max_allowed_packet ;”、“thread_stack ;”会自动调整为1024的倍数。
“read_buffer_size;”、“read_rnd_buffer_size;”、“binlog_cache_size ;”、“binlog_stmt_cache_size ;”会自动调整为4096的倍数。
“data_buffer_size;”、“log_buffer_size;”、“shared_pool_size;”、“temp_buffer_size ;”会自动调整为1048576的倍数。
以上就是供应商-华为云为您整理的 云数据库MySQL 参数的那些事儿,您可以前往华为云帮助中心:云数据库 MySQL了解更详细的解答,也可前往云社区参与讨论。