概述
本文简单梳理了mysql配置文件和启动参数的读取和解析过程
相关处理源码
load_defaults函数:
这个函数在mysqld_main函数开始的地方调用,注意load_default_groups参数:mysqld、server、mysql5.7,表示该函数只处理配置文件中这些group的内容。
init_default_directories:设置配置文件的初始化目录。后续可能会根据这个目录读取配置文件内容。
my_search_option_files(conf_file, argc, argv, &args_used, handle_default_option, (void *) &ctx, dirs):该函数参数ctx->group存储了要检索配置文件中哪些group的信息。并读取配置文件的信息到ctx->m_args中,m_args每一项的内容格式:--mysql=use
新分配ptr指针数组:1. ptr[0]为进程名
2.ptr之后的内容是ctx->m_args的内容,即读取的配置文件内容
3.ptr之后的内容是分隔项:----args-separator----
4.ptr最后的内容是原命令行的配置信息: argv的数组信息添加到结尾
更新argc和argv的内容,argv=ptr
handle_early_options
处理argv配置项中flag为parse_early的配置项。系统的option在初始化的时候分为两种类型:PARSE_EARLY和PARSE_NORMAL两部分。在sys_var.cc文件中具体看sys_var成员m_parse_flag的值。eg:Sys_var_integer的定义
Sys_var_integer(const char *name_arg,
const char *commen