MySQL 在组复制设置中用尽所有 RAM 和 SWAP

MySQL 在组复制设置中用尽所有 RAM 和 SWAP

我在组复制(多主)基础架构中使用 MySQL 8.0.18。目前有 4 个主服务器相互连接,一切似乎都运行良好,但在大约 2 周的时间里,所有服务器上的所有 mysqld 进程都用完了所有交换空间。内存使用量保持在 800Mb,因为我怀疑 innodb_log_buffer_size 正在发挥作用。

服务器规格:

Debian 10

1GB 内存

3GB 交换空间

20GB 固态硬盘

mysql.cnf:

最大连接数=20

innodb_log_buffer_size=800M

密钥缓冲区大小=50M

超级读取仅=关闭

gtid_mode = 开启

强制实施_gtid_consistency = ON

master_info_repository = 表

Relay_log_info_repository = 表

binlog_checksum = 无

log_slave_updates = ON

log_bin=binlog

binlog_format = ROW

transaction_write_set_extraction = XXHASH64

松散组复制引导组 = OFF

loose-group_replication_start_on_boot = OFF

loose-group_replication_ssl_mode = 必需

松散组复制恢复使用 SSL = 1

松散组复制不可达多数超时 = 80

松散组复制自动重新加入尝试 = 2015

松散组复制事务大小限制=0

相关操作系统配置:

vm.swappiness=5

我怎样才能让 mysql 停止使用这么多的交换空间?

答案1

您要将所有这些都压缩到 1.0GB 吗?

  • 操作系统
  • mysqld
  • innodb_log_buffer_size(0.8GB)
  • key_buffer_size=50M,尽管 MyISAM 已经消失

难怪它正在交换。

返回默认值 (8M) innodb_log_buffer_size。这可能足以解决您的问题。

相关内容