KingbaseES数据库日志文件记录数据库的历史操作信息, 包含恢复数据库中的所有事务所需的信息。

  1. KingbaseES在线WAL日志:

    WAL日志:

     预写式日志(Write-Ahead Logging(WAL)是保证数据完整性、实现事务日志的一种标准方法。
    WAL的主要记录对数据文件的修改(存储着表和索引)必须在修改动作被日志记录之后才被写入。
    当修改动作的日志记录被写出到持久存储。在数据库发生崩溃时可以使用wal日志来恢复数据库。
    任何还没有被应用到数据文件的改变可以根据其wal日志记录重做。 使用WAL显著减少了磁盘写的次数。只有日志文件出发checkpoint时才会写出到磁盘以保证事务被提交。
    而被事务改变的每一个数据文件不必被写出。
    日志文件按照顺序写入,因此同步日志的代价要远小于写数据文件的代价。
    在OLTP小事务的服务器尤其明显。
    使用WAL能够保证数据页的完整性。
    提供数据库在线备份和恢复的可能。
    通过归档的WAL文件,可以恢复到WAL文件包含的任意时间。
    WAL日志的redo可以修复数据库内部的不一致。

    事务日志

     在KingbaseES事务的状态及可见性等信息记录在事务日志文件中。
    只有通过事务日志信息才能从数据文件中得到有效的数据。
    因此事务日志对数据一致性是十分重要的。
    主要的事务日志文件有sys_xact、sys_csnlog、sys_multixact..

    在线日志

     在KingbaseES中用户的SQL操作以及数据库的运行中的事件会以文本的形式记录在在线日志中.
    用于使用户可以了解和分析数据库当前状态,并分析可能产生的异常。
    在线日志文件默认记录在sys_log中,并可以存放在用户指定的其他地方
  2. wal日志格式

     WAL的名称由三部分组成,每个部分代表8个数字。
    00000002是TimeLine ID,从1开始。
    00000005是逻辑文件ID,从0开始。
    000000D0是物理文件ID,从00开始,直到 FF,不停的循环 test=# select pg_current_wal_lsn(),pg_walfile_name(pg_current_wal_lsn()),pg_walfile_name_offset(pg_current_wal_lsn());
    pg_current_wal_lsn | pg_walfile_name | pg_walfile_name_offset
    --------------------+--------------------------+------------------------------------
    5/D04C7698 | 0000000200000005000000D0 | (0000000200000005000000D0,5011096)
    (1 row) 当前事物号 5/D04C7698 5 : logid
    D0 : wal segment段id
    4C7698:offset 偏移量 test=# select x'D04C7698'::bigint;
    int8
    ------------
    3494672024
    (1 row) test=# select ((3494672024-1)/(16*1024*1024*256::bigint));
    ?column?
    ----------
    0
    (1 row) test=# select mod(((3494672024-1)/(16*1024*1024)),256); --十进制
    mod
    -----
    208
    (1 row) test=# select to_hex(208); --计算wal日志编号
    to_hex
    --------
    d0
    (1 row) test=# wal日志切换:
    select sys_switch_wal(); 在sys_wal/archive_status目录
    .ready 表示准备归档
    .done 表示归档已完成
  3. 关于wal日志的参数:

     #wal_level = replica			      # replica 它会写入足够的数据以支持WAL归档和复制,包括在后备服务器上运行只读查询。
    # minimal 会去掉除从崩溃或者立即关机中进行恢复所需的信息之外的所有记录。
    # logical 会增加支持逻辑解码所需的信息。每个层次包括所有更低层次记录的信息。
    #wal_sync_method = fsync # 可以通过 sys_test_fsync 测试设置。
    #wal_compression = off # full_page_writes =on 或者处于基础备份期间会压缩写入到 WAL 中的完整页面镜像。
    # 压缩页面镜像将在 WAL 重放时被解压。
    #wal_log_hints = off # 参数必须开启,在流复制主备需要进行切换时,主备时间线出现分歧,方便使用sys_rewind进行时间同步
    #wal_init_zero = on # 设置为 on (默认值),会把新的WAL文件填充0,进行预分配空间
    #wal_recycle = on # 通过重命名循环使用已经存在的WAL文件。
    #wal_buffers = -1 # wal日志缓存
    #wal_writer_delay = 200ms # wal日志写磁盘后,休眠时间。
    #wal_writer_flush_after = 1MB # 新产生的wal字节,写出到系统缓存。
    max_wal_size = 2GB # WAL 检查点之间允许 WAL 增长到的最大尺寸。这是一个软限制。
    # 在特殊的情况下 WAL 尺寸可能会超过 max_wal_size + 2
    min_wal_size = 1GB # WAL 磁盘用量保持在这个设置之下,在检查点时旧的 WAL 文件循环使用,而不直接被删除。
    #max_wal_senders = 10 # 流复制环境wal 发送进程的最大数量,在流复制环境必须将此参数设置为与主服务器相同或更高的值。
    #wal_keep_segments = 0 # 保留的wal 日志文件数目。每个wal 最大为16MB。
    #wal_sender_timeout = 60s # 流复制环境wal 发送进程超时时间
    #wal_receiver_status_interval = 10s # 流复制环境备机接受主发送wal日志的复制信息的频度
    #wal_receiver_timeout = 60s # 流复制环境wal 接收进程超时时间
    #wal_retrieve_retry_interval = 5s # 流复制环境从本地 sys_wal 或者 WAL 归档都得不到 WAL 数据时,备用服务器等待多久去重新尝试获取 WAL 数据。
  4. 单机开启归档场景

     kingbase.conf参数
    
     ora_input_emptystr_isnull = off
    archive_mode = on
    archive_command='test ! -f /home/kingbase/data/sys_wal/archive_status/%f && cp %p /home/kingbase/archive_log/%f'
    wal_level = replica
    max_wal_size = 800MB
    min_wal_size = 80MB
    wal_keep_segments = 50
    log_filename = 'kingbase-%Y-%m-%d.log'

    4.1. 影响wal保存最大个数的参数

     max_wal_size = 800MB
    min_wal_size = 80MB
    -- 上面的跟以下参数任选一个就可以
    wal_keep_segments = 50
    默认的wal segment大小为16MB。

4.2. 清理已经归档的wal日志

sys_wal/archive_status目录下的文件会自动清理。
设置archive_command参数后,归档目录需要手动清理。 1 通过sys_controldata读取控制文件,找到可以清理的wal日志 [kingbase@ora19c ~]$ sys_controldata -D data
sys_control version number: 1201
Catalog version number: 202208021
Database system identifier: 7159464663528337316
Database cluster state: shut down
sys_control last modified: Tue 22 Nov 2022 05:29:23 PM CST
Latest checkpoint location: A/93000028
Latest checkpoint's REDO location: A/93000028
Latest checkpoint's REDO WAL file: 000000020000000A00000093
Latest checkpoint's TimeLineID: 2
Latest checkpoint's PrevTimeLineID: 2
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID: 0:1932
Latest checkpoint's NextOID: 17839
Latest checkpoint's NextMultiXactId: 1
Latest checkpoint's NextMultiOffset: 0
Latest checkpoint's oldestXID: 519
Latest checkpoint's oldestXID's DB: 13000
Latest checkpoint's oldestActiveXID: 0
Latest checkpoint's oldestMultiXid: 1
Latest checkpoint's oldestMulti's DB: 13000
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Time of latest checkpoint: Tue 22 Nov 2022 05:29:23 PM CST
Fake LSN counter for unlogged rels: 0/3E8
Minimum recovery ending location: 0/0
Min recovery ending loc's timeline: 0
Backup start location: 0/0
Backup end location: 0/0
End-of-backup record required: no
wal_level setting: replica
wal_log_hints setting: off
max_connections setting: 100
max_worker_processes setting: 8
max_wal_senders setting: 10
max_prepared_xacts setting: 0
max_locks_per_xact setting: 64
track_commit_timestamp setting: off
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 8192
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Maximum size of a TOAST chunk: 1988
Size of a large-object chunk: 2048
Date/time type storage: 64-bit integers
Float4 argument passing: by value
Float8 argument passing: by value
Data page checksum version: 0
Mock authentication nonce: f66a52790db7d81bc9e88e1fe8e85cb0703b937f4be6ed5d676304bbe6147d32
database mode: 0
auth method mode: 0

2 通过sys_archivecleanup手动清理归档日志。

[kingbase@ora19c ~]$ sys_archivecleanup archive_log/ 000000020000000A00000093 -n |wc -l
310
[kingbase@ora19c ~]$ sys_archivecleanup archive_log/ 000000020000000A00000093
[kingbase@ora19c ~]$ ls -l archive_log/ |wc -l
1 或者通过定时任务脚本清理
vi wal_clean.sh
#!/bin/bash
DATA_DIR=/home/kingbase/data
ARCHIVE_DIR=/home/kingbase/archive_log
CMD_DIR=/home/kingbase/KingbaseES/V8/Server/bin
CRT_WAL_FILE=`$CMD_DIR/sys_controldata -D data |grep -i 'redo wal'|awk -F: '{print $2}'`
$CMD_DIR/sys_archivecleanup $ARCHIVE_DIR $CRT_WAL_FILE

KingbaseES在线wal日志的更多相关文章

  1. KingbaseES通过sys_waldump解析wal日志

    前言 oracle中的redo日志我们无法直接读取,然而对于KingbaseES数据库,我们可以利用sys_waldump工具解析wal日志,查看wal日志记录的信息. 我们可以利用 sys_wald ...

  2. KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析

    ​ 案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...

  3. KingbaseES V8R6 集群环境wal日志清理

    案例说明: 1.对于集群中的wal日志,除了需要在备库执行recovery外,在集群主备切换(switchover或failover)时,sys_rewind都要读取wal日志,将数据库恢复到一致性状 ...

  4. PgSQL · 追根究底 · WAL日志空间的意外增长

    问题出现 我们在线上巡检中发现,一个实例的pg_xlog目录,增长到4G,很是疑惑.刚开始怀疑是日志归档过慢,日志堆积在pg_xlog目录下面,未被清除导致.于是检查归档目录下的文件,内容如下.但发现 ...

  5. postgresql如何维护WAL日志/归档日志

    WAL日志介绍 wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性.而在PostgreSQL 7中引入的 ...

  6. 主库的wal日志已经被归档或异常丢失如何搭建从库

      关键字:wal日志归档  搭建从库 restore_command master 194.1 slave 194.4 wal归档目录 /backup/pgsql/pg_arch/ xlog目录 / ...

  7. PostgreSQL日志号LSN和wal日志文件简记

    弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...

  8. WAL日志文件名称格式详解

    转自:http://blog.osdba.net/534.html WAL日志文件名称格式详解 PostgreSQL的WAL日志文件在pg_xlog目录下,一般情况下,每个文件为16M大小: osdb ...

  9. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205

    13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...

  10. Oracle RACDB 增加、删除 在线重做日志组

    Oracle RACDB 增加.删除 在线重做日志组 select * from v$log;select * from v$logfile ; ----删除日志组:alter database dr ...

随机推荐

  1. 幂次方表达:p1010

    1 题目ID: P1010 [NOIP1998 普及组] 幂次方 2 题目描述: 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方 ...

  2. 系统启动后bond配置不生效问题定位

    背景描述 为了适配新功能,裸金属服务的磁盘镜像中做了如下修改: dracut添加network, iscsi模块 grub添加rd.iscsi.firmware=1参数 删除网卡配置文件/etc/sy ...

  3. EventBridge助力阿里云视觉智能开放平台AI智能存储实践

    本文作者:李建,阿里巴巴达摩院技术专家. 01 视觉智能开放平台(VIAPI)业务场景介绍 阿里云视觉智能开放平台(简称 VIAPI),是基于之前很多技术实践经验积累的 AI 能力的沉淀平台.目前整个 ...

  4. Go语言核心36讲14

    在前几期文章中,我们分了几次,把Go语言自身提供的,所有集合类的数据类型都讲了一遍,额外还讲了标准库的container包中的几个类型. 在几乎所有主流的编程语言中,集合类的数据类型都是最常用和最重要 ...

  5. 关于model,modelsmanager,db以及phql之间关系的梳理

    摘要: model在前,db在model后面作为驱动支持.phql是phalcon自创的查询语言,主要特性是在sql语句中用模型名替代表名,其聪明地解析模型类,包括关联关系等,还支持参数绑定.mode ...

  6. Leetcode 799.香槟塔:动态规划+递归

    香槟塔:动态规划+递归 题目来源:Leetcode 22/11/20每日一题:799.香槟塔 https://leetcode.cn/problems/champagne-tower 我们把玻璃杯摆成 ...

  7. Ubuntu环境下LLVM 15.0 完全编译 附windows编译LLVM master

    1. 预先安装 sudo apt install ninja-build sudo apt install llvm clang # 第一次编译需要 sudo apt-get install libn ...

  8. ubuntu等debian系linux系统添加人脸识别howdy

    准备 proxychains proxychains是用来给终端走代理的软件,因为下载howdy的时候有一部分的文件的服务器在国外,且被墙了. 安装proxychains sudo apt insta ...

  9. C温故补缺(十三):可变参数

    可变参数 stdarg.h 头文件提供了实现可变参数功能的函数和宏.具体步骤如下: 定义一个函数,最后一个参数为省略号,省略号前面可以设置自定义参数,一般传入参数的个数. int func(int n ...

  10. GitOps实践之kubernetes安装argocd

    1. 什么是argocd 1.Argo CD是Kubernetes的一个声明性GitOps持续交付工具. 2.应用程序定义.配置和环境应该是声明性的和版本控制的.应用程序部署和生命周期管理应自动化.可 ...