Estamos no processo de atualização de nossa rede MariaDB 10.1 Master-Slave para MariaDB 10.11. Estamos conduzindo-os em 2 estágios - atualizar todos os escravos para v10.11 e, em um dia posterior, introduzir um novo mestre com v10.11.
O aplicativo é totalmente compatível com a nova versão e não há problemas. Eu estava configurando novos escravos de produção (v10.11) na mesma rede, com o mesmo tipo de instância Linode (50 vcpu, 128 GB de RAM) da produção. O tamanho do banco de dados é de aproximadamente 500 GB.
Novas instâncias v10.11 têm as mesmas configurações do InnoDB que os outros escravos v10.1. innodb_buffer_pool_size=100G para todas as instâncias. Ao iniciar a replicação, o lag continua crescendo nessas instâncias. Percebi que a CPU delas está abaixo de 50% com consultas/segundo menores que 4k. Quando geralmente há um lag na versão mais antiga (v10.1), sua CPU geralmente está acima de 120% com consultas/segundo acima de 15k e ela alcançará o mestre em poucos minutos.
seconds_behind_master na v10.11 se tornou quase 3-4 dias. Em um dos novos escravos, aumentei o slave_parallel_thread=12 e isso melhorou. Sua CPU chegou a cerca de 300% com consultas / segundo com média de cerca de 20k. Mas a outra v10.11 com slave_parallel_therads=0, ainda está alguns dias atrás do Master. Não está utilizando totalmente a CPU - apenas 40-50% da CPU. As consultas por segundo estão abaixo de 4k. Os escravos MariaDB v10.1 estão sendo executados com slave_parallel_threads=0 e nunca experimentei esse longo atraso com eles. Como eu disse, o atraso geralmente se instala em poucos minutos.
Tenho tentado ajustar algumas configurações, reiniciar os escravos algumas vezes, reconstruir os escravos, mas sem sucesso.
Algumas perguntas/preocupações -
- Por que o MariaDB 10.1 tem melhor desempenho na replicação com melhor eficiência do que o novo MariaDB 10.11. v10.1 - não tem slave_parallel_threads habilitado
- A utilização da CPU é muito menor na nova versão 10.11 do que na versão 10.1 com melhores consultas / segundo
Alguém já passou por isso antes?
Todos os escravos (v10.1 e v10.11) têm essas configurações -
wait_timeout = 60
interactive_timeout = 60
max_connections = 1000
innodb_buffer_pool_size = 100G
max_allowed_packet = 1G
innodb_strict_mode=OFF
sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
innodb_data_file_path=ibdata1:500M:autoextend
read_rnd_buffer_size = 256M
sort_buffer_size = 256M
join_buffer_size = 256M
tmp_table_size= 1536M
max_heap_table_size= 1536M
skip_slave_start
slave-type-conversions=ALL_NON_LOSSY
read_buffer_size = 20M
#innodb_additional_mem_pool_size = 256M
innodb_log_file_size = 1G
innodb_buffer_pool_instances = 40
skip_name_resolve = 1
tmp_table_size= 1536M
max_heap_table_size= 1536M
server_id=114
#slave-type-conversions=ALL_NON_LOSSY
max_connect_errors = 1000000
log_warnings = 2
####
read_buffer_size = 20M
#innodb_additional_mem_pool_size = 256M
query_cache_type=0