数据库备份还原具体操作流程

关键字:

备份还原、sys_dump、sys_restore、人大金仓

1. 备份还原前建议

  • 建议准备两个不同的实例,一个数据库实例用于执行自己的sql用例,另一个实例用于还原,初始化实例的命令如下,以下命令建议在数据库bin目录下执行

./initdb –Usystem –D data_0001 –Atrust –m pg/mysql/oracle

  • 其中trust的意思是执行数据库免密登陆,后面的-m是需要初始化实例的数据库的模式,如果不加-m和数据库模式的名字的话,默认是oracle
  • 实例化完成以后可以登录数据库,执行select version;命令查看。
  • data_0001就是你初始化的一个实例的文件夹的名字,会在执行目录下新建出来

下图为初始化的案例

但是要注意,在初始化成功之后,需要进入实例的文件夹修改kingbase.conf的参数,例如端口号等参数。

2. 执行用例

首先,需要将自己的测试用例,就是自己生成的.sql文件,利用如下命令执行,注意要在bin目录下执行,且.sql文件也建议放在bin目录下。

./ksql –Usystem –W –dtest –p50832 –f test_new.sql

注:(如果不知道怎么生成.sql文件,可以先生成txt文件,然后直接在终端左边的图形化界面改文件后缀,或者下载到windows来改。)

执行成功会见到例如下图中的创建语句的提示。

执行完用例以后,请务必检查执行的过程中有没有报错,如有报错,请调整执行文件重新再一个新的实例跑一遍,或者将原有实例清空跑一遍!

3、执行备份操作

文件执行完成以后,进行下一步备份操作,备份命令如下,注意要在bin目录下执行

这里主要说一下-dtest后面的几个命令是什么意思:

  • -F 是选择输出的格式,例如:-Fc dmp格式 –Fp sql文件格式
  • -f 是将输出发送到指定文件。对于基于输出格式的文件,这个参数可以被忽略,在这种情况下将使用标准输出。但是,对于目录输出格式必须给定这个参数,在目录输出格式中指定的是一个目录而不是一个文件。在这种情况中,该目录会由 sys_dump 创建,并且之前不能存在。
  • test_mysql.dmp是自己将要输出的文件的名字,这个是由自己随便定义的,但是要注意和前面的-Fc规定的格式对上

备份成功不会有成功的提示,只要没有报错,即为备份成功

如果在执行备份操作的时候,出现的如下错误,提示共享内存不足

此时需要去实例下的kingbase.conf参数文件里修改max_locks_per_transaction = 64这个参数,一般将默认的64 修改为128就不会报错了

小技巧:图中被黄色背景选中的per_字符,是一种查找文件中关键字的快捷方法,具体执行流程为

  1. 退出插入或替换模式
  2. 点击”/”
  3. 输入想要快速查询的关键字
  4. 点击回车

如下图所示,此时只需要点击回车就会查询全文中所有涉及到关键字的地方并标黄

4、执行还原操作

执行如下命令:./sys_restore -Usystem -p50832 -dtest3 test_mysql.dmp

其中,.dmp文件就是上一步生成的备份文件,

同样,还原成功也不会有提示,只要不报错即可。

5、确认还原的数据和原数据的一致性

1、执行如下命令:

./ksql -Usystem -p53216 -dtest -a check1.out 2>&1

./ksql -Usystem -p53217 -dtest -a check2.out 2>&1

这两句命令的意思就是将两个实例中的数据都生成出一个预期文件,就是.out文件

  • 其中内部的就是之前执行的.sql文件,check1.out就是即将生成的预期文件
  • 至于后面的2>&1意思就是将前面的.sql文件的输出重定向到.out文件中,同时也会将标准错误也重定向到.out文件中

2、对比.out预期文件,执行如下命令

vimdiff check1.out check2.out

下图即为对比的界面,中间没有内容的话就证明没有差异。