使用pg_dumpall备份postgresql
2018-01-22 15:58
218 查看
生产数据库基于X64或X86,Linux系统
双硬盘,容量大小基本一致,第一块硬盘作为根分区(数据库在其中),第二块作为备份分区
通过pg_dump进行SQL转储备份
通过Linux的cron服务,每日凌晨自动进行数据库备份,产生的备份文件存放于备份分区中
维护人员每周自行下载备份数据,即为低成本的异地备份
例如一台基于RedHat Enterprise Linux 4 AS的机器,跑PostgreSQL 8.1.4。硬盘是2个146GB的SCSI,/分区、/boot、SWAP等都在第一块硬盘。第二块硬盘整个挂载到/backup。
备份采用pg_dumpall。pg_dump进行单个数据库的备份,而pg_dumpall备份一个给出的集群中的每个数据库,同时还确保保留象用户和组这样的全局数据状态。使用方法如下:
su postgres (需要切换到系统的postgres用户来进行备份)
pg_dumpall > /backup/all_the_data.backup (备份整个数据库集群)
exit
要用cron来自动调度备份,则如下:
vi /etc/crontab
00 3 * * * postgres pg_dumpall > /backup/all_the_data.backup (添加这行,实现每日凌晨3点自动备份,并且是以postgres用户身份来运行的)
chown postgres /backup/all_the_data.backup (需要改变文件的拥有者,以确保postgres用户能写入)
service crond restart (重启crond服务以更新内存中的crontab)
恢复数据:
su postgres
psql -f /backup/all_the_data.backup postgres
exit
注意此时数据库的postgres用户口令要和备份文件内的一致
一个非常好的技巧,
第二块硬盘划分为/backup分区后,编辑/etc/fstab,取消开机时的自动挂载,即平时无法操作这个硬盘;
编写一个shell脚本,先挂载/backup分
区,然后进行数据库备份,再卸载该分区。
这样的好处是,平时系统中没有挂载/backup分区,可以避免人为的误操作,如删除数据,和恶意入侵等。
我的操作:
1、创建backup.sh脚本
#!/bin/bash
if [ -f ~/.bash_profile ];
then
. ~/.bash_profile
fi
pg_dumpall > /XXX/XXX/XXX/XXX/XXX.backup (备份路径)
2、创建定时任务
vi /etc/crontab
添加一行:
5 * * * * postgres pg_dumpall > /XXX/XXX/XXX/XXX/XXX/postgresql.backup
或者执行: crontab -e
添加一行:
*/5 * * * * postgres /XXX/XXX/XXX/XXX/XXX/backup.sh
备注:上面两行我也不知道哪行生效了。
3、重新启动crontab服务
systemctl restart cronb.service
转载于百度文库:https://wenku.baidu.com/view/c33b3e8271fe910ef12df851.htmlhttps://wenku.baidu.com/view/c33b3e8271fe910ef12df851.html
双硬盘,容量大小基本一致,第一块硬盘作为根分区(数据库在其中),第二块作为备份分区
通过pg_dump进行SQL转储备份
通过Linux的cron服务,每日凌晨自动进行数据库备份,产生的备份文件存放于备份分区中
维护人员每周自行下载备份数据,即为低成本的异地备份
例如一台基于RedHat Enterprise Linux 4 AS的机器,跑PostgreSQL 8.1.4。硬盘是2个146GB的SCSI,/分区、/boot、SWAP等都在第一块硬盘。第二块硬盘整个挂载到/backup。
备份采用pg_dumpall。pg_dump进行单个数据库的备份,而pg_dumpall备份一个给出的集群中的每个数据库,同时还确保保留象用户和组这样的全局数据状态。使用方法如下:
su postgres (需要切换到系统的postgres用户来进行备份)
pg_dumpall > /backup/all_the_data.backup (备份整个数据库集群)
exit
要用cron来自动调度备份,则如下:
vi /etc/crontab
00 3 * * * postgres pg_dumpall > /backup/all_the_data.backup (添加这行,实现每日凌晨3点自动备份,并且是以postgres用户身份来运行的)
chown postgres /backup/all_the_data.backup (需要改变文件的拥有者,以确保postgres用户能写入)
service crond restart (重启crond服务以更新内存中的crontab)
恢复数据:
su postgres
psql -f /backup/all_the_data.backup postgres
exit
注意此时数据库的postgres用户口令要和备份文件内的一致
一个非常好的技巧,
第二块硬盘划分为/backup分区后,编辑/etc/fstab,取消开机时的自动挂载,即平时无法操作这个硬盘;
编写一个shell脚本,先挂载/backup分
区,然后进行数据库备份,再卸载该分区。
这样的好处是,平时系统中没有挂载/backup分区,可以避免人为的误操作,如删除数据,和恶意入侵等。
我的操作:
1、创建backup.sh脚本
#!/bin/bash
if [ -f ~/.bash_profile ];
then
. ~/.bash_profile
fi
pg_dumpall > /XXX/XXX/XXX/XXX/XXX.backup (备份路径)
2、创建定时任务
vi /etc/crontab
添加一行:
5 * * * * postgres pg_dumpall > /XXX/XXX/XXX/XXX/XXX/postgresql.backup
或者执行: crontab -e
添加一行:
*/5 * * * * postgres /XXX/XXX/XXX/XXX/XXX/backup.sh
备注:上面两行我也不知道哪行生效了。
3、重新启动crontab服务
systemctl restart cronb.service
转载于百度文库:https://wenku.baidu.com/view/c33b3e8271fe910ef12df851.htmlhttps://wenku.baidu.com/view/c33b3e8271fe910ef12df851.html
相关文章推荐
- 使用pg_rman软件来实现postgresql数据库的备份恢复
- postgresql使用pg_dump备份与恢复
- postgresql使用pg_dump、pg_restore备份及恢复数据库
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- pg_rman 实现对postgresql数据库的备份,恢复与管理
- postgresql 数据库的备份和恢复 (pg_dump 和 pg_restore)
- postgresql监控工具pgstatspack的安装及使用
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- PostgreSQL pg_dump&psql 数据的备份与恢复
- PostgreSQL使用pg_basebackup搭建主备流复制环境
- postgresql备份恢复之pg_dump大数据处理
- ubuntu下使用pg_upgrade从PostgreSQL9.5升级到PostgreSQL9.6
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- PostgreSQL备份之pg_rman
- Postgresql备份与还原命令pg_dump
- pg_restore - 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- pg_rman的安装、使用备份和恢复
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- 使用pg_dump 备份数据库失败!!!!!求助各位