暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

KingbaseES-问题小记之min_wal_size outside

山佳数峰寻道 2025-04-25
309


前言


昨天晚上刚部署了KES mysql兼容模式,昨天对参数做了微调然后有个参数忘记调整了,导致今天重启数据库报错,处理过程如下:


处理过程


首先看到重启报错:
    root@VM-10-12-ubuntu:/data/KES/data# systemctl restart kingbase
    Job for kingbased.service failed because the control process exited with error code.
    See "systemctl status kingbased.service" and "journalctl -xeu kingbased.service" for details.
    然后查看状态:
      root@VM-10-12-ubuntu:/data/KES/data# systemctl status kingbased.service
      × kingbased.service - LSB: Start and stop the kingbase server
           Loaded: loaded (/etc/init.d/kingbased; generated)
           Active: failed (Result: exit-code) since Thu 2025-04-24 17:34:49 CST; 8s ago
         Duration: 18h 46min 7.597s
             Docs: man:systemd-sysv-generator(8)
          Process2296628 ExecStart=/etc/init.d/kingbased start (code=exited, status=1/FAILURE)
              CPU: 7ms


      Apr 24 17:34:49 VM-10-12-ubuntu systemd[1]: Starting kingbased.service - LSB: Start and stop the kingbase server...
      Apr 24 17:34:49 VM-10-12-ubuntu kingbased[2296628]: Starting KingbaseES V9:
      Apr 24 17:34:49 VM-10-12-ubuntu su[2296630]: (to kingbase) root on none
      Apr 24 17:34:49 VM-10-12-ubuntu su[2296630]: pam_unix(su-l:session): session opened for user kingbase(uid=1002) by (uid=0)
      Apr 24 17:34:49 VM-10-12-ubuntu su[2296630]: pam_unix(su-l:session): session closed for user kingbase
      Apr 24 17:34:49 VM-10-12-ubuntu kingbased[2296628]: KingbaseES V9 did not start in a timely fashion, please see data/KES/data/sys_log/startup.log for details
      Apr 24 17:34:49 VM-10-12-ubuntu systemd[1]: kingbased.service: Control process exited, code=exited, status=1/FAILURE
      Apr 24 17:34:49 VM-10-12-ubuntu systemd[1]: kingbased.service: Failed with result 'exit-code'.
      Apr 24 17:34:49 VM-10-12-ubuntu systemd[1]: Failed to start kingbased.service - LSB: Start and stop the kingbase server.
      可以看到有提示:
        root@VM-10-12-ubuntu:/data/KES/data# tail -200f /data/KES/data/sys_log/startup.log
        2025-04-23 22:48:38.634 CST [1722732] LOG:  config the real archive_command string as soon as possible to archive WAL files
        2025-04-23 22:48:38.637 CST [1722732] LOG:  sepapower extension initialized
        2025-04-23 22:48:38.642 CST [1722732] LOG:  starting KingbaseES V009R001C002B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
        2025-04-23 22:48:38.642 CST [1722732] LOG:  listening on IPv4 address "0.0.0.0", port 54321
        2025-04-23 22:48:38.642 CST [1722732] LOG:  listening on IPv6 address "::", port 54321
        2025-04-23 22:48:38.644 CST [1722732] LOG:  listening on Unix socket "/tmp/.s.KINGBASE.54321"
        2025-04-23 22:48:38.713 CST [1722732] LOG:  redirecting log output to logging collector process
        2025-04-23 22:48:38.713 CST [1722732] HINT:  Future log output will appear in directory "sys_log".
        2025-04-24 09:34:46.492 GMT [2296589] LOG:  1 MB is outside the valid range for parameter "min_wal_size" (2 .. 2147483647)
        2025-04-24 17:34:46.492 CST [2296589] FATAL:  configuration file "/data/KES/data/kingbase.conf" contains errors
        2025-04-24 09:34:49.591 GMT [2296635] LOG:  1 MB is outside the valid range for parameter "min_wal_size" (2 .. 2147483647)
        2025-04-24 17:34:49.591 CST [2296635] FATAL:  configuration file "/data/KES/data/kingbase.conf" contains errors
        验证参数:
          root@VM-10-12-ubuntu:/data/KES/data# grep min_wal_size kingbase.conf
          min_wal_size = 1MB
          #发现参数只有默认的1MB
          #然后查看max_wal_size


          root@VM-10-12-ubuntu:/data/KES/data# grep max_wal_size kingbase.conf
          max_wal_size = 32GB
          #发现已调整,说明昨天晚上调整遗漏了。
          #然后我们进行调整min_wal_size大小至1G
          root@VM-10-12-ubuntu:/data/KES/data# grep min_wal_size kingbase.conf
          min_wal_size = 1GB
          进行启动数据库测试:
            root@VM-10-12-ubuntu:/data/KES/data# systemctl start kingbased.service
            root@VM-10-12-ubuntu:/data/KES/data# systemctl status kingbased.service
            ● kingbased.service - LSB: Start and stop the kingbase server
                 Loaded: loaded (/etc/init.d/kingbased; generated)
                 Active: active (exited) since Thu 2025-04-24 17:37:21 CST; 4s ago
                   Docs: man:systemd-sysv-generator(8)
                Process2298597 ExecStart=/etc/init.d/kingbased start (code=exited, status=0/SUCCESS)
                    CPU: 7ms


            Apr 24 17:37:20 VM-10-12-ubuntu systemd[1]: Starting kingbased.service - LSB: Start and stop the kingbase server...
            Apr 24 17:37:20 VM-10-12-ubuntu kingbased[2298597]: Starting KingbaseES V9:
            Apr 24 17:37:20 VM-10-12-ubuntu su[2298599]: (to kingbase) root on none
            Apr 24 17:37:20 VM-10-12-ubuntu su[2298599]: pam_unix(su-l:session): session opened for user kingbase(uid=1002) by (uid=0)
            Apr 24 17:37:21 VM-10-12-ubuntu su[2298599]: pam_unix(su-l:session): session closed for user kingbase
            Apr 24 17:37:21 VM-10-12-ubuntu kingbased[2298597]: KingbaseES V9 started successfully
            Apr 24 17:37:21 VM-10-12-ubuntu systemd[1]: Started kingbased.service - LSB: Start and stop the kingbase server.
            发现可以正常启动数据库了。


            总结


            min_wal_size 参数指定了 WAL 文件的最小保留大小。

            作用:

            设置数据库在任何时候保留的 WAL 文件的最小总量

            即使系统负载很低,也会保留至少这么多的 WAL 空间

            防止因突然的负载增加导致需要频繁分配新的 WAL 文件

            默认值通常为 80MB


            max_wal_size 参数指定了 WAL 文件的最大保留大小。

            作用:

            设置检查点之间允许 WAL 增长的最大总量

            当 WAL 大小接近此限制时,会触发检查点操作

            这个参数间接控制检查点的频率

            默认值通常为 1GB

            两者关系和工作原理:

            数据库会根据负载动态调整 WAL 文件的数量,在 min_wal_size 和 max_wal_size 之间变化

            当系统空闲时,WAL 空间会缩减到 min_wal_size

            在高负载时,WAL 空间可以增长到 max_wal_size

            如果 WAL 使用量接近 max_wal_size,系统会触发检查点,使 WAL 可以被回收






            文章转载自山佳数峰寻道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论