KingbaseES逻辑备份还原工具提供了数据库对象一级的联机备份还原功能,备份对象包括:
数据库
模式
表
视图
约束
权限
触发器
函数
序列
逻辑备份的输出格式包括:
二进制
SQL脚本
此外,针对表数据,还支持多种格式的导出:
CSV
JSON
HTML
从而帮助用户可灵活调整、实施数据的备份计划。 在使用KingbaseES的备份、恢复功能时,需要注意:不建议在启用了“兼容异构数据库大小写不敏感”特性的数据库与没有启用“兼容异构数据库大小写不敏感”特性的数据库之间进行备份、恢复。
使用sys_dump进行备份
sys_dump 常用参数如下
-U username --username=username #要作为哪个用户连接。
-f file --file=file #将输出传输到指定文件。对于基于输出格式的文件这个参数可以被忽略,在那种情况下将使用标准输出。不过对于目录输出格式必须给定这个参数,在目录输出格式中指定的是一个目录而不是一个文件。在这种情况中,该目录会由sys_dump创建并且不需要以前就存在。不支持多个输出文件。
-F format --format=format #一次备份只可选择其中一种输出的格式。format可以是下列之一:
p plain #输出一个纯文本形式的SQL脚本文件(默认值)。
c custom #输出一个适合于作为sys_restore输入的自定义格式归档。和目录输出格式一起,这是最灵活的输出格式,它允许在恢复时手动选择和排序已备份的项。这种格式在默认情况还会被压缩。
d directory #输出一个适合作为sys_restore输入的目录格式归档。这将创建一个目录,其中每个被备份的表和对象都有一个文件,外加一个目录文件,该文件以一种sys_restore能读取的机器可读格式描述被备份的对象。一个目录格式归档能用标准Unix工具操纵,例如一个未压缩归档中的文件可以使用gzip工具压缩。这种格式默认情况下是被压缩的并且也支持并行备份。
t tar 输出一个适合于输入到sys_restore中的 tar 格式归档。tar格式可以兼容目录格式,抽取一个tar格式的归档会产生一个合法的目录格式归档。不过,tar格式不支持压缩。还有,在使用tar格式时,表数据项的相对顺序不能在恢复过程中被更改。
-d dbname --dbname=dbname #指定要连接到的数据库名。这等效于指定dbname为命令行上的第一个非选项参数。如果这个参数包含一个=符号或者以一个合法的URI前缀(kingbase://或kingbase://)开始,它将被视作一个conninfo字符串。
-h host --host=host #指定服务器正在运行的机器的主机名。如果该值开始于一个斜线,它被用作一个Unix域套接字的目录。
-p port --port=port #指定服务器正在监听连接的TCP端口或本地Unix域套接字文件扩展名。默认使用编译在程序中的默认值。
-E encoding --encoding=encoding #以指定的字符集编码创建备份。在默认情况下,该备份会以该数据库的编码创建。
-n schema --schema=schema #只备份匹配schema的模式,这会选择模式本身以及它所包含的所有对象。当没有指定这个选项时,目标数据库中所有非系统模式都将被备份。多个模式可以通过书写多个-n开关来选择。另外,schema参数可以被解释为一种根据ksql's \d命令所用的相同规则(见 模式(Pattern) )编写的模式,这样多个模式也可以通过在该模式中书写通配字符来选择。在使用通配符时,如果需要阻止 shell 展开通配符需要小心引用该模式,见 实例。
-N schema --exclude-schema=schema #不备份匹配schema模式的任何模式。该模式被根据-n所用的相同规则被解释。-N可以被给定多次来排除匹配几个模式中任意一个的模式。当-n和-N都被给定时,该行为是只备份匹配至少一个-n开关但是不匹配-N开关的模式。如果只有-N而没有-n,那么匹配-N的模式会被从一个正常备份中排除。
-s --schema-only #只备份对象定义(模式),而非数据。这个选项是--data-only的逆选项。它和指定--section=pre-data --section=post-data相似,但是由于历史原因又不完全相同。(不要把这个选项和--schema选项混淆,后者在"schema"的使用上有不同的含义)。要为数据库中表的一个子集排除表数据,见--exclude-table-data。
-t table --table=table #只备份名字匹配table的表,"table"还可以包括视图、物化视图、序列和外部表。通过写多个-t开关可以选择多个表。另外,table参数可以被解释为一种根据ksql's \d命令所用的相同规则(见 模式(Pattern) )编写的模式,这样多个表也可以通过在该模式中书写通配字符来选择。在使用通配符时,如果需要阻止shell展开通配符需要小心引用该模式,见 实例_ 。当-t被使用时,-n和-N开关不会有效果,因为被-t选择的表将被备份而无视那些开关,并且非表对象将不会被备份。
-T table --exclude-table=table #不备份匹配table模式的任何表。该模式被根据-t所用的相同规则被解释。-T可以被给定多次来排除匹配几个模式中任意一个的模式。当-t和-T都被给定时,该行为是只备份匹配至少一个-t开关但是不匹配-T开关的表。如果只有-T而没有-t,那么匹配-T的表会被从一个正常备份中排除。
- -t开关的行为不完全向前兼容V8之前的KingbaseES版本。以前,写-t tab将备份所有命名为tab的表,但现在它仅仅备份在你默认搜索路径中可见的那一个。要得到旧的行为,可以写成-t ‘*.tab’。还有,必须写类似-t sch.tab的东西来选择一个特定模式中的一个表,而不是用老的惯用语-n sch -t tab。
- 若指定给了-t,就忽略-n。若-t、 -n都没有指定,就备份所有对象。
- 在大小写敏感的数据库里,在备份小写的表名/模式名对象或者表名中有特殊字符时,表名/模式名应该用单引号括起来。例如:表t可以写成"t"或"T",但表"t"应写成’“t”’;有特殊字符的表"t.t"应写成’“t.t”’;表"sc"."t.t"应写成’“sc”’.’“t.t”’。
更多详细参数请参考官方文档:sys_dump备份工具
备份二进制文件:
#备份TEST库
/home/kingbase/ES/V8/Server/bin/sys_dump -U username -F c -f /home/kingbase/test.dmp TEST
#备份TEST库下的test模式
/home/kingbase/ES/V8/Server/bin/sys_dump -U username -F c -n test -f /home/kingbase/test.dmp TEST
#备份TEST库下的test模式的test表
/home/kingbase/ES/V8/Server/bin/sys_dump -U username -F c -t test.test -f /home/kingbase/test.dmp TEST
备份sql文件:
#备份TEST库
/home/kingbase/ES/V8/Server/bin/sys_dump -U username -F p -f /home/kingbase/test.sql TEST
#备份TEST库下的test模式??
/home/kingbase/ES/V8/Server/bin/sys_dump -U username -F p -n test -f /home/kingbase/test.sql TEST
#备份TEST库下的test模式的test表?
/home/kingbase/ES/V8/Server/bin/sys_dump -U username -F p -t test.test -f /home/kingbase/test.sql TEST
数据库还原
还原DMP(二进制)文件。
#还原TEST库
/home/kingbase/ES/V8/Server/bin/sys_restore -U username -d TEST /home/kingbase/test.dmp
#还原TEST库下的test模式
/home/kingbase/ES/V8/Server/bin/sys_restore -U username -n test -d TEST /home/kingbase/test.dmp
#还原TEST库下的test模式的test表
/home/kingbase/ES/V8/Server/bin/sys_restore -U username -t test.test -d TEST /home/kingbase/test.dmp
还原SQL文件
#还原TEST库
/home/kingbase/ES/V8/Server/bin/sys_restore -U username -d TEST /home/kingbase/test.sql
#还原TEST库下的test模式
/home/kingbase/ES/V8/Server/bin/sys_restore -U username -n test -d TEST /home/kingbase/test.sql
#还原TEST库下的test模式的test表
/home/kingbase/ES/V8/Server/bin/sys_restore -U username -t test.test -d TEST /home/kingbase/test.sql
还原sql文件(R3下可用)
ksql -U username -f /home/kingbase/test.sql -d TEST
- 1