PostGRESQL迁移到HighgoDB--数据库备份

一:数据备份

点击Windows键,输入cmd,单机打开命令提示符,进入postGRESQL安装目录中的bin文件夹下,执行如下命令:

导出某个数据库的的数据,例如导出test数据库

pg_dump --host 27.128.187.60(IP) --port 62223(端口) --username "ssta"(用户名) --format custom --file "backup.dmp"(备份文件) "test"(数据库名)

如需导出多个数据库的数据,修改数据库名,多次导出多个库。也可以使用pg_dumpall的方式,将所有数据全部导出。

注:不建议使用pg_dumpall,因为该方式只能导出SQL文本,恢复及其耗时。

另外:--format=format
选择输出的格式。format可以是下列之一:

p
输出纯文本SQL脚本文件(缺省) 

t
输出适合输入到 pg_restore 里的tar归档文件。 使用这个归档允许在恢复数据库时重新排序和/或把数据库对象排除在外。 同时也可能可以在恢复的时候限制对哪些数据进行恢复。 

c
输出适于给 pg_restore 用的客户化归档。 这是最灵活的格式,它允许对装载的数据和对象定义进行重新排列。 这个格式缺省的时候是压缩的。

我选择的方式(pg_dump --host 27.128.187.60 --port 62223 --username "ssta" --format p --file "item/ssta8.dmp" "SSTA")

优点:输出的事纯文本的SQL脚本文件,无乱码(中文除外),便于排错,有利于检查备份数据的正确性,完整性。

缺点:及其耗时,以备份SSTA这个数据库为例,至少需要两个小时的时间。备份出来的文件及其庞大,再以备份SSTA这个数据库为例,备份出来的文件大约4000000K,约4G多。而以—format custom压缩格式输出的备份文件大约470000K,仅为50M左右,但是因为备份过程中有表结构或者数据有问题,一直报错,无法正确恢复数据,而且压缩格式的文本输出没有可读性,所以选择了—format P 格式输出。

遇到的问题:

1、备份耗时太长。尽量选择压缩格式输出备份文件。

2、如果备份过程中有pg_dump: 如此日志输出,说明备份过程中有错误,此时只能选择纯文本的格式输出,可以具体看出是哪个备份那个表报的错误。然后单独导出这个表的结构和数据,删除表,然后在进行备份数据库的操作,后续再加上此表。

二:数据恢复

将上面备份好的数据文件拷贝到highgoDB安装目录中的bin文件夹下,或者放在其他已知目录中。

打开hgdbadmin,利用highgoDB图形化界面创建SSTA数据库,另外创建对应的用户。创建和之前SSTA数据库一样的环境。

点击Windows键,输入cmd,单机打开命令提示符,进入highgoDB安装目录中的bin文件夹下,执行如下命令:

pg_restore -h localhost(IP) -p 5866(端口)-U ssta(用户名) -d SSTA(数据库名) --create --verbose --format custom " backup.dmp"(备份文件)

--create
在恢复数据库之前先创建它。(如果出现了这个选项,和 -d 在一起的数据库名只是用于最初的CREATE DATABASE命令。 所有数据都恢复到名字出现在归档中的数据库中去。)

--verbose
声明冗余模式。

恢复数据比备份数据要容易一些,一般来说备份数据不报错,完整备份下来的话,恢复数据基本上没有问题。

注:上面备份数据说过,两个输出格式的备份方法,一种是—format custom以缺省压缩格式输出,一种是—format P以纯文件数据库脚本输出。在恢复数据时,两种不同的输出格式,也要对应不同的恢复命令。

--format custom格式输出时:

pg_restore -h localhost -p 5866 -U ssta -d SSTA --create --verbose --format custom " backup.dmp "

--format P 格式输出时:

psql -h localhost -p 5866 -U ssta -d SSTA -W -f "ssta2.dmp"

猜你喜欢

转载自www.cnblogs.com/loess/p/10751139.html