记一次linux系统 postgresql 数据库备份和恢复

记一次linux系统 postgresql 数据库备份和恢复

需求: 将数据从服务器A(151) -> 转移到服务器B (152)

其中包括地理数据,时序数据库等

1. 首先是备份151上的数据:
①普通地理数据
    -- 如果是全部的数据:
    pg_dump  -U user -d abc > /home/dump/150.bak

    user : 数据库登录用户名
    abc : 数据库名
    /home/dump/150.bak : 备份的路径

    -- 如果是部分表要加上 -t ,每张表前都要加:
    pg_dump -U user -d abc -t table1 -t table2 > /home/dump/151.bak

    table1, table2 : 表名
②时序数据
 	通常时序数据文件较大,这里可以指定备份格式为blob
 	pg_dump -U user -d abc -t table1 -t table2 --format=c --blobs  > /home/dump/tsdb.bak


注:有时在备份时,会出现找不到表的情况,但明明数据中存在该表,这是可以把schema前缀加上就可以了,
		我这里是tsdb    例: -t tsdb.table1 等 ,           或者也可以在pgadmin中配置该数据库的searchPath路径,
		 将tsdb加进去,数据就会自动查找该schema下的表了
   
      如果只想拷贝数据: 加上-a参数即可
2. 将备份数据转移到152上:
利用scp(secure copy)命令, 远程拷贝用的:
在151上执行:
scp /home/dump/150.bak > root@ip:/home/dump
root: 是152服务器用户名
ip: 152服务器ip
/home/dump: 文件存在152服务器上的位置

执行之后需要输入用户 root 的密码

3. 恢复数据
登录到152服务器:

执行:
ll /home/dump
这时会发现151.bak和tsdb.bak文件已经存在了

接下执行恢复语句:
   恢复普通表:psql -U user -d abc < /home/dump/151.bak
   恢复时序表:pg_restore -Fc --disable-triggers -U sde -d zjpdm < /home/dump/tsdb.bak

执行之后需要输入密码,这里的密码是数据库用户 user 的密码
   
注: 这里需要注意的是 psql和pg_restore区别:
	备份时如果没有指定备份文件的格式,默认是sql,直接可以用psql恢复没有问题
	如果备份时指定了备份文件的格式,则恢复时使用pg_restore, 还需要指定格式
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值