云数据库RDS快速入门教程(PostgreSQL)-

云数据库RDS快速入门教程(PostgreSQL)

阿里云服务器优惠

本文档包含以下内容:

  • RDS for PostgreSQL实例连接
  • RDS for PostgreSQL数据迁入
  • RDS for PostgreSQL数据迁出
  • RDS for PostgreSQL用户及Schema管理
  • RDS for PostgreSQL功能限制

1.RDS for PostgreSQL实例连接

创建初始帐号

在完成实例购买之后,首先去登陆RDS管理控制台,创建“初始帐号”。 假设创建的账号为:myuser

命令行连接实例

在管理控制台的基本信息页面,可以找到实例的连接地址和端口,例如我们有如下实例: rds2z2tp80v3752wb455.pg.rds.aliyuncs.com:3433 有了实例连接串、端口、初始帐号、密码,就可以使用命令管理和操作实例了。

创建数据库

createdb -U myuser -h rds2z2tp80v3752wb455.pg.rds.aliyuncs.com -p 3433 pg001

连接数据库

psql -U myuser -h rds2z2tp80v3752wb455.pg.rds.aliyuncs.com -p 3433 pg001
Password for user myuser: 
psql.bin (9.4.4, server 9.4.1)
Type "help" for help.

pg001=>

注意事项

建议不要使用9.4.1以下的PostgreSQL客户端psql工具连接数据库,因为版本不匹配可能会导致很多功能无法使用,连接时会出现类似以下的提示:

WARNING: psql major version 9.3, server major version 9.4.
         Some psql features might not work.

2.RDS for PostgreSQL数据迁入

导出逻辑备份

通过ECS备份 pg_dump -U {user-name} -h {host-name} -p {port} {database-name} -f {file-name} 如:

pg_dump -U myuser -h localhost -p 5432 pg001 -f pg001.sql

将文件pg001.sql上传到一台可以连接目标RDS的ECS(如果文件太大可以先进行压缩)

将数据迁入RDS

登陆到你ECS服务器,通过以下命令将数据导入到RDS psql -U {user-name} -h {host-name} -d {desintation_db} -p {port} -f {dumpfilename.sql} 如:

psql -U myuser -h rds2z2tp80v3752wb455.pg.rds.aliyuncs.com -d pg001 -p 3433 -f pg001.sql

注意事项

由于云上的权限配置不一至,在数据导入过程当中可能会出现一些与权限相关的WARNING或ERROR,可以忽略,如:

WARNING:  no privileges could be revoked for "xxxxx"
ERROR:  role "xxxxx" does not exist

3.RDS for PostgreSQL数据迁出

通过逻辑备份进行数据迁出

通过pg_dump导出逻辑备份

通过以下命令操作 pg_dump -U {user-name} -h {host-name} -p {port} {database-name} -f {file-name} 如:

pg_dump -U myuser -h rds2z2tp80v3752wb455.pg.rds.aliyuncs.com -p 3433 pg001 -f pg001.sql

将数据恢复到目标服务器

将pg001.sql放到目标服务器中,并进行以下命令操作 psql -U {user-name} -h {host-name} -d {desintation_db} -p {port} -f {dumpfilename.sql} 如:

psql -U myuser -h localhost -d pg001 -p 5432 -f pg001.sql

注意事项

由于云上的权限配置不一至,在数据导入过程当中可能会出现一些与权限相关的WARNING或ERROR,可以忽略,如:

WARNING:  no privileges could be revoked for "xxxxx"
ERROR:  role "xxxxx" does not exist

4.RDS for PostgreSQL用户及Schema管理

在使用RDS的过程中,由于superuser关不完全放开,因此我们建议用户在使用数据库时遵循单独建立用户并通过schema管理用户的私有空间。以下DEMO中,myuser是建立实例时创建的管理帐号,newuser是当前需要新建的帐号。

建立有登陆权限的用户

CREATE USER newuser LOGIN PASSWORD 'xxxxx';

为新用户建立schema

CREATE SCHEMA newuser;
GRANT newuser to myuser;
ALTER SCHEMA newuser OWNER TO newuser;
REVOKE newuser FROM myuser;

注意1:如果在进行ALTER SCHEMA newuser OWNER TO newuser之前没有将newuser加入到myuser角色,将会出现ERROR: must be member of role "newuser"的权限问题。 注意2:从安全角度出发,newuser这个用户在本DEMO定义为是一个普通的应用程序帐号,因此在处理完OWNER的授权后,将它移出myuser角色以提高安全性。

使用newuser登陆数据库

psql -U newuser -h rds2z2tp80v3752wb455.pg.rds.aliyuncs.com -p 3433 pg001
Password for user newuser: 
psql.bin (9.4.4, server 9.4.1)
Type "help" for help.

pg001=> select * from tb001;
ERROR:  permission denied for relation tb001
pg001=> create table tb002(c1 bigint);
CREATE TABLE
pg001=> insert into tb002 values (10);
INSERT 0 1
pg001=> insert into tb002 values (11);
INSERT 0 1
pg001=> insert into tb002 values (12);
INSERT 0 1
pg001=> select * from tb002;
 c1 
----
 10
 11
 12
(3 rows)

pg001=> \dt
         List of relations
 Schema  | Name  | Type  |  Owner  
---------+-------+-------+---------
 newuser | tb002 | table | newuser
 public  | tb001 | table | myuser
(2 rows)

pg001=> \q

5.RDS for PostgreSQL功能限制

为保障实例的稳定及安全,RDS for PostgreSQL有部分使用上的约束,详情如下:

操作 RDS使用约束
修改数据库参数设置 暂不支持
数据库的root权限 RDS无法向用户提供superuser权限
数据库备份 只支持通过pg_dump进行数据备份
数据迁入 只支持通过psql还原由pg_dump备份的数据
搭建数据库复制 系统自动搭建了基于PostgreSQL流复制的HA模式,无需用户手动搭建
PostgreSQL Standby节点对用户不可见,不能直接用于访问
重启RDS实例 必须通过RDS管理控制台或OPEN API操作重启实例
赞(0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • potplayer
  • directx