炫“库”行动-人大金仓有奖征文-数据库的备份及恢复

    计算机系统在运行过程中可能会发生内部故障、系统故障、硬件故障等问题。这些问题可能会造成系统崩溃,数据库运行事务非正常中断,部分数据丢失等一系列严重后果。因此,对生产数据库、容灾数据库、测试数据库等重要数据有策略性的进行备份和恢复,是加强系统整体数据的完整性、可用性,提高整体的运维水平的重要手段。备份和恢复技术是数据库管理系统的一个重要组成部分,对系统的可靠性起着决定性作用。

数据库的逻辑备份

金仓数据库的逻辑备份可以使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值