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

编程入门 行业动态 更新时间:2024-10-26 02:30:24

记一次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, 还需要指定格式

更多推荐

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

本文发布于:2023-06-14 05:57:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1444765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:备份   数据库   系统   linux   postgresql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!