数据库备份与恢复 ====================== 这里我们使用 openGauss 内置的备份与恢复工具: ``gs_dump`` 和 ``gs_restore`` 。 PostgreSQL 可以使用 ``pg_dump`` 和 ``pg_restore`` 工具来进行备份和恢复。 备份 ---- ``gs_dump`` 用法: .. code:: sh gs_dump [OPTION]... [DBNAME] 以下是一些常用的选项: - ``-f``: 输出的文件名或者目录名 - ``-F``: 输出的文件格式 ``c``: 自定义格式 ``d``:目录格式 ``t``: tar 格式 ``p``:简单文本模式(默认格式) - ``-Z``: 压缩文件的压缩等级,范围为 0-9 - ``-t``: 只备份数据库中的某一张表 - ``-T``: 备份除这个表之外的其余表 在 yukontutorial 数据库中创建一个 backtest 的表,然后进行备份: .. code:: SQL -- 创建 backtest 表 CREATE TABLE backtest(geom geometry); -- 插入数据 INSERT INTO backtest(geom) values('Point(1 2)'); -- 查看插入的数据 SELECT ST_ASTEXT(geom) from backtest; 创建好数据就可以来备份数据了,退出数据库然后在命令行执行: .. code:: sh # 这里只备份 yukontutorial 数据库中的 backtest 表,输出格式为自定义格式,输出文件名为 testdump.bak gs_dump yukontutorial -t backtest -Fc -f testdump.bak 显示如下信息,则表示备份成功: .. code:: text 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`` 用法: .. code:: sh gs_restore [OPTION]... FILE 以下是一些常用的选项: - ``-d``: 数据库 - ``-j``: 多线程恢复 使用上面备份的数据表进行还原: .. code:: SQL -- 先创建一个新的数据库 CREATE DATABASE restoretest; -- 切换到这个数据库 restoretest -- 创建 postgis 扩展 CREATE EXTENSION postgis; 断开连接进行还原 .. code:: sh gs_restore -d restoretest testdump.bak 显示如下信息,则表示还原成功: .. code:: text 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 扩展,才能恢复数据库,否则将会报错。