我们正在将 MariaDB 10.1 主从网络升级到 MariaDB 10.11。我们分两个阶段进行 - 将所有从属服务器升级到 v10.11,然后在以后引入使用 v10.11 的新主服务器。
应用程序与新版本完全兼容,没有任何问题。我在同一网络中设置了新的生产从属服务器 (v10.11),使用与生产相同的 Linode 实例类型 (50 vcpu、128GB RAM)。数据库大小约为 500GB。
新的 v10.11 实例与其他 v10.1 从属实例具有相同的 InnoDB 配置设置。所有实例的 innodb_buffer_pool_size=100G。启动复制时,这些实例中的滞后不断增加。我注意到这些实例的 CPU 使用率低于 50%,每秒查询数低于 4k。当旧版本 (v10.1) 通常存在滞后时,其 CPU 使用率通常高于 120%,每秒查询数高于 15k,几分钟后就会赶上主版本。
v10.11 中的 seconds_behind_master 几乎变成了 3-4 天。在一个新的从属服务器中,我增加了 slave_parallel_thread=12,情况有所改善。它的 CPU 达到约 300%,每秒查询平均约为 20k。但另一个 v10.11 的 slave_parallel_therads=0 仍比主服务器落后几天。它没有充分利用 CPU - 只有 40-50% 的 CPU。每秒查询数低于 4k。MariaDB v10.1 从属服务器以 slave_parallel_threads=0 运行,我从未遇到过这么长的延迟。就像我说的,延迟通常会在几分钟内稳定下来。
我一直尝试调整一些设置,重新启动一些从属设备,重建从属设备,但都没有任何效果。
一些问题/疑虑 -
- 为什么 MariaDB 10.1 在复制方面表现优于新版 MariaDB 10.11。v10.1 - 未启用 slave_parallel_threads
- 新版 v10.11 中的 CPU 利用率比 v10.1 低得多,每秒查询数更高
有人经历过这种情况吗?
所有从属设备(v10.1 和 v10.11)均具有以下设置 -
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