数据库备份与恢复

这里我们使用 openGauss 内置的备份与恢复工具: gs_dumpgs_restore

PostgreSQL 可以使用 pg_dumppg_restore 工具来进行备份和恢复。

备份

gs_dump 用法:

gs_dump [OPTION]... [DBNAME]

以下是一些常用的选项:

  • -f: 输出的文件名或者目录名

  • -F: 输出的文件格式 c: 自定义格式 d:目录格式 t: tar 格式 p:简单文本模式(默认格式)

  • -Z: 压缩文件的压缩等级,范围为 0-9

  • -t: 只备份数据库中的某一张表

  • -T: 备份除这个表之外的其余表

在 yukontutorial 数据库中创建一个 backtest 的表,然后进行备份:

-- 创建 backtest 表
CREATE TABLE backtest(geom geometry);
-- 插入数据
INSERT INTO backtest(geom) values('Point(1 2)');
-- 查看插入的数据
SELECT ST_ASTEXT(geom) from backtest;

创建好数据就可以来备份数据了,退出数据库然后在命令行执行:

# 这里只备份 yukontutorial 数据库中的 backtest 表,输出格式为自定义格式,输出文件名为 testdump.bak
gs_dump  yukontutorial -t backtest -Fc -f testdump.bak

显示如下信息,则表示备份成功:

gs_dump[port='5432'][yukontutorial][2021-10-19 04:05:43]: The total objects number is 379.
gs_dump[port='5432'][yukontutorial][2021-10-19 04:05:43]: [100.00%] 379 objects have been dumped.
gs_dump[port='5432'][yukontutorial][2021-10-19 04:05:43]: dump database yukontutorial successfully
gs_dump[port='5432'][yukontutorial][2021-10-19 04:05:43]: total time: 517  ms

恢复

gs_restore 用法:

gs_restore [OPTION]... FILE

以下是一些常用的选项:

  • -d: 数据库

  • -j: 多线程恢复

使用上面备份的数据表进行还原:

-- 先创建一个新的数据库
CREATE DATABASE restoretest;

-- 切换到这个数据库 restoretest
-- 创建 postgis 扩展
CREATE EXTENSION postgis;

断开连接进行还原

gs_restore -d restoretest testdump.bak

显示如下信息,则表示还原成功:

start restore operation ...
table backtest complete data imported !
Finish reading 4 SQL statements!
end restore operation ...
restore operation successful
total time: 427  ms

Warning

因为备份的数据库中含有 geometry 类型的数据,因此在还原的时候要先创建 postgis 扩展,才能恢复数据库,否则将会报错。