PostgreSQL #
客户端软件 #
本地GUI:
- HeidiSQL - Windows
- Wine + HeidiSQL - MacOS
Web部署:
备份和还原 #
备份PostgreSQL有三种不同的方法:
- SQL Dump
- 文件系统级备份 - (限制:数据库服务器必须关闭才能获得可用的备份)
- 持续归档和时间点还原(PITR)
基于SQL Dump的备份和还原 #
备份和还原整个PostgreSQL实例 #
备份所有:
1pg_dumpall -f dump.sql
还原:
1psql < dump.sql
pg_dumpall导出的是sql文本格式
pg_dumpall不支持导出二进制格式, 只能导出为纯文本格式。 pg_dumpall主要用于导出整个PostgreSQL实例的所有数据库、全局对象(如角色和权限)以及配置信息。 如果要数据库数据为二进制格式,需要使用pg_dump来逐个导出每个数据库,pg_dump 支持多种格式(包括二进制格式),而pg_dumpall适用于导出整个PostgreSQL实例的所有数据库及其元数据。
备份和还原单个数据库 #
导出某个数据库:
1pg_dump -h <远程服务器IP或域名> -p <端口号> -U <用户名> \
2 -d <数据库名> -F c -b -v -f <导出文件路径>
几个关键参数的解释:
1-F, --format=c|d|t|p output file format (custom, directory, tar,
2 plain text (default))
3-b, --large-objects include large objects in dump
4-v, --verbose verbose mode
5-O, --no-owner skip restoration of object ownership in
6 ALTER OWNER commands to set ownership
示例:
1pg_dump -h 192.168.100.202 -p 5432 -U foo \
2 -d foodb --no-owner -F c -b -v -f foodb.dump
还原单个数据库的示例:
创建数据库和用户:
1psql -h 127.0.0.1 -p 5432 -U postgres 2 3CREATE DATABASE "foodb"; 4CREATE USER foodb_user WITH PASSWORD 'xxx'; 5GRANT ALL PRIVILEGES ON DATABASE foodb TO foodb_user; 6 7\c "foodb" postgres; 8GRANT ALL PRIVILEGES ON SCHEMA public TO foodb_user;
还原数据库
1pg_restore -d foodb --no-owner --role=foodb_user -v foodb.dump
还原时在创建某些对象时需要超级权限?
可在还原前将用户设置为SUPERUSER,还原后再去掉。
例如:
1ALTER ROLE foodb_user WITH SUPERUSER; 2ALTER ROLE foodb_user WITH NOSUPERUSER;
持续归档和时间点还原(PITR) #
Continuous Archiving and Point-in-Time Recovery (PITR)
TODO待整理…