文档简介:
连接访问类
Q:外部服务器能否访问RDS数据库?
A:开通公网访问的实例
对于开通公网访问功能的关系型数据库实例,可以通过外网进行访问。
未开通公网访问的实例
l 在虚拟私有云中开通虚拟专用网络(Virtual Private Network,简称VPN),通过虚拟专用网络连接关系型数据库。
l 将关系型数据库与弹性云服务器创建在同一个虚拟专用网络下,通过弹性云服务器来访问关系型数据库。
Q:什么是RDS数据库连接数
A:数据库连接数表示应用程序可以同时连接到数据库的数量,与您的应用程序或者网站能够支持的最大用户数没有关系。
Q:RDS数据库实例支持的最大数据连接数是多少
A:关系型数据库服务对此未做限制,取决于数据库引擎参数的默认值和取值范围,例如MySQL引擎的max_connections和max_user_connections参数,用户可在参数模板自定义。
Q:如何创建和连接ECS
A:1. 创建弹性云服务器,请参见《弹性云服务器用户指南》。
− 该弹性云服务器用于连接关系型数据库实例,需要与目标实例处于同一虚拟私有云内。
− 正确配置安全组,使得弹性云服务器可以通过“连接地址”访问关系型数据库实例。
2. 连接弹性云服务器,请参见《弹性云服务器用户指南》中“登录弹性云服务器”的内容。
Q:ECS无法连接到RDS实例的原因
A:遇到该问题,参考以下步骤排查解决。
步骤 1 先确认弹性云服务器和关系型数据库实例是否在同一个虚拟私有云下。
l 如果在,执行步骤2。
l 如果不在,需要重新创建弹性云服务器实例,使之和关系型数据库实例在同一个虚拟私有云下。
步骤 2 查看弹性云服务器实例是否添加安全组。
l 如果有,检查安全组的配置规则是否满足要求,
MySQL相关,请参见2.2.2 步骤一:创建实例中“安全组”的描述,然后执行步骤3。
PostgreSQL相关,请参见3.2.2 步骤一:创建实例中“安全组”的描述,然后执行步骤3。
Microsoft SQL Server相关,请参见4.2.2 步骤一:创建实例中“安全组”的描述,然后执行步骤3。
l 如果没有,从弹性云服务器的实例详情页面,进入虚拟私有云页面,选择“安全组”,添加安全组。
步骤 3 在弹性云服务器上,测试是否可以正常连接到关系型数据库实例地址的端口。
MySQL的默认端口为3306。
PostgreSQL的默认端口为5432。
Microsoft SQL Server的默认端口为1433。
telnet <连接地址> {端口号}
l 如果可以通信,说明网络是正常的。
l 如果端口不通,请联系售后技术支持协助排查。
----结束
Q:客户端问题导致连接失败
A:客户端问题导致连接关系型数据库失败,可以从以下几个方面检查。
-
弹性云服务器的安全策略对于Windows平台,可检查Windows的安全策略是否开放关系型数据库端口。对于Linux平台,可使用iptables检查防火墙及端口的放行情况。
-
应用配置错误
常见的有连接地址写错、端口参数配置错误和JDBC等的连接参数配置错误。
-
用户名或密码错误
-
如果连接数据库时出现类似如下错误,请检查用户名或密码是否正确。
− [Warning] Access denied for user 'username'@'yourIp' (using password: NO)
− [Warning] Access denied for user 'username'@'yourIp' (using password: YES)
− Login failed for user 'username'
说明:如问题仍未解决,请联系售后技术支持。
Q:服务端问题导致连接失败
A:关系型数据库服务端可能出现的问题如下,请依次进行检测。
-
连接方式有误。
解决方法:检查连接方式。弹性云服务器与关系型数据库实例必须处于同一虚拟私有云内,且只能通过弹性云服务器连接。
-
连接数满。
解决方法:通过关系型数据库服务的资源监控功能查看连接数、CPU使用率等指标是否正常。如果达到上限,需要重启关系型数据库实例数据库,断开实例连接或升级关系型数据库实例规格解决。
-
实例状态异常。比如实例重启卡住,关系型数据库系统故障,实例或表被锁定等。
解决方法:尝试重启功能。如果无法解决,请联系售后技术支持。
Q:应用程序怎么访问VPC中的RDS实例
A:您需要确保您的应用程序所在的弹性云服务器与关系型数据库实例在同一个虚拟私有云和子网中。如果不在,需要修改虚拟私有云中的路由表和网络ACL,以确保应用程序所在的弹性云服务器能够访问关系型数据库实例。
Q:访问RDS实例应该如何配置安全组
A:以弹性云服务器(IP:192.168.0.151)访问关系型数据库实例(数据库连接地址:192.168.0.16:8635)为例:
通过弹性云服务器访问关系型数据库实例时,弹性云服务器安全组需要配置出规则,如图8-5所示。
图1-1 ECS安全组配置
图1-2
说明:
l 弹性云服务器采用的安全组,需要保证出规则能连接关系型数据库实例对应的IP以及端口,数据库客户端工具的出端口是随机选取的,此处出规则针对端口不做限制。
l 用户登录弹性云服务器实例时,弹性云服务器所用安全组也需要配置入规则,确保可正常登录。
关系型数据库实例所属安全组,仅需保证“入”规则能识别弹性云服务器的IP,且数据库连接端口地址放开即可,如图8-6所示。
图1-3 RDS实例安全组配置
Q:应用程序是否需要支持自动重连数据库
A:建议您的应用程序支持自动重连数据库,当数据库重启后,无需人工介入,应用会自动恢复,提供更高的可用性。
同时建议您的应用程序采用长连接方式连接数据库,以降低资源消耗,提高性能。
Q:RDS支持导入哪些数据库引擎的数据
A:l 相同引擎数据库之间数据导入导出,称之为同构型数据库之间数据导入导出。
l 不同引擎数据库之间数据导入导出,称之为异构型数据库之间数据导入导出。例如,从Oracle导入数据到RDS支持的数据库引擎。
异构型数据库之间由于格式不同,不支持直接导入导出。但只要导入导出的格式数据兼容,理论上,导入表数据也是可行的。
异构型数据库之间数据导入导出,一般需要第三方软件,通过数据复制的方式来实现。比如,先使用工具从Oracle中,以文本的格式导出表记录,然后利用Load语句导入到关系型数据库服务支持的数据库引擎。
Q:为什么要采用mysqldump和pg_dump工具迁移
A:该方案优点是简单,容易上手,缺点是停机时间较长。因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成的数据。
由于关系型数据库服务提供的服务与原来的数据库服务是完全兼容的,所以对于用户来说,从原有数据库迁移到关系型数据库的过程,与从一台数据库服务器迁移到另外一台数据库服务器的过程基本类似。
Q:将根证书导入Windows/Linux操作系统
A:导入Windows操作系统
-
单击“开始”,运行框输入“MMC”,回车。
-
在MMC控制台菜单栏中单击“文件”,选择“添加/删除管理单元”。
-
在“添加或删除管理单元”对话框,选择“可用管理单元”区域的“证书”。单击“添加”添加证书。
-
在“证书管理”对话框,选择“计算机账户”,单击“下一步”。
-
在“选择计算机”对话框,单击“完成”。
-
在“添加或删除管理单元”对话框,单击“确定”。
-
在MMC控制台,双击“证书”。
-
右键单击“受信任的根证书颁发机构”,选择“所有任务”,单击“导入”。
-
单击“下一步”。
-
单击“浏览”,将文件类型更改为“所有文件 (*.*)”。
-
找到下载的根证书ca.pem文件,单击“打开”,然后在向导中单击“下一步”。
说明:
您必须在浏览窗口中将文件类型更改为“所有文件 (*.*)”才能执行此操作,因为“.pem”不是标准证书扩展名。
-
单击“下一步”。
-
单击“完成”。
-
单击“确定”,完成根证书导入。
导入Linux操作系统
您可以使用任何终端连接工具(如WinSCP、PuTTY等工具)将证书上传至Linux系统任一目录下。
Q:如何通过JDBC连接PostgreSQL数据库
A:通过JDBC连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。
前提条件
用户需要具备以下技能:
l 熟悉计算机基础知识。
l 了解java编程语言。
l 了解JDBC基础知识。
使用SSL证书连接
说明:该方式属于SSL连接模式,需要下载SSL证书,通过证书校验并连接数据库。
您可以在“实例管理”页面,单击实例名称进入“基本信息”页面,单击“数据库信息”模块“SSL”处的,下载根证书或捆绑包。
步骤 1 通过JDBC连接PostgreSQL数据库,代码中的JDBC链接格式如下:
jdbc:postgresql://:/?sslmode=verify-full&sslrootcert=
表1-1 参数说明
参数 |
说明 |
|
如果通过弹性云服务器连接,“instance_ip”是主机IP,即“基本信息”页面该实例的“内网地址”。 |
如果通过连接了公网的设备访问,“instance_ip”为该实例已绑定的“弹性公网IP”。 |
|
|
端口,默认5432,当前端口,参考“基本信息”页面该实例的“数据库端口”。 |
|
数据库名,即需要连接的数据库名(默认的管理数据库是postgres)。 |
sslmode |
ssl连接模式,默认全认证模式。 |
sslrootcert |
ssl连接CA证书路径,该文件需放在执行该命令的路径下。 |
连接PostgreSQL数据库的java代码,可参考以下示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MyConnTest {
final public static void main(String[] args) {
Connection conn = null;
// set sslmode here.
// with ssl certificate and path.
String url = "jdbc:postgresql://192.168.0.225:5432/my_db_test?sslmode=verify-full&sslrootcert=/home/Ruby/ca.pem";
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, "root", "password");
System.out.println("Database connected");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Test failed");
} finally {
// release resource ....
}
}
}
----结束
无证书连接
说明:
该方式属于SSL连接模式,但不对服务端进行证书校验,用户无需下载SSL证书。
步骤 1 通过JDBC连接RDS PostgreSQL数据库实例,代码中的JDBC链接格式如下:
jdbc:postgresql://:/?sslmode=disable
表1-2 参数说明
参数 |
说明 |
|
如果通过弹性云服务器连接,“instance_ip”是主机IP,即“基本信息”页面该实例的“内网地址”。 |
如果通过连接了公网的设备访问,“instance_ip”为该实例已绑定的“弹性公网IP”。 |
|
|
端口,默认5432,当前端口,参考“基本信息”页面该实例的“数据库端口”。 |
|
数据库名,即需要连接的数据库名(默认的管理数据库是postgres)。 |
sslmode |
ssl连接模式,disable模式表示不进行数据加密。 |
连接PostgreSQL数据库的java代码,可参考以下示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MyConnTest {
final public static void main(String[] args) {
Connection conn = null;
// set sslmode here.
// no ssl certificate, so do not specify path.
String url = "jdbc:postgresql://192.168.0.225:5432/my_db_test?sslmode=disable";
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, "root", "password");
System.out.println("Database connected");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Test failed");
} finally {
// release resource ....
}
}
}
----结束
Q:如何安装MySQL客户端
A:MySQL官网提供了针对不同操作系统的客户端安装包,以5.6为例。单击此处下载5.6的最新版本,单击此处下载其他归档版本。下面将以Red Hat Linux为例介绍如何获取相应安装包及完成安装。
操作步骤
步骤 1 获取安装包。
在下载页面找到对应版本链接,以MySQL-client-5.6.31-1.el6.x86_64.rpm为例,打开页面后,即可下载安装包。
图1-4 下载
说明:通过红框所在的链接,可直接下载安装包。
步骤 2 将安装包上传到弹性云服务器。
说明:创建弹性云服务器时,要选择操作系统,例如Redhat6.6,并为其绑定EIP(Elastic IP,弹性公网IP)。然后使用远程连接工具将安装包上传到弹性云服务器,再用PuTTY连接到弹性云服务器。
步骤 3 执行以下命令安装MySQL客户端。
sudo rpm -ivh MySQL-client-5.6.31-1.el6.x86_64.rpm
l 如果安装过程中报conflicts,可增加replacefiles参数重新安装,如下:
rpm -ivh --replacefiles MySQL-client-5.6.31-1.el6.x86_64.rpm
l 如果安装过程中提示需要安装依赖包,可增加nodeps参数重新安装,如下:
rpm -ivh --nodeps MySQL-client-5.6.31-1.el6.x86_64.rpm
----结束
Q:如何安装PostgreSQL客户端
A:PostgreSQL官网提供了针对不同操作系统的客户端安装包,以及包含动态依赖库的软件包。
说明:
请务必安装与您的RDS for PostgreSQL数据库实例引擎版本匹配的数据库客户端。
下面将以Red Hat Linux 6下PostgreSQL 9.5的最新版本为例,介绍如何获取相应安装包及完成安装。
操作步骤
步骤 1 获取PostgreSQL客户端安装包。
在下载页面找到对应版本的链接,以postgresql95为例,打开页面后,即可下载安装包。
图1-5 下载PG客户端
步骤 2 获取PostgreSQL客户端动态依赖库包。
在下载页面找到对应版本的链接,以postgresql95-libs为例, 打开页面后,即可下载动态依赖库包。
图1-6 下载PG客户端动态依赖库
步骤 3 将安装包与动态依赖库包上传到弹性云服务器。
说明:
创建弹性云服务器时,要选择操作系统,例如Redhat6.6,并为其绑定EIP。然后使用远程连接工具将安装包与动态依赖库包上传到弹性云服务器,再用PuTTY连接到弹性云服务器。
步骤 4 执行以下命令安装PostgreSQL客户端。
sudo rpm -ivh postgresql95-9.5.7-1PGDG.rhel6.x86_64.rpm postgresql95-libs-9.5.7-1PGDG.rhel6.x86_64.rpm
说明:
l 如果安装过程中报conflicts,可增加replacefiles参数重新安装,如下:
rpm -ivh --replacefiles postgresql95-9.5.7-1PGDG.rhel6.x86_64.rpm postgresql95-libs-9.5.7-1PGDG.rhel6.x86_64.rpm
l 如果安装过程中提示需要安装依赖包,可增加nodeps参数重新安装,如下:
rpm -ivh --nodeps postgresql95-9.5.7-1PGDG.rhel6.x86_64.rpm postgresql95-libs-9.5.7-1PGDG.rhel6.x86_64.rpm
----结束
Q:如何安装SQL Server Management Studio
A:Microsoft SQL Server官网提供了SQL Server Management Studio的安装包。SQL Server Management Studio应用程序只能在Windows环境运行。
操作步骤
步骤 1 获取SQL Server Management Studio的安装包。
请访问Microsoft网站,以SQL Server Management Studio 18.0为例,下载安装包。
步骤 2 将安装包上传到弹性云服务器。
步骤 3 双击安装包,按照向导完成安装。
----结束
Q:如何确认SSL根证书的有效期
A:如果您正在使用SSL连接MySQL,执行如下命令查看证书有效期起止时间,判断证书是否到期。
show status like '%ssl_server%';
在证书到期前请及时更新根证书为最新版本:
1. 下载新的根证书文件或根证书捆绑包。
2. 重启实例以使新的根证书生效。
3. 使用新的根证书文件或根证书捆绑包连接实例。
说明:
用户证书即将到期时要及时更换正规机构颁发的证书,提高系统安全性。
Q:MySQL支持SSL连接吗
A:MySQL支持SSL连接,与其他友商不同之处是,RDS for MySQL默认在数据库服务器端打开SSL开关,用户使用客户端连接时,可根据需要指定是否需要SSL连接。
有关SSL详细介绍,请参考2.3 通过公网连接MySQL实例。
Q:SQL Server连接不上的判断方法
A:场景排查
l 弹性云服务器能否ping通关系型数据库实例。
如果ping不通,可以查看弹性云服务器和关系型数据库实例是否处于同一个虚拟私有云内,是否使用同一个安全组。
l 检查连接IP和端口号是否正确。
注意IP和端口号之间使用“逗号”隔开。
l 检查关系型数据库服务的运行状态是否异常。
l 查看用户名密码是否正确,尝试重置密码。
l 尝试重启关系型数据库实例,检查是否改善。
解决方案
步骤 1 登录管理控制台。
步骤 2 单击管理控制台左上角的,选择区域和项目。
步骤 3 选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。
步骤 4 在“实例管理”页面,单击目标实例名称,进入“基本信息”页面和“备份恢复”页面确定连接信息和备份信息。
步骤 5 在实例的“基本信息”页面查看管理员帐户名。
步骤 6 下载并在弹性云服务器上安装SSMS客户端。
步骤 7 从弹性云服务器连接到关系型数据库实例。
----结束
Q:RDS跨地域内网能访问吗
A:跨地域内网不能访问。不同区域的云服务之间内网互不相通。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
Q:使用SSL连接数据库发生主备切换后是否可以正常连接
A:如果数据库使用SSL连接,此时发生了主备实例切换,SSL证书对于主库和备库仍然有效,可以正常连接。
Q:绑定公网IP后,无法访问且ping不通的原因
A:场景排查
1. 检查安全组规则。
2. 检查“ 网络ACL”规则。
3. 相同区域主机进行ping测试。
解决方案
1. 检查安全组规则。
a. 登录管理控制台。
b. 单击管理控制台左上角的,选择区域和项目。
c. 选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页面。
d. 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页面。
e. 在“连接信息”模块的“内网安全组”处,单击安全组名称,进入安全组页面。
f. 检查弹性云服务器网卡对应的安全组是否放通了“入方向”的“ICMP”规则。
表1-1 安全组规则
放向 |
类型 |
协议和端口 |
原地址 |
入方向 |
IPv4 |
Any:Any |
0.0.0.0/0 0.0.0.0/0表示所有IP地址 |
入方向 |
IPv4 |
ICMP:Any |
0.0.0.0/0 0.0.0.0/0表示所有IP地址 |
2. 检查“ 网络ACL”规则。
a. 排查“网络ACL”是否放通。查看“网络ACL”状态,查看当前是开启状态还是关闭状态。
b. 检查“弹性公网IP”绑定的网卡是否在“网络ACL”关联的子网下。
c. 若“网络ACL”为“开启”状态,需要添加ICMP放通规则进行流量放通。
说明:需要注意“网络ACL”的默认规则是丢弃所有出入方向的包,若关闭“网络ACL”后,其默认规则仍然生效。
3. 相同区域主机进行ping测试。
在相同区域的弹性云服务器去ping没有ping通的弹性公网IP,如果可以正常ping通说明虚拟网络正常,请联系客服获取技术支持。
Q:如何定位本地IP地址
A:使用场景
用户的公网IP不固定,使用本地IP地址查看工具定位到的IP地址不准确,即使将查询到的本地IP地址加入了天翼云关系型数据库的公网白名单中,连接天翼云关系型数据库实例的时候也报错。本章节指导您如何定位本地IP地址。
操作步骤
1. 将需要访问实例的IP地址或者IP段加入天翼云关系型数据库的公网白名单。
2. 使用MySQL客户端链接RDS for MySQL。
mysql -h host_name -P port -u username -p
出现如下提示时,输入数据库帐号对应的密码:
Enter password:
使用root用户连接数据库实例,示例如下:
mysql -h 172.16.0.31 -P 3306 -u root -p
Enter password:
3. 查询进程信息。
show processlist
查询结果如图8-10所示,进程中Info字段为show processlist的行对应的Host,就是您的出口IP地址。
图1-1 IP查询结果