Série MySQL (3): configuração de entrada e carregamento da análise do mysqld

introdução

A seção anterior introduziu o processo de execução do mysqld_safe.Esta seção rastreia o processo de configuração de entrada e carregamento do mysqld de acordo com o comando de inicialização gerado pelo mysqld_safe.

analisar

Entrada

A função principal de sql/main.cc chama a função mysqld_main de sql/mysqld.cc.
Aqui iniciamos o mysqld da seguinte forma:

/usr/local/mysql/bin/mysqld \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--plugin-dir=/usr/local/mysql/lib/plugin \
--user=mysql

carregar configuração

load_defaults(MYSQL_CONFIG_NAME, load_default_groups, &argc, &argv)

O valor de MYSQL_CONFIG_NAME é "my", argc é o número de parâmetros e argv é o valor do parâmetro. Neste ponto argv é {"/usr/local/mysql/bin/mysqld", "--basedir=/usr/local/mysql", "--datadir=/usr/local/mysql/data", "-- plugin-dir= /usr/local/mysql/lib/plugin", "--user=mysql"}

  1. Inicializar diretório de configuração
dirs= init_default_directories(&alloc)

Os diretórios inicializados são "/etc/", "/etc/mysql/", "/usr/local/mysql/etc/", "~/".

  1. ler arquivo de configuração
my_search_option_files(conf_file, argc, argv,&args_used, handle_default_option, (void *) &ctx, dirs, false, found_no_defaults)

Leia os arquivos de configuração em um diretório. Escolhemos o diretório "~/" para depuração e criamos um novo arquivo oculto .my.cnf no diretório. Se você optar por inicializar outro diretório no diretório, o nome do arquivo será my.cnf. Insira algum conteúdo em .my.cnf, como segue:

[mysqld]
max-connections = 300
port = 3306

Neste momento, o valor apontado por ctx.m_args.m_array_ptr é {"–max-connections=300", “–port=3306”}

  1. Parâmetros de configuração adicionais
memcpy((res+1), &my_args[0], my_args.size() * sizeof(char*));
set_args_separator(&res[my_args.size() + 1]);
memcpy((uchar*) (res + 1 + my_args.size() + args_sep), (char*) ((*argv)+1), (*argc-1)*sizeof(char*));

O valor de my_args é copiado para res, e o separador e o valor de argv são anexados.O efeito é que os parâmetros lidos no arquivo de configuração são adicionados na frente dos parâmetros de inicialização. O argv final é {"/usr/local/mysql/bin/mysqld", "–max-connections=300", "–port=3306", "----args-separator----", "– basedir =/usr/local/mysql", "–datadir=/usr/local/mysql/data", "–plugin-dir=/usr/local/mysql/lib/plugin", "–user=mysql"}

Resumir

Ao visualizar o código-fonte, comece com a função main e siga o passo a passo da depuração. O processo de configuração de carregamento atual precisa compreender o processo de alteração de argv.

Palavras-chave

Entrada; Inicializar diretório de configuração; Ler arquivo de configuração; Adicionar parâmetros de configuração


Bem-vindo a prestar atenção à conta oficial, é mais conveniente receber push e se comunicar ao encontrar problemas!

Corrida técnica de longa distância

Acho que você gosta

Origin blog.csdn.net/CanvaChen/article/details/103230966
Recomendado
Clasificación