云原生数据仓库AnalyticDB PostgreSQL版完全兼容PostgreSQL消息协议,可以直接使用支持PostgreSQL消息协议的工具进行管理和开发。
背景信息
云原生数据仓库AnalyticDB PostgreSQL版完全兼容PostgreSQL消息协议,您可以直接使用支持PostgreSQL消息协议的工具和图形化工具管理和开发云原生数据仓库AnalyticDB PostgreSQL版。
- 支持PostgreSQL消息协议的工具:命令行psql、libpq、JDBC、ODBC、psycopg2等。
- 图形化工具:DBeaver(需为DBeaver 6.0.0及之后版本),阿里云数据管理服务DMS等。
前提条件
连接AnalyticDB PostgreSQL版实例前,您需要进行如下操作:
- 获取AnalyticDB PostgreSQL版实例的连接地址,实例的连接地址分为内网地址和外网地址,获取方法如下:
- 如果您的客户端部署在与您的AnalyticDB PostgreSQL版实例在同一地域且网络类型相同的ECS上,则可以使用内网地址进行连接,查看内网地址方法如下:
- 登录云原生数据仓库AnalyticDB PostgreSQL版控制台。
- 找到目标实例,单击实例ID。
- 在基本信息页面的数据库连接信息区域,即可查看内网地址。
- 如果您的客户端部署在与您的AnalyticDB PostgreSQL版实例在不同地域或网络类型不同的ECS或者阿里云以外的系统上,则需要申请外网地址后使用外网地址进行连接。申请外网地址的方法,请参见管理外网地址。
- 如果您的客户端部署在与您的AnalyticDB PostgreSQL版实例在同一地域且网络类型相同的ECS上,则可以使用内网地址进行连接,查看内网地址方法如下:
- 获取客户端的IP地址,并将客户端地址加入AnalyticDB PostgreSQL版实例白名单中,操作如下:
- 获取客户端的IP地址:
- ECS实例:
- Linux实例
通过
ifconfig
查看网卡信息。您可以查看IP地址、子网掩码、网关、DNS、MAC地址等信息。 - Windows实例
在命令窗口,通过
ipconfig /all
查看网卡信息。您可以查看IP地址、子网掩码、网关、DNS、MAC地址等信息。
- Linux实例
- 本地或第三方云:
- Linux操作系统:在本地设备上执行curl ipinfo.io |grep ip命令,获取其公网IP地址。
- Windows操作系统:在本地设备上访问淘宝IP地址库,获取其公网IP地址。
- ECS实例:
- 将获取到的IP地址添加到AnalyticDB PostgreSQL版实例白名单中,具体操作,请参见设置白名单。说明
- 客户端为ECS实例时:
- 如果ECS和AnalyticDB PostgreSQL版实例在同一VPC下,您可以将ECS的内网IP地址添加至白名单中,通过内网连接。
- 如果ECS和AnalyticDB PostgreSQL版实例不在同一VPC下,您需要将ECS的外网IP地址添加至白名单中,通过外网连接。
- 客户端为本地或第三方云时,您需要将客户端的外网IP地址添加至白名单中,通过外网连接。
- 客户端为ECS实例时:
- 获取客户端的IP地址:
DMS
数据管理(Data Management Service,简称DMS)支持MySQL、SQL Server、PostgreSQL、PPAS、Petadata等关系型数据库,PolarDB-X等OLTP数据库,AnalyticDB、DLA等OLAP数据库和MongoDB、Redis等NoSQL的数据库管理。它是一种集数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化和服务器管理于一体的数据管理服务。
以下内容将为您介绍如何使用DMS登录云原生数据仓库AnalyticDB PostgreSQL版。
- 登录云原生数据仓库AnalyticDB PostgreSQL版控制台。
- 可选:创建AnalyticDB PostgreSQL实例。具体操作,请参见创建实例。
若已创建AnalyticDB PostgreSQL实例,请跳过该步骤。
- 在控制台左上角,选择实例所在地域。
- 找到目标实例,单击实例ID。
- 可选:创建数据库账号。具体操作,请参见创建数据库账号。
如果已经创建初始账号,则可以使用该账号直接登录数据库。
- 单击实例详情页右上角登录数据库。
- 在登录实例页面输入数据库账号和数据库密码,单击登录。说明 如果是第一次使用DMS登录AnalyticDB PostgreSQL实例,系统会提示您设置白名单,在白名单问题窗口单击设置白名单即可。
更多关于DMS的信息,请参见数据管理。
psql
psql是Greenplum中比较常用的命令行工具,提供了丰富的命令,其二进制文件在Greenplum安装后的BIN目录下。
下载方式:
对于RHEL(Red Hat Enterprise Linux)和CentOS版本的6和7版本的平台,可以通过以下地址进行下载,解压后即可使用:
引擎版本 | 系统版本 | 下载地址 |
---|---|---|
AnalyticDB PostgreSQL 7.0版 | RHEL 7或CentOS 7 | adbpg7_client_package.el7.x86_64.tar.gz |
AnalyticDB PostgreSQL 6.0版 | RHEL 7或CentOS 7 | ADBPG_client_package_el7 |
RHEL 6或CentOS 6 | ADBPG_client_package_el6 | |
AnalyticDB PostgreSQL 4.3版 | RHEL 7或CentOS 7 | ADBPG_client_package_el7 |
RHEL 6或CentOS 6 | ADBPG_client_package_el6 |
将客户端工具压缩包下载到本地后,需要进行解压并安装,具体方法如下:
- 在客户端工具压缩包目录下,解压文件,命令如下:
tar -xzvf <文件名>
例如解压AnalyticDB PostgreSQL 6.0版客户端工具,示例如下:
tar -xzvf adbpg_client_package.el7.x86_64.tar.gz
- 解压后切换到bin目录下,执行如下命令:
cd adbpg_client_package/bin
- bin目录下包括客户端工具psql、pg_dump等,按照各工具参考文档,执行命令行。
连接实例操作步骤如下:
- 通过如下任意一种方式进行连接:
连接串的方式:
psql "host=yourgpdbaddress.gpdb.rds.aliyuncs.com port=5432 dbname=postgres user=gpdbaccount password=gpdbpassword"
指定参数的方式:
psql -h yourgpdbaddress.gpdb.rds.aliyuncs.com -p 5432 -d postgres -U gpdbaccount
参数说明:
- -h:指定主机地址。
- -p:指定端口号。
- -d:指定数据库(默认的数据库是 postgres),
- -U:指定连接的用户。
说明 您可以通过psql --help
查看更多选项。在psql中,可以执行\?
查看更多psql中支持的命令。
- 输入密码,进入psql的命令行页面。
psql相关文档如下:
关于Greenplum的psql的更多使用方法。具体内容,请参见Greenplum psql。
AnalyticDB PostgreSQL版也支持PostgreSQL的psql命令,使用时请注意细节上的差异。具体内容,请参见PostgreSQL psql。
此外云原生数据仓库AnalyticDB PostgreSQL版也支持Docker形态的工具包,你可以在Docker官网找到对应平台的Docker安装地址。
操作示例如下:
- 运行对应AnalyticDB PostgreSQL 4.3版的工具镜像:
docker run -idt --name=adbpgcli aliadbpg/adbpgcli:v4.3.0 docker exec -it adbpgcli /bin/bash -l
- 运行对应AnalyticDB PostgreSQL 6.0版的工具镜像:
docker run -idt --name=adbpgcli aliadbpg/adbpgcli:v6.3.0 docker exec -it adbpgcli /bin/bash -l
DBeaver
DBeaver可以在Windows,macOS和Linux等主流平台上运行,以下内容以Windows为例介绍如何使用DBeaver连接云原生数据仓库AnalyticDB PostgreSQL版实例。
- 下载并安装DBeaver社区版(Community Edition)安装包。下载连接,请参见DBeaver官网。
- 运行DBeaver,在上方菜单栏中单击 。
- 在创建新建连接窗口,选择Greenplum数据库类型,单击下一步(N)。说明 如果是首次连接则需要下载对应数据库驱动文件。
- 在连接设置窗口的常规页签,输入以下参数。
参数 说明 示例 主机 AnalyticDB PostgreSQL版的连接地址和端口,查看方式如下: - 登录云原生数据仓库AnalyticDB PostgreSQL版控制台。
- 在控制台左上角,选择实例所在地域。
- 找到目标实例,单击实例ID。
- 在基本信息页面的数据库连接区域,即可查看内网地址和内网端口或外网地址和外网端口。
gp-bp1g*************-master.gpdbmaster.rds.aliyuncs.com 端口 5432 数据库 需要管理的数据库。 postgres 用户名 AnalyticDB PostgreSQL版的数据库账号。如何创建账号,请参见创建数据库账号。 testuser 密码 AnalyticDB PostgreSQL版数据库账号对应的密码。 PassW0rd - 单击测试链接(T),在返回的窗口中提示已连接即可。说明 如果测试链接时遇到了
org.postgresql.Driver
报错,可以尝试下载/更新Greenplum驱动的库,具体操作如下:- 在连接设置页面的常规页签中,单击编辑驱动设置。
- 在库页签中单击下载/更新(D)。
- 单击完成。
JDBC
您可以使用PostgreSQL或Greenplum的JDBC驱动包连接AnalyticDB PostgreSQL版。
下载方法如下:
- PostgreSQL官方的JDBC驱动,下载之后加入到环境变量中。
- Greenplum官方的驱动包,详情请参见Greenplum 6.3 Greenplum Client。
代码示例如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class gp_conn {
public static void main(String[] args) {
try {
Class.forName("org.postgresql.Driver");
Connection db = DriverManager.getConnection("jdbc:postgresql://mygpdbpub.gpdb.rds.aliyuncs.com:5432/postgres","mygpdb","mygpdb");
Statement st = db.createStatement();
ResultSet rs = st.executeQuery("select * from gp_segment_configuration;");
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(" | ");
System.out.print(rs.getString(2));
System.out.print(" | ");
System.out.print(rs.getString(3));
System.out.print(" | ");
System.out.print(rs.getString(4));
System.out.print(" | ");
System.out.print(rs.getString(5));
System.out.print(" | ");
System.out.print(rs.getString(6));
System.out.print(" | ");
System.out.print(rs.getString(7));
System.out.print(" | ");
System.out.print(rs.getString(8));
System.out.print(" | ");
System.out.print(rs.getString(9));
System.out.print(" | ");
System.out.print(rs.getString(10));
System.out.print(" | ");
System.out.println(rs.getString(11));
}
rs.close();
st.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
更多关于JDBC驱动的信息,请参见JDBC驱动文档。
Python
Python连接Greenplum和PostgreSQL时使用psycopg2工具。操作步骤如下:
- 安装psycopg2。在CentOS系统,安装方法有如下三种:
- 执行如下命令:
yum -y install python-psycopg2
- 执行如下命令:
pip install psycopg2
- 从源码安装:
yum install -y postgresql-devel* wget http://initd.org/psycopg/tarballs/PSYCOPG-2-6/psycopg2-2.6.tar.gz tar xf psycopg2-2.6.tar.gz cd psycopg2-2.6 python setup.py build sudo python setup.py install
- 执行如下命令:
- psycopg2安装完成后,需要设置PYTHONPATH环境变量,设置完成后即可引用该变量。环境变量设置如下:
import psycopg2 sql = 'select * from gp_segment_configuration;' conn = psycopg2.connect(database='gpdb', user='mygpdb', password='mygpdb', host='mygpdbpub.gpdb.rds.aliyuncs.com', port=5432) conn.autocommit = True cursor = conn.cursor() cursor.execute(sql) rows = cursor.fetchall() for row in rows: print row conn.commit() conn.close()
完成后会返回结果示例如下:
(1, -1, 'p', 'p', 's', 'u', 3022, '192.168.2.158', '192.168.2.158', None, None) (6, -1, 'm', 'm', 's', 'u', 3019, '192.168.2.47', '192.168.2.47', None, None) (2, 0, 'p', 'p', 's', 'u', 3025, '192.168.2.148', '192.168.2.148', 3525, None) (4, 0, 'm', 'm', 's', 'u', 3024, '192.168.2.158', '192.168.2.158', 3524, None) (3, 1, 'p', 'p', 's', 'u', 3023, '192.168.2.158', '192.168.2.158', 3523, None) (5, 1, 'm', 'm', 's', 'u', 3026, '192.168.2.148', '192.168.2.148', 3526, None)
libpq
libpq是PostgreSQL数据库的C语言接口,您可以在C程序中通过libpq库访问PostgreSQL数据库并进行数据库操作。在安装了Greenplum或者PostgreSQL之后,在其lib目录下可以找到其静态库和动态库。
- libpq的相关案例,请参见 Example Programs。
- 关于libpq详细信息,请参见libpq - C Library。
ODBC
PostgreSQL的ODBC基于LGPL(GNU Lesser General Public License)协议的开源版本,您可以在 PostgreSQL 官网下载。
使用ODBC驱动连接AnalyticDB PostgreSQL的操作步骤如下:
- 安装驱动。安装命令如下:
yum install -y unixODBC.x86_64 yum install -y postgresql-odbc.x86_64
- 配置数据源,命令如下:
vim /etc/odbc.ini
添加连接信息,连接信息示例如下。
[mygpdb] Description = Test to gp Driver = PostgreSQL Database = **** Servername = ****.gpdb.rds.aliyuncs.com UserName = **** Password = **** Port = **** ReadOnly = 0
说明 将以上示例代码中的****
改成对应的连接信息。 - 测试连通性。示例如下:
echo "select count(*) from pg_class" | isql mygpdb +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select count(*) from pg_class +---------------------+ | count | +---------------------+ | 388 | +---------------------+ SQLRowCount returns 1 1 rows fetched
- ODBC已连接上实例,将应用连接ODBC即可,具体操作请参见 psqlODBC和C# 连接到 PostgreSQL。
其他参考信息
- 图形客户端工具
AnalyticDB PostgreSQL版可以直接使用Greenplum支持的其它图形化客户端工具,例如DBeaver。
- Greenplum客户端参考
Greenplum官网也提供了一个安装包,包含JDBC、ODBC和libpq,您可以方便地安装和使用。具体内容,请参见Greenplum官方文档。