南大通用GBase 8a单机由于事务日志translog损坏导致无法启动的分析和处理

GBase 8a单机,其事务是记录在事务日志translog里的,如果因某些原因出现损坏。而在数据库启动时,会尝试redo, 而此时translog日志损坏,导致卡住或报错。删除日志文件后,可以正常启动。

GBase 8a单机因为不涉及到MPP,在早期版本的事务支持就比集群略好一些,且当时的版本没有做到很好的保护,如果进程或服务器意外宕机、重启、磁盘空间满或断电等情况发生,可能导致事务日志有部分内容没有刷到磁盘,由于事务日志translog损坏导致无法启动的分析和处理。

现象

数据库system,log里在启动时,出现redo操作信息,包含flush刷新信息,但一直没有完成。

解决方案

停掉进程,然后将事务日志删除或挪走,然后再重启服务。

建议现场,除非硬件故障,断电等情况,否则重启时,一定先停掉数据库服务,然后再重启reboot。

事务日志位置

安装目录/server/translog/tranalog, 同时会出现一个flush字样的文件。

更多单机内容,请参考 http://www.gbase8.cn/tag/%e5%8d%95%e6%9c%ba%e7%89%88

单机事务介绍

默认是不开启事务的,其translog大小也一直是0. 数据库参数也是不使用。

gbase> show variables like '%tx%';
+-------------------------+-------------------------------------+
| Variable_name           | Value                               |
+-------------------------+-------------------------------------+
| gbase_tx_log_dir        | /home/gbase8/GBase/server/translog/ |
| gbase_tx_log_flush_time | 90.000000                           |
| gbase_tx_log_mode       | NO_USE,NO_STANDARD_TRANS            |
| tx_isolation            | REPEATABLE-READ                     |
+-------------------------+-------------------------------------+
4 rows in set (Elapsed: 00:00:00.00)
gbase> ^CAborted
[gbase8@gbase8a ~]$ cd GBase
[gbase8@gbase8a GBase]$ ll
total 8
drwxrwxr-x 2 gbase8 gbase8   56 Sep  4 05:54 config
drwxrwxr-x 2 gbase8 gbase8    6 Sep  4 05:54 docs
drwxrwxr-x 2 gbase8 gbase8  101 Sep  4 05:54 install_config
drwxrwxr-x 3 gbase8 gbase8   37 Sep  4 05:54 install_templet
-rw-r--r-- 1 gbase8 gbase8 3351 Sep  4 05:54 license.txt
drwxrwxr-x 3 gbase8 gbase8   21 Sep  4 05:54 log
drwxrwxr-x 2 gbase8 gbase8    6 Sep  4 05:54 misc
-rw-rw-r-- 1 gbase8 gbase8  446 Sep  4 05:54 readme.txt
drwxrwxr-x 7 gbase8 gbase8   72 Sep  4 05:54 server
drwxrwxr-x 4 gbase8 gbase8   49 Sep  4 05:54 tmpdata
drwxrwxr-x 3 gbase8 gbase8   21 Sep  4 05:54 userdata
[gbase8@gbase8a GBase]$ cd server/
[gbase8@gbase8a server]$ ll
total 4
drwxrwxr-x 4 gbase8 gbase8 4096 Sep  4 05:54 bin
drwxrwxr-x 3 gbase8 gbase8   19 Sep  4 05:54 include
drwxrwxr-x 3 gbase8 gbase8   19 Sep  4 05:54 lib
drwxrwxr-x 4 gbase8 gbase8   35 Sep  4 05:54 share
drwx------ 2 gbase8 gbase8   22 Sep  4 05:54 translog
[gbase8@gbase8a server]$ cd translog/
[gbase8@gbase8a translog]$ ll
total 0
-rw------- 1 gbase8 gbase8 0 Sep  4 05:54 translog
[gbase8@gbase8a translog]$

开启事务

增加或修改配置参数,然后重启服务

gbase_tx_log_mode=USE,STANDARD_TRANS
GBase 8a 单机 translog 事务 启动 gbase_tx_log_mode=USE,STANDARD_TRANS
[gbase8@gbase8a config]$ vi gbase_8a_gbase8a.cnf
[gbase8@gbase8a config]$ gbase.server restart
Shutting down GBase.... SUCCESS!
Starting GBase. SUCCESS!
[gbase8@gbase8a config]$ gbase

GBase client Free Edition 8.6.2.43-R7-free.110605. Copyright (c) 2004-2020, GBase.  All Rights Reserved.

gbase> show variables like '%tx%';
+-------------------------+-------------------------------------+
| Variable_name           | Value                               |
+-------------------------+-------------------------------------+
| gbase_tx_log_dir        | /home/gbase8/GBase/server/translog/ |
| gbase_tx_log_flush_time | 90.000000                           |
| gbase_tx_log_mode       | USE,STANDARD_TRANS                  |
| tx_isolation            | REPEATABLE-READ                     |
+-------------------------+-------------------------------------+
4 rows in set (Elapsed: 00:00:00.00)

gbase> ^CAborted

查看translog,已经开始使用了。

[gbase8@gbase8a GBase]$ cd server/translog/
[gbase8@gbase8a translog]$ ll
total 4
-rw------- 1 gbase8 gbase8 4 Sep  4 06:38 translog
[gbase8@gbase8a translog]$ cat translog
[gbase8@gbase8a translog]$ xxd translog
0000000: 0000 0000                                ....
[gbase8@gbase8a translog]$ 

官方论坛 http://www.gbase8a.com/forum.php