公司最近开始逐步推广使用PostgreSQL,为方便开发人员和实施人员操作,特整理数据库初始化、备份、恢复的推荐脚本如下:
1. 连接数据库
psql -h 127.0.0.1 -p 1921 -U postgres -d postgres -W
2. 数据库初始化脚本
Create Role <login_role> Login Password '<password>' SUPERUSER Valid Until 'infinity';
Create tablespace <tablespace_name> location '<tablespace_directory>';
GRANT all on tablespace <tablespace_name> to <login_role>;
Create Database <db_name> With owner = <login_role> tablespace=<tablespace_name>;
Alter Database <db_name> Set search_path="$user", public;
/*以下两句在上面创建用户登录,在对应的数据库下执行。*/
Create Schema <schema_name>;
GRANT all ON Schema <schema_name> to <login_role>;
使用说明:将<>
内容替换为对应的名称,执行后数据库基本创建完成。
注意:如果是Windows操作系统下使用
administrators
权限组用户登录,创建表空间时,对应目录需要赋予EveryOne
操作权限。
3. 数据库备份脚本
备份方案
pg_dump -h <db_ip> -p <db_port> -U <user_name> -j 3 -F d -C -c -d <db_name> -v -f <backup_directory>
注意:上面的<backup_directory>
为本地目录。
这种备份方式,会将相应的变量设置、Schema配置等都备份好,所以在恢复的时候就无需再进行相关的配置了,恢复详见下一节描述。
4. 数据库恢复脚本
恢复步骤:
- 创建登录用户;
- 创建表空间;
- 创建数据库;
- 通过
pg_restore
命令恢复(依然是以1.3种描述的推荐使用的备份方案
为基础的)。
具体命令如下:
Create Role <login_role> Login Password '<password>' SUPERUSER Valid Until 'infinity';
Create tablespace <tablespace_name> location '<tablespace_directory>';
GRANT all on tablespace <tablespace_name> to <login_role>;
Create Database <db_name> With owner = <login_role> tablespace=<tablespace_name>;
pg_restore -h <db_ip> -p <db_port> -U <user_name> -d <db_name> -j 3 -v <backup_directory>
OK,到此为止数据库恢复成功。