计算机系统在运行过程中可能会发生内部故障、系统故障、硬件故障等问题。这些问题可能会造成系统崩溃,数据库运行事务非正常中断,部分数据丢失等一系列严重后果。因此,对生产数据库、容灾数据库、测试数据库等重要数据有策略性的进行备份和恢复,是加强系统整体数据的完整性、可用性,提高整体的运维水平的重要手段。备份和恢复技术是数据库管理系统的一个重要组成部分,对系统的可靠性起着决定性作用。
数据库的逻辑备份
金仓数据库的逻辑备份可以使用copy、sys_dump、sys_dumpall三个命令。命令不同导出的文件也不相同,恢复方式也有差异。copy可以将数据库中的表数据导出成纯文本的txt格式和csv格式。sys_dump命令可以将数据库的数据导出成sql脚本文件、目录及文件结构和tar格式的文件。sys_dumpall用于将一个数据库集簇导出到sql脚本文件中。
copy命令:
COPY table_name [ ( column_name [, ...] ) ]
FROM { 'filename' | PROGRAM 'command' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
示例:
导出dept表的数据:
TEST=# \copy dept to '/dbdata/backup/dept1.txt' ;
TEST=# \copy dept to '/dbdata/backup/dept1.csv' csv ;
导入dept表的数据
TEST=# \copy temp from '/dbdata/backup/dept1.txt';
TEST=# \copy temp from '/dbdata/backup/dept1.csv' csv;
sys_dump命令:
sys_dump [选项]... [数据库名字]
选项:
-f, --file=FILENAME 输出文件或目录名
-F, --format=c|d|t|p 输出文件格式 (定制, 目录, tar)
明文 (默认值))
-j, --jobs=NUM 执行多个并行任务进行备份转储工作
-a, --data-only 只转储数据,不包括模式
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-C, --create 在转储中包括命令,以便创建数据库
-n, --schema=SCHEMA 只转储指定名称的模式
-N, --exclude-schema=SCHEMA 不转储已命名的模式
-s, --schema-only 只转储模式, 不包括数据
-t, --table=TABLE 只转储指定名称的表
-T, --exclude-table=TABLE 不转储指定名称的表
-x, --no-privileges 不要转储权限 (grant/revoke)
--exclude-table-data=TABLE 不转储指定名称的表中的数据
--if-exists 当删除对象时使用IF EXISTS
--inserts 以INSERT命令,而不是COPY命令的形式转储数据
--no-unlogged-table-data 不转储没有日志的表数据
联接选项:
-d, --dbname=DBNAME 对数据库 DBNAME备份
-h, --host=主机名 数据库服务器的主机名或套接字目录
-p, --port=端口号 数据库服务器的端口号
-U, --username=名字 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password password
--role=ROLENAME 在转储前运行SET ROLE
示例:
导出TEST数据库生成sql脚本文件
sys_dump -USYSTEM -W123456 -dTEST -Fp -f /dbdata/backup/TEST1.sql
导出TEST数据库生成dmp存档文件
sys_dump -USYSTEM -W123456 -dTEST -Fc -f /dbdata/backup/TEST2.dmp
导出TEST数据库生成目录及结构文件
sys_dump -USYSTEM -W123456 -dTEST -Fd -f /dbdata/backup/TEST3.dir
导出TEST数据库生成tar存档文件
sys_dump -USYSTEM -W123456 -dTEST -Ft -f /dbdata/backup/TEST4.tar
sys_dumpall命令:
sys_dumpall [选项]...
选项:
-f, --file=FILENAME 输出文件名
-a, --data-only 只转储数据,不包括模式
-c, --clean 在重新创建数据库前先清除(删除)数据库
-g, --globals-only 只转储全局对象, 不包括数据库
-O, --no-owner 不恢复对象所属者
-r, --roles-only 只转储角色,不包括数据库或表空间
-s, --schema-only 只转储模式, 不包括数据
-t, --tablespaces-only 只转储表空间,而不转储数据库或角色
-x, --no-privileges 不要转储权限 (grant/revoke)
--column-inserts 以带有列名的INSERT命令形式转储数据
--if-exists 当删除对象时使用IF EXISTS
--inserts 以INSERT命令,而不是COPY命令的形式转储数据
--no-unlogged-table-data 不转储没有日志的表数据
示例:
导出全局对象:
sys_dumpall -USYSTEM -W123456 -g -f /dbdata/backup/tbs.sql
导出角色信息:
sys_dumpall -USYSTEM -W123456 -c -f /dbdata/backup/role.sql
导出模式定义信息:
sys_dumpall -USYSTEM -W123456 -s -f /dbdata/backup/sch.sql
导出表空间信息:
sys_dumpall -USYSTEM -W123456 -t -f /dbdata/backup/tbs2.sql
逻辑备份恢复:
使用sql脚本文件恢复数据库需使用ksql命令来执行sql命令。
ksql -USYSTEM -W123456 -dTEST -f /dbdata/backup/TEST1.sql
使用sys_dump生成的备份文件还原数据库需使用sys_restore命令进行恢复
sys_restore -USYSTEM -W123456 -dTEST /dbdata/backup/TEST2.dmp
在数据库的逻辑备份中,txt、csv文件格式文件格式简单,能够直接查看数据内容。sql脚本文件有可移植性,所有主要的数据库都支持sql语言。dmp格式文件是二进制文件,数据库恢复时速度快。
数据库的物理备份
Kingbase数据库的物理备份需要先将数据库设置为归档模式,将wal日志进行周期性的存档和备份,再结合全量和增量备份,能够对数据库进行更有效、高效的、安全的保护。
sys_rman:
init,初始化备份目录;
backup, 备份操作;支持在线全量备份、增量备份、归档备份;
restore,还原操作;
show,查看备份集相关信息;
validate, 验证备份信息及有效性;
delete, 删除备份;
retention, 设置备份保留策略;
showdelwal, 查看数据库wal日志信息;
-B, 数据库备份文件的存放目录;
-D,数据库的数据文件所在目录;
-b,指定备份模式,full 全量备份,page 增量备份;
-j, 备份操作执行的并发进程数;
--time,恢复至指定的时间点; .
--xid,恢复至指定的事务;
--t imeline,恢复至指定的时间线;
物理备份:
全量备份
sys_rman -USYSTEM -W123456 -dTEST -b full -C --backup-sys-log -j 2 backup
增量备份
sys_rman -USYSTEM -W123456 -dTEST -b page -C --backup-sys-log -j 2 backup
查看备份信息
sys_rman -USYSTEM -W123456 -dTEST show
恢复:
查看备份集
sys_rman show
恢复至指定的时间点
sys_rman -USYSTEM -W123456 -dTEST --progress --time='2019-12-08' restore
sys_ctl -D /dbdata/data start
恢复至指定备份集
sys_rman -USYSTEM -W123456 -dTEST restore Q277PK -B /dbdata/backup -D /dbdata/data
恢复至指定的事务
sys_rman -USYSTEM -W123456 -dTEST --progress --xid=2045 restore
从时间线恢复数据库
sys_rman -USYSTEM -W123456 -dTEST --progress --timeline=8 restore
在生产环境中,依赖最多的是物理备份。基于时间点的物理备份恢复能够减少极大地数据的丢失。在对数据库进行可能对数据有影响的操作时要检查数据库的备份是否有效。如果,没有有效备份需要先备份再进行操作。有效的数据备份能够极大地减少因网络、系统硬件故障或人为失误造成的损失。一个数据库管理员,要时刻保证数据备份的有效,可用。
【本文正在参与炫“库”行动-人大金仓有奖征文】
活动链接:https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb