KingbaseES V8R6备份恢复案例之---sys_waldump解析wal日志PITR恢复
案例说明:
复现用户删除表(drop table)误操作,通过wal日志解析找到误操作时间点,执行基于时间点的恢复(PITR)。
适用版本:
KingbaseES V8R6
一、模拟业务现场操作
1、查看当前对象信息
prod=# \d
List of relations
Schema | Name | Type | Owner
--------+---------------------+-------+--------
public | dual | view | system
public | sys_stat_statements | view | system
public | t_centerprises | table | system
public | t1 | table | system
public | TB1 | table | system
public | tb2 | table | system
public | tbl_test | table | system
(7 rows)
2、执行事务操作
prod=# select count(*) from t1;
count
-------
10000
(1 row)
prod=# insert into t1 values(generate_series(1001,2000),'usr'||generate_series(1001,2000));
INSERT 0 1000
prod=# select count(*) from t1;
count
-------
11000
(1 row)
# 当前wal对应lsn
prod=# select sys_current_wal_lsn();
sys_current_wal_lsn
---------------------
0/3D000058
(1 row)
prod=# insert into t1 values(generate_series(11001,20000),'usr'||generate_series(11001,20000));
INSERT 0 9000
prod=# select count(*) from t1;
count
-------
20000
(1 row)
# 查看数据库当前wal日志文件
prod=# 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
--------------------+--------------------------+-----------------------------------
0/3D0A5090 | 00000001000000000000003D | (00000001000000000000003D,675984)
(1 row)
# 用户误删除表
prod=# drop table t1;
DROP TABLE
二、查看当前数据库的物理备份
如下图所示:以下是用户误操作时间点之前的物理备份。
三、sys_waldump解析wal日志(查看误操作准确时间点)
Tips:
对于用户的误操作,要执行PITR的恢复,需要找到误操作的准确时间点,在生产环境中,可以根据误操作大概的时间点,对时间点前后的归档及在线日志进行解析,本案例为了简化操作,只解析了一个wal日志。
[kingbase@node102 sys_wal]$ /opt/Kingbase/ES/V8R6_C6/Server/bin/sys_waldump 00000001000000000000003D -s '0/3D000058'
1、Insert操作日志解析
prod=# select oid,relname from sys_class where oid=16500;
oid | relname
-------+---------
16500 | t1
(1 row)
2、更新pg_statistic系统表日志
prod=# select oid,relname from sys_class where oid=2696 or oid=2619;
oid | relname
------+----------------------------------
2619 | pg_statistic
2696 | pg_statistic_relid_att_inh_index
(2 rows)
3、drop table日志解析
# drop table 将清理系统表中对象的信息
prod=# select oid,relname from sys_class where oid=2608;
oid | relname
------+-----------
2608 | pg_depend
(1 row)
=如上图所示,从wal日志中可以解析到‘drop table’事务commit的时间点,“COMMIT 2022-09-27 11:09:45.005736 CST”,可以以此时间点作为PITR恢复的时间点,来恢复用户误删除的表。=
四、执行基于时间点(PITR)恢复
Tips:
对于生产环境可以异地恢复,在另外的实例执行PITR的恢复,将恢复出的数据,再导入到生产实例中。本案例是从本实例恢复,需要将数据库服务关闭。
1、关闭数据库服务并备份数据库文件
[kingbase@node102 bin]$ ./sys_ctl stop -D /data/kingbase/v8r6_c6/data
[kingbase@node102 v8r6_c6]$ mv data data.bk
2、执行PIRT恢复
[kingbase@node102 bin]$ /opt/Kingbase/ES/V8R6_C6/Server/bin/sys_rman --config=/home/kingbase/kbbr7_repo/sys_rman.conf --stanza=king --type=time --target='2022-09-27 11:09:45' restore
.......
2022-09-27 13:34:05.234 P00 INFO: Restore Process: FILE: 2605 / 2605 100% SZIE: 105160230 bytes / 105160230 bytes 100.3MB / 100.3MB 100%
2022-09-27 13:34:05.239 P00 INFO: write updated /data/kingbase/v8r6_c6/data/kingbase.auto.conf
2022-09-27 13:34:05.244 P00 INFO: restore global/sys_control (performed last to ensure aborted restores cannot be started)
2022-09-27 13:34:05.245 P00 INFO: restore size = 100.3MB, file total = 2605
2022-09-27 13:34:05.246 P00 INFO: restore command end: completed successfully (2308ms)
3、查看恢复后的数据
1)查看kingbase.auto.conf配置
[kingbase@node102 data]$ cat kingbase.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
# Recovery settings generated by sys_rman restore on 2022-09-27 13:39:58
restore_command = '/opt/Kingbase/ES/V8R6_C6/KESRealPro/V008R006C006B0013/Server/bin/sys_rman --config=/home/kingbase/kbbr7_repo/sys_rman.conf --stanza=king archive-get %f "%p"'
recovery_target_time = '2022-09-27 11:09:45'
2)启动数据库服务
[kingbase@node102 bin]$ ./sys_ctl start -D /data/kingbase/v8r6_c6/data
3)查看sys_log日志
4)查看恢复后的数据
5)清理kingbase.auto.conf文件后重启数据库
[kingbase@node102 bin]$ ./sys_ctl restart -D /data/kingbase/v8r6_c6/data
四、总结
对于归档模式的数据库在数据库备份及wal日志(归档和在线)保存完整的情况下,可以通过基于时间点的恢复操作,恢复用户的误操作丢失的数据。对于用户误操作的时间点,可以借助wal日志的解析获取到准确的事务操作的时间点。
KingbaseES V8R6备份恢复案例之---sys_waldump解析wal日志PITR恢复的更多相关文章
- KingbaseES通过sys_waldump解析wal日志
前言 oracle中的redo日志我们无法直接读取,然而对于KingbaseES数据库,我们可以利用sys_waldump工具解析wal日志,查看wal日志记录的信息. 我们可以利用 sys_wald ...
- KingbaseES V8R6备份恢复案例之---自定义表空间指定恢复目录数据恢复
案例说明: KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数'--kb1-path',指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立表空 ...
- KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份
案例说明: 在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份.本案例介绍了,如何在King ...
- KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份
案例说明: KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证:在一些生产环境为了安全需求, ...
- KingbaseES V8R6备份恢复案例之---手工清理冗余历史备份
案例说明: 对于KingbaseES V8R6的通过sys_rman执行的物理历史备份,可以在执行备份时,备份的保留(retention)策略自动清理.不能通过手工删除备份,可以通过expire参数手 ...
- KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析
案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...
- KingbaseES V8R6 维护管理案例之---Kstudio在CentOS 7启动故障
案例说明: 在CentOS 7上安装KingbaseES V8R6C006数据库后,启动Kstudio图形界面启动失败,gtk动态库加载失败,安装gtk相关动态库后,问题解决. 适用版本: Kin ...
- Raid磁盘阵列更换磁盘时另一块盘离线恢复案例(v7000存储数据恢复)
Raid磁盘阵列更换磁盘时另一块盘离线恢复案例(v7000存储数据恢复) [故障描述]客户设备型号为IBM V7000存储,架构为AIX+oracle+V7000存储阵列柜,需要恢复的数据主要存放在阵 ...
- KingbaseES在线wal日志
KingbaseES数据库日志文件记录数据库的历史操作信息, 包含恢复数据库中的所有事务所需的信息. KingbaseES在线WAL日志: WAL日志: 预写式日志(Write-Ahead Loggi ...
- 执行PDB的PITR恢复失败的说明
Oracle 12.1版本中,UNDO表空间仅存在CDB级别(共享UNDO),来自于AskScuti博客园. Oracle 12.2版本开始,UNDO表空间同时可以存在每个PDB级别(本地UNDO). ...
随机推荐
- win32-FileTimeToSystemTime的使用
#include <Windows.h> #include <iostream> #include <string> #pragma warning(disable ...
- 如何保证消息顺序执行(Rabbitmq/kafka)
转载: https://www.cnblogs.com/-wenli/p/13047059.html https://www.jianshu.com/p/02fdcb9e8784
- 矩池云如何自定义端口,访问自己的web项目
本文将给您介绍如何在矩池云租用服务器的时候自定义端口,并将您的 web 项目部署到自定义端口,最后实现在本地通过自定义端口对应链接访问服务. 上传代码和数据 首先,您需要将本地的项目代码和数据上传到矩 ...
- 【Azure 应用服务】Azure Powershell Function 出错 The term 'Connect-AzAccount' is not recognized
问题描述 在Azure Function中,执行Powershell的Function脚本时,先后出现 1:[Error] ERROR: The term 'Connect-AzAccount' is ...
- 【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
问题描述 当成功创建一个Web App时,通过高级工具(Kudu)可以查看 Web App的根目录(wwwroot)中有一个默认的文件(hostingstart.html).它就是应用服务的默认页面. ...
- 【Azure Developer】使用Key Vault的过程中遇见的AAD 认证错误
在使用应用程序访问Key Vault获取密钥信息时,现后遇见了多种认证错误.使用的代码为: String keyVaultUrl = "https://test-xxx.vault.azur ...
- 主流开源分布式图计算框架 Benchmark
本文由美团 NLP 团队高辰.赵登昌撰写,首发于 Nebula Graph Community 公众号 前言 随着近年来数据的爆炸式增长,如何高效地分析处理数据,在业界一直备受关注.现实世界中的数据往 ...
- C++ //常用算法 adjacent_find //查找相邻的重复元素
1 //常用算法 adjacent_find 2 //查找相邻的重复元素 3 #include<iostream> 4 #include<string> 5 #include& ...
- 新博客 VuejsDev.com 用于梳理知识点
新博客 VuejsDev.com 用于梳理知识点 https://www.vuejsdev.com/ 后期没有精力发布了,迁移到博客园了,防止服务器到期~ [VueJsDev] 目录列表 https: ...
- Python 动态网页Fetch/XHR爬虫——以获取NBA球员信息为例
Python 动态网页Fetch/XHR爬虫--以获取NBA球员信息为例 动态网页抓取信息,一般利用F12开发者工具-网络-Fetch/XHR获取信息,实现难点有: 动态网页的加载方式 获取请求Url ...