有些操作系统有文件大小的限制,当使用gs_dump对大型数据库进行导出时,可能会出现文件写入溢出问题。由于gs_dump可以将数据导出到标准输出,所以我们可以用标准的Linux工具绕开此问题。
一. 使用压缩工具进行转储,比如gzip
以gaussdba用户身份登录GaussDB服务器。在命令终端中执行如下命令进行转储压缩。 gs_dump dbname | gzip > filename.gz 恢复过程如下,首先从模板数据库中创建数据库。 gsql -d postgres CREATE DATABASE dbname TEMPLATE template0; 从压缩过的转储文件进行恢复。 gunzip -c filename.gz | gsql dbname或者:
cat filename.gz | gunzip | gsql dbname二. 使用split工具进行转储压缩
split 允许用下面的方法把输出分解成操作系统可以接受的大小。
示例:设置每个块大小为 1MB。
以gaussdba用户身份登录GaussDB服务器。在命令终端中执行如下命令对转储文件进行分割。
gs_dump dbname | split -b 1m - filename 恢复过程如下,首先从模板数据库中创建数据库。 gsql -d postgres CREATE DATABASE dbname TEMPLATE template0; 从压缩过的转储文件进行恢复。 cat filename* | gsql dbname说明: 对于非常大型的数据库,结合多种方法进行备份是一种非常高效的策略 (例如 gs_rman)。