冷备份
逻辑备份
- dump 的文件版本兼容性不好,如遇报错,换成 SQL 文件;
- SQL 文件数据文件大小很大;
按数据库备份及恢复
使用二进制文件
二进制文件更小,但对阅读不友好
1
2
3
4
5
|
# 备份 target_database 数据库为二进制文件 /var/lib/postgresql/data/target_database_backup_0910.dump
pg_dump -h 127.0.0.1 -U postgres -d target_database -Fc -f /var/lib/postgresql/data/target_database_backup_0910.dump
# 在新数据库恢复 target_database(恢复前需要先创建数据库)
pg_restore -h 127.0.0.1 -U postgres -d target_database /var/lib/postgresql/data/target_database_backup_0910.dump
|
使用sql文件
1
2
3
4
5
6
|
# 备份 target_database 数据库为sql文件
pg_dump -h 127.0.0.1 -U postgres -d target_database -f /var/lib/postgresql/data/target_database_backup_0910.sql
# 在新数据库恢复 target_database
psql -h 127.0.0.1 -U postgres -d target_database -f /var/lib/postgresql/data/target_database_backup_0910.sql
|
按表备份及恢复
1
2
3
4
5
|
# 备份数据表为二进制文件
pg_dump -U postgres -d target_database -t target_table -Fc -f /var/lib/postgresql/data/target_table_backup_0910.dump
# 在新数据库恢复(恢复前需要先创建数据库)
pg_restore -U postgres -d target_database -t target_table /var/lib/postgresql/data/target_database_backup_0910.dump
|
整个实例备份及恢复
1
2
3
4
|
pg_dumpall -h 127.0.0.1 -U postgres -f /var/lib/postgresql/data/all_backup_0910.sql
psql -h 127.0.0.1 -U postgres -f /var/lib/postgresql/data/all_backup_0910.sql
|
归档备份
连续归档是通过基础备份和wal日志相结合的方式进行备份,恢复的时候可以选择恢复到指定的时间点、指定事务点、或者完全恢复到wal日志的最新位置
开启归档
1
2
3
4
5
6
7
8
|
vi postgresql.conf
#wal_level中有三个主要的参数:minimal、archive和hot_standby。1.minimal是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用)。2.archive是增加wal归档所需的日志(最常用)。3.hot_standby是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到
wal_level = archive
#开启归档模式
archive_mode = on
#备份wal日志,每天生成一个日期命名的文件夹(注意先创建文件夹,并给 postgres 赋予读写权限)
archive_command = 'DIR=/data/pg_archive/`date +%F`; test ! -d $DIR && mkdir -p $DIR; test ! -f $DIR/%f && cp %p $DIR/%f'
|
恢复到某一时间节点
略
Preview: