暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 不支持写入参数文件的参数

原创 lps 2022-12-22
1500

最近遇到一则重启 MySQL 数据库无法正常启动的情况,日志报错如下

2022-12-08T18:01:27.892389+08:00 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2022-12-08T18:01:27.895035+08:00 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/zcloud' in the path is accessible to all OS users. Consider choosing a different directory. 2022-12-08T18:01:27.898277+08:00 0 [ERROR] [MY-000067] [Server] unknown variable 'foreign_key_checks=0'. 2022-12-08T18:01:27.899041+08:00 0 [ERROR] [MY-010119] [Server] Aborting

尝试在参数文件修改为foreign-key-checks=0 (将下划线修改为中华线)也是无法正常启动。参数文件中去掉foreign_key_checks=0参数,数据库可以正常启动,
数据库启动之后 通过

set global foreign_key_checks=0;set session foreign_key_checks=0;都可以手动进行参数设置的,如下测试

mysql> show variables like '%foreign_key_checks%'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | foreign_key_checks | ON | +--------------------+-------+ 1 row in set (0.00 sec) mysql> set global foreign_key_checks=0; Query OK, 0 rows affected (0.00 sec) mysql> set session foreign_key_checks=0; Query OK, 0 rows affected (0.00 sec)

但是写入参数文件,数据库重启之后无法正常启动,报unknown variable 的错误,然后数据库直接无法启动。

查看官方手册
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_foreign_key_checks
及 https://dev.mysql.com/doc/refman/8.0/en/server-system-variable-reference.html
发现foreign_key_checks参数说明了不能通过参数文件启动。同时发现 MySQL 8.0 有 119 个参数不支持写入参数文件。 照抄如下:有 119 个参数不支持写入参数文件,虽然官方没有明确说明为什么不能写入参数文件,通过请教 Kevin崔Oracle ACE Associate:破坏数据库一些数据安全之类一些参数不允许写入参数文件。

Name Cmd-Line Option File System Var Var Scope Dynamic
audit_log_current_session Yes Both No
audit_log_filter_id Yes Both No
audit_log_flush Yes Global Yes
build_id Yes Global No
character_set_client Yes Both Yes
character_set_connection Yes Both Yes
character_set_database (note 1) Yes Both Yes
character_set_results Yes Both Yes
character_set_system Yes Global No
collation_connection Yes Both Yes
collation_database (note 1) Yes Both Yes
core_file Yes Global No
debug_sync Yes Session Yes
default_collation_for_utf8mb4 Yes Both Yes
error_count Yes Session No
external_user Yes Session No
foreign_key_checks Yes Both Yes
group_replication_communication_stack Yes Global No
gtid_executed Yes Global No
gtid_next Yes Session Yes
gtid_owned Yes Both No
gtid_purged Yes Global Yes
have_compress Yes Global No
have_dynamic_loading Yes Global No
have_geometry Yes Global No
have_openssl Yes Global No
have_profiling Yes Global No
have_query_cache Yes Global No
have_rtree_keys Yes Global No
have_ssl Yes Global No
have_statement_timeout Yes Global No
have_symlink Yes Global No
hostname Yes Global No
identity Yes Session Yes
immediate_server_version Yes Session Yes
innodb_ft_aux_table Yes Global Yes
innodb_version Yes Global No
insert_id Yes Session Yes
keyring_hashicorp_commit_auth_path Yes Global No
keyring_hashicorp_commit_ca_path Yes Global No
keyring_hashicorp_commit_caching Yes Global No
keyring_hashicorp_commit_role_id Yes Global No
keyring_hashicorp_commit_server_url Yes Global No
keyring_hashicorp_commit_store_path Yes Global No
keyring_operations Yes Global Yes
large_files_support Yes Global No
large_page_size Yes Global No
last_insert_id Yes Session Yes
license Yes Global No
locked_in_memory Yes Global No
log_bin Yes Global No
log_bin_basename Yes Global No
lower_case_file_system Yes Global No
max_insert_delayed_threads Yes Both Yes
ndb_clear_apply_status Yes Yes Global Yes
ndb_join_pushdown Yes Both Yes
ndb_log_bin Yes Yes Both No
ndb_log_binlog_index Yes Yes Global Yes
ndb_log_transaction_id Yes Global No
ndb_metadata_sync Yes Global Yes
Ndb_replica_max_replicated_epoch Yes Global No
ndb_row_checksum Yes Both Yes
Ndb_system_name Yes Global No
ndb_table_no_logging Yes Session Yes
ndb_table_temporary Yes Session Yes
ndb_use_copying_alter_table Yes Both No
ndb_use_exact_count Yes Both Yes
ndb_version Yes Global No
ndb_version_string Yes Global No
ndbinfo_database Yes Global No
ndbinfo_max_bytes Yes Yes Both Yes
ndbinfo_max_rows Yes Yes Both Yes
ndbinfo_offline Yes Global Yes
ndbinfo_show_hidden Yes Yes Both Yes
ndbinfo_table_prefix Yes Global No
ndbinfo_version Yes Global No
original_commit_timestamp Yes Session Yes
original_server_version Yes Session Yes
profiling Yes Both Yes
protocol_version Yes Global No
proxy_user Yes Session No
pseudo_replica_mode Yes Session Yes
pseudo_slave_mode Yes Session Yes
pseudo_thread_id Yes Session Yes
rand_seed1 Yes Session Yes
rand_seed2 Yes Session Yes
rbr_exec_mode Yes Session Yes
relay_log_basename Yes Global No
require_row_format Yes Session Yes
resultset_metadata Yes Session Yes
rewriter_enabled Yes Global Yes
rewriter_enabled_for_threads_without_privilege_checks Yes Global Yes
rewriter_verbose Yes Global Yes
secondary_engine_cost_threshold Yes Session Yes
server_uuid Yes Global No
sql_auto_is_null Yes Both Yes
sql_big_selects Yes Both Yes
sql_buffer_result Yes Both Yes
sql_log_bin Yes Session Yes
sql_log_off Yes Both Yes
sql_notes Yes Both Yes
sql_quote_show_create Yes Both Yes
sql_replica_skip_counter Yes Global Yes
sql_safe_updates Yes Both Yes
sql_select_limit Yes Both Yes
sql_slave_skip_counter Yes Global Yes
sql_warnings Yes Both Yes
system_time_zone Yes Global No
time_zone Yes Both Yes
timestamp Yes Session Yes
transaction_allow_batching Yes Session Yes
unique_checks Yes Both Yes
use_secondary_engine Yes Session Yes
version Yes Global No
version_comment Yes Global No
version_compile_machine Yes Global No
version_compile_os Yes Global No
version_compile_zlib Yes Global No
warning_count Yes Session No

解决方案

参数文件去掉foreign_key_checks=0,数据库启动之后通过set global foreign_key_checks=0配置参数。

参考文档

Server System Variables#sysvar_foreign_key_checks
Server System Variable Reference

最后修改时间:2022-12-22 19:47:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论