KingbaseES V8R3 由于修改系统时间导致sys_rman备份故障案例

案例说明:

此案例,为复现“current time may be rewound”错误。对于数据库环境,在使用前必须保证系统时间的正确性。如果数据库创建后,再将系统时间修改为创建数据库之前的时间,在运行过程中将有可能导致新老事务判断及事务一致性出现问题,比如Oracle数据库事务的scn是和当前的timestamp有关联的。

数据库版本:

test=# select version();
                                                         version                                                
----------------------------------------------------------------------------------------------------------
 Kingbase V008R003C002B0290 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 row)

1、当前系统时间

[kingbase@node1 bin]$ date
Fri May 13 10:23:31 CST 2022

2、初始化实例

[kingbase@node1 bin]$ ./initdb -U system -W 123456  --case-insensitive -D /data/kingbase/v8r3_290/data1
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.

.......
Success. You can now start the database server using:

    ./sys_ctl -D /data/kingbase/v8r3_290/data1 -l logfile start

3、查看数据库创建时间

1)查看controlfile中systemID

[kingbase@node1 bin]$ ./sys_controldata -D /data/kingbase/v8r3_290/data1
sys_control version number:            830
Catalog version number:               201608131
Database system identifier:           7097041251382751474
Database cluster state:               shut down
sys_control last modified:             Fri 13 May 2022 10:24:52 AM CST
Latest checkpoint location:           0/1B231E8
Prior checkpoint location:            0/1AE2720
Latest checkpoint's REDO location:    0/1B231E8
Latest checkpoint's REDO WAL file:    000000010000000000000001
.......

2)查看数据库创建时间

[kingbase@node1 bin]$ ./ksql -U system -W 123456 test
ksql (V008R003C002B0290)
Type "help" for help.

test=# select to_timestamp(((7097041251382751474>>32) &(2^32 -1)::bigint));
    to_timestamp     
---------------------
 2022-05-13 02:24:42
(1 row)

4、修改数据库时间(修改后时间早于数据库创建时间)

[root@node1 ~]# date 051010102022
Tue May 10 10:10:00 CST 2022
[root@node1 ~]# date
Tue May 10 10:10:04 CST 2022

[kingbase@node1 bin]$ ./ksql -U system -W 123456 test
ksql (V008R003C002B0290)
Type "help" for help.

test=# select now();
              now              
-------------------------------
 2022-05-10 10:10:24.956613+08
(1 row)

5、执行sys_rman备份

1)sys_rman初始化

[kingbase@node1 bin]$ ./sys_rman init -h 127.0.0.1 -U system -p 54321 -d test -B /data/kingbase/v8r3_290/db_bk -D /data/kingbase/v8r3_290/data1
Password for user system: 

[kingbase@node1 bin]$ ls -lh /data/kingbase/v8r3_290/db_bk/
total 4.0K
drwx------ 2 kingbase kingbase  6 May 10 10:24 backups
-rw-rw-r-- 1 kingbase kingbase 41 May 10 10:24 sys_rman.conf
lrwxrwxrwx 1 kingbase kingbase 31 May 10 10:24 wal -> /data/kingbase/v8r3_290/archive

2)执行数据库全量备份

=== 出现“current time may be rewound”错误。===

[kingbase@node1 bin]$ ./sys_rman backup -b full -U system -d test -B /data/kingbase/v8r3_290/db_bk -D /data/kingbase/v8r3_290/data1
Password for user system: 
ERROR: current time may be rewound. Please retry with full backup mode.

6、解决方案

1)对数据库通过sys_dmp备份

[kingbase@node1 bin]$ date
Tue May 10 10:17:24 CST 2022

[kingbase@node1 bin]$ ./sys_dump -U system -W 123456 test -f ~/db.sql

2)重新初始化实例

[kingbase@node1 bin]$ ./initdb -U system -W 123456 --case-insensitive -D /data/kingbase/v8r3_290/data2
......
load security database ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    ./sys_ctl -D /data/kingbase/v8r3_290/data2 -l logfile start

3)配置归档并启动新实例

[kingbase@node1 data2]$ cat kingbase.conf |grep -i archive_
archive_mode = on               # enables archiving; off, on, or always
archive_command = 'test ! -f  /data/kingbase/v8r3_290/archive/%f && cp %p /data/kingbase/v8r3_290/archive/%f'    # command to use to archive a logfile segment
archive_dest = '/data/kingbase/v8r3_290/archive'                # set archive logfile dest absolute path
                                # ! waring: if set archive_dest,  ignore archive_command.
#archive_timeout = 0            # force a logfile segment switch after this

# 启动实例
[kingbase@node1 bin]$ ./sys_ctl -D /data/kingbase/v8r3_290/data2 start

4)将原库备份导入新实例

[kingbase@node1 bin]$ ./ksql -U system -W 123456 test < ~/db.sql
SET
SET
SET
SET
SET
   set_config    
-----------------
 "$USER", PUBLIC
(1 row)

SET
SET
SET
COMMENT
COPY 0
COPY 0

5)执行sys_rman备份

# sys_rman 初始化
[kingbase@node1 bin]$  ./sys_rman init -h 127.0.0.1 -U system -p 54321 -d test -B /data/kingbase/v8r3_290/db_bk -D /data/kingbase/v8r3_290/data2
Password for user system: 

# sys_rman执行全备
[kingbase@node1 bin]$ ./sys_rman backup -b full -U system -d test -B /data/kingbase/v8r3_290/db_bk -D /data/kingbase/v8r3_290/data2
Password for user system: 

INFO: validate: RBNB3P backup and archive log files by CRC

6)查看备份信息

[kingbase@node1 bin]$ ./sys_rman show -b full -U system -d test -B /data/kingbase/v8r3_290/db_bk 
==========================================================================================================
ID       Recovery time        Mode          Current/Parent TLI  Time            Data  start_lsn  stop_lsn Status  
==========================================================================================================
RBNB3P   2022-05-10 10:38:53  FULL           1 / 0              328s          69MB  0/2000028  0/2000130  OK 
[kingbase@node1 bin]$ ./sys_rman validate -b full -U system -d test -B /data/kingbase/v8r3_290/db_bk 
INFO: validate: RBNB3P backup and archive log files by CRC
INFO: backup validation completed successfully
[kingbase@node1 bin]$ ./sys_rman show -b full -U system -d test -B /data/kingbase/v8r3_290/db_bk 
==========================================================================================================
ID       Recovery time        Mode          Current/Parent TLI  Time            Data  start_lsn  stop_lsn Status  
==========================================================================================================
RBNB3P   2022-05-10 10:38:53  FULL           1 / 0              328s          69MB  0/2000028  0/2000130  OK

=== 如上所示,sys_rman备份问题解决。====

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KingbaseES V8是一种基于开源PostgreSQL数据库的企业级数据库管理系统。它被开发为一个高度可扩展和安全的解决方案,适用于各种规模的企业数据处理需求。 KingbaseES V8数据库技术白皮书详细介绍了该数据库系统的特点和优势。下面是一些关键内容: 1. 安全性:KingbaseES V8采用了严格的安全机制来保护数据的机密性和完整性。它支持数据加密、访问控制和安全审计等功能,确保敏感数据不会被未经授权的人员访问。 2. 高可靠性:KingbaseES V8通过提供数据库事务和持久性来确保数据的可靠性。它支持ACID(原子性、一致性、隔离性和持久性)属性,使得数据库在发生故障或中断时能够进行恢复并保持数据的一致性。 3. 高扩展性:KingbaseES V8支持水平和垂直扩展,可以根据业务需求进行灵活的扩展。它能够处理大规模的数据存储和查询,并提供了分布式数据库和集群部署选项。 4. 大数据处理:KingbaseES V8具备处理大数据的能力,通过支持多种数据压缩和索引技术来提高数据存储和查询的效率。同时,它还提供了强大的数据备份和恢复机制,确保在数据发生意外故障时能够及时进行数据恢复。 5. 兼容性:KingbaseES V8与主流数据库标准兼容,可以实现与Oracle、SQL Server等数据库的互通和迁移。这样一来,企业在将原有数据库迁移到KingbaseES V8上时,可以事半功倍地减少迁移成本和风险。 总的来说,KingbaseES V8数据库技术白皮书详细介绍了其作为一种可靠、高效和安全的企业级数据库管理系统的优势和功能。这些特点使得KingbaseES V8成为适用于各种企业规模和数据处理需求的理想选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值