作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL(本章节)
Redis
Etcd
前面我们介绍了MySQL的逻辑备份,今天这个小节我们介绍PostgreSQL的逻辑备份,他比较适合中小数据库。
# 基本语法
pg_dump [选项] 数据库名 > 备份文件.sql
# 常用示例
# 备份整个数据库到SQL文件
pg_dump -h localhost -p 5432 -U username -d database_name > backup.sql
# 备份为自定义格式(压缩,支持选择性恢复)
pg_dump -h localhost -U username -d database_name -Fc > backup.dump
# 备份为目录格式(并行备份/恢复)
pg_dump -h localhost -U username -d database_name -Fd -f backup_dir/
# 只备份数据(不包含表结构)
pg_dump -h localhost -U username -d database_name -a > data_only.sql
# 只备份表结构
pg_dump -h localhost -U username -d database_name -s > schema_only.sql
# 备份特定表
pg_dump -h localhost -U username -d database_name -t table1 -t table2 > tables_backup.sql# 备份所有数据库和全局对象
pg_dumpall -h localhost -U username > all_databases.sql
# 只备份全局对象(角色、表空间等)
pg_dumpall -h localhost -U username --globals-only > globals.sql
# 只备份角色
pg_dumpall -h localhost -U username --roles-only > roles.sql二.逻辑还原
# 还原整个数据库
psql -h localhost -U username -d database_name -f backup.sql
# 还原到新数据库
createdb new_database
psql -h localhost -U username -d new_database -f backup.sql
# 在还原前先清理目标数据库
psql -h localhost -U username -d database_name -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
psql -h localhost -U username -d database_name -f backup.sql# 还原自定义格式备份
pg_restore -h localhost -U username -d database_name backup.dump
# 还原到新数据库
createdb new_database
pg_restore -h localhost -U username -d new_database backup.dump
# 并行还原(目录格式)
pg_restore -h localhost -U username -d database_name -j 4 backup_dir/
# 只还原表结构
pg_restore -h localhost -U username -d database_name -s backup.dump
# 只还原数据
pg_restore -h localhost -U username -d database_name -a backup.dump
# 交互式还原(列出内容并选择)
pg_restore -l backup.dump > list.txt
# 编辑list.txt,注释掉不需要恢复的对象
pg_restore -h localhost -U username -d database_name -L list.txt backup.dump