华为云Flexus云数据库RDS对接使用完全指南
1. Flexus云数据库RDS是什么
华为云Flexus云服务是新一代开箱即用、面向中小企业和开发者打造的高性价比云服务产品。Flexus云数据库RDS正是这一产品矩阵中的核心数据服务组件,它基于开源MySQL和PostgreSQL内核构建,以轻量化规格、便捷运维和开箱即用为主要特点。
从产品定位来看,FlexusRDS整体上属于华为云RDS for MySQL和RDS for PostgreSQL产品序列,通过技术创新为初创企业及个人学习者提供轻量级数据库服务。它与标准版RDS的核心区别在于:规格更加轻量化、购买方式以包年包月为主、运维功能保持便捷但整体配置选项更聚焦于中小规模业务场景。
FlexusRDS的最小管理单元是实例,一个实例代表了一个独立运行的数据库。用户可以通过两种方式使用数据库实例:一是通过Flexus云数据库RDS控制台提供的Web界面完成实例的相关操作;二是调用API编写代码来管理数据库实例。
1.1 支持的数据库引擎
Flexus云数据库RDS目前支持两大开源数据库引擎:
- FlexusRDS for MySQL:基于开源MySQL内核,支持MySQL 8.0和5.7版本。适用于Web应用、内容管理系统、电子商务平台等广泛场景。
- FlexusRDS for PostgreSQL:基于开源PostgreSQL内核,专为初创企业和个人学习者设计。支持PostgreSQL 17、16、15、14、13版本(12版本仅存量经营,不支持新购)。适用于需要复杂查询、地理空间数据、JSON处理等高级功能的场景。
1.2 实例类型
FlexusRDS实例分为两种架构类型:
- 单机实例:采用单个数据库节点部署架构,只包含一个节点,具有高性价比。适合开发测试环境、个人学习或对可用性要求不高的业务场景。但需要注意,单机版出现故障后无法保障及时恢复。
- 主备实例:采用一主一备的经典高可用架构,支持跨可用区高可用。主实例和备实例共用一个IP地址,备机提高了实例的可靠性。当主节点故障后,会发生主备切换,期间数据库客户端会发生短暂中断。适合对业务连续性有较高要求的生产环境。
FlexusRDS for MySQL和PostgreSQL实例的vCPU个数、内存、数据盘大小以及实例类型均按套餐进行购买。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 购买与创建FlexusRDS实例
2.1 准备工作
在购买Flexus云数据库RDS实例之前,需要完成以下准备工作:
- 注册华为账号并开通华为云:访问华为云官网完成账号注册。
- 完成实名认证:个人账号或企业账号均需完成实名认证流程。
- 确保账户余额充足:购买实例前需要确保账户有足够金额。
- IAM权限配置(可选):如果需要对华为云上的资源进行精细管理,可以使用统一身份认证服务创建IAM用户及用户组并授权。
2.2 创建实例步骤
进入Flexus云数据库RDS控制台:
- 在控制台服务列表中找到"数据库 > Flexus云数据库RDS"。
- 首次创建实例,单击"立即购买"进入购买页面。
- 填选实例信息后单击"立即购买"。
购买时需要配置以下核心参数:
- 区域:资源所在的区域,不同区域内的产品内网不互通,且创建后不能更换,需谨慎选择。
- 数据库引擎:选择MySQL 8.0/5.7或PostgreSQL相应版本。
- 性能规格:如经济版2U4G,即2个vCPU和4GB内存。
- 实例类型:单机或主备。
- 磁盘存储:实例的存储空间,如120GB。申请的存储空间会有必要的文件系统开销,包括索引节点和保留块等。
- 网络:选择虚拟私有云和子网,VPC是实例所在的虚拟网络环境,可以对不同业务进行网络隔离。
- 实例名称:长度4-64个字符,必须以字母或中文开头,可包含字母、数字、中划线、下划线、英文句号或中文。
- 购买时长:选择所需的时长,系统自动计算配置费用,时间越长折扣越大。
3. 连接FlexusRDS实例
Flexus云数据库RDS提供多种连接方式,用户可以根据实际场景选择最适合的方案。
3.1 通过DAS数据管理服务连接
数据管理服务是华为云推荐的最安全便捷的连接方式。Flexus云数据库RDS默认为用户开通了远程主机登录权限。
操作步骤:
- 在实例列表中选择目标实例。
- 单击操作列的"登录",进入数据管理服务实例登录界面。
- 输入数据库账号和密码即可登录并管理数据库。
- 登录与FlexusRDS实例在同一区域下的Flexus云服务器X实例。
- 安装MySQL客户端(版本需与数据库服务端相同或兼容)。
- 执行连接命令:
mysql -h <内网IP地址> -P 3306 -u <用户名> -p - 输入密码后即可进入MySQL交互终端。
- 登录与FlexusRDS实例在同一区域下的Flexus云服务器X实例。
- 安装PostgreSQL客户端(源码安装方式对实例版本和ECS操作系统没有限制)。
- 执行连接命令:
psql -h <内网IP地址> -p <端口> -U <用户名> -d <数据库名> - 在实例的"连接管理"页面单击"绑定"弹性公网IP。
- 在弹出框中选择"未绑定"状态的弹性公网IP,单击"是"提交绑定任务。
- 在安全组中放通数据库端口(MySQL默认为3306,PostgreSQL默认为5432)。
- 使用公网IP地址进行连接。
- ECS与RDS实例在相同安全组:默认ECS与RDS实例内网互通,无需额外设置安全组规则。
- ECS与RDS实例在不同安全组:需要为RDS和ECS分别设置安全组规则。具体操作包括:查看ECS安全组的出方向规则,如果目的地址不为"0.0.0.0/0"且协议端口不为"全部",需要将RDS实例的IP地址和端口添加到出方向规则;查看RDS安全组的入方向规则,需要将ECS实例的私有IP地址和端口添加到入方向规则。
- 进入安全组页面。
- 单击安全组名称进入详情页。
- 选择"入方向规则",单击"添加规则"。
- 配置入方向规则,放通数据库端口(MySQL为3306,PostgreSQL为5432)。
- 限制来源IP为需要访问数据库的特定IP地址,避免将端口暴露给全网。
- 长度为8~32个字符。
- 至少包含大写字母、小写字母、数字、特殊字符三种字符的组合。
- 允许输入的的特殊字符包括:~ ! @ # $ % ^ * - _ = + ? ,
- 在实例列表中选择指定的实例,单击实例名称。
- 选择"备份恢复"选项卡。
- 选择需要恢复的可用备份,单击操作列中的"恢复"。
- 对于按时间点恢复,在备份列表上方单击"一键恢复"。
- 选择恢复日期和该日期下可恢复的时间区间,输入要恢复到的时间点,选择恢复方式,单击"确定"。
- sync_binlog:设置为默认值"1"表示MySQL每次事务提交时binlog同步写入磁盘,是最安全的设置;设置为"0"时表示MySQL不控制binlog的刷新,由文件系统控制缓存刷新,此时性能最好但安全性降低。
- max_connections:控制最大连接数,需要根据业务并发量合理设置。
- innodb_buffer_pool_instances:控制InnoDB缓冲池实例数量。
- innodb_page_cleaners:控制页面清理线程数量。
- 根据业务的复杂度合理配置数据库参数。
- 建议保持合理的活跃连接数。
- 避免长连接,长连接的缓存可能较大导致内存不足,建议定期释放长连接。
- 推荐使用内网连接,安全性更高且性能更好。
- 数据库规格:提供包年/包月计费方式,费用详情以实际界面为准。
- 备份存储(可选):免费备份空间为实例磁盘大小的100%,超出部分开始计费。
- 公网流量(可选):公网访问会产生带宽流量费。
- 存储空间:购买的存储空间与所选实例规格有关,扩容上限为4TB。
- 标签:1个实例最多支持20个标签配额。
- 日志保留:错误日志明细保留30天,慢日志明细保留7天。
- 实例名称:长度4-64个字符,包含中文时不超过64字节(一个中文字符占3个字节),必须以字母或中文开头。
- 备份名称:长度4-64个字符,必须以字母开头。
- rdsAdmin:管理账户,拥有最高权限,用于查询和修改实例信息、故障排查、迁移、恢复等操作。
- rdsRepl:复制账户,用于备实例在主实例上同步数据。
- rdsBackup:备份账户,用于后台的备份。
- rdsMetric:指标监控账户,用于采集数据库状态数据。
DAS提供了可视化的数据库管理界面,支持SQL执行、数据导入导出、性能监控等功能,特别适合不熟悉命令行的开发者快速上手。
3.2 通过命令行连接(内网)
Flexus云数据库RDS实例购买完成后,可以先登录到同一区域下的Flexus云服务器X实例,在云服务器上安装数据库客户端,然后通过命令行连接到实例。
MySQL命令行连接步骤:
PostgreSQL命令行连接步骤:
3.3 通过公网连接
当无法通过内网访问时,可以使用公网连接方式。公网访问需要绑定弹性公网IP并产生带宽流量费。一个弹性公网IP只允许绑定一个FlexusRDS for MySQL实例。
公网连接操作步骤:
3.4 通过JDBC连接(Java应用)
对于Java应用程序,可以使用JDBC驱动连接FlexusRDS实例。以下分别给出MySQL和PostgreSQL的JDBC连接示例。
MySQL JDBC连接示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class FlexusRDSMySQLDemo {
public static void main(String[] args) {
// 数据库连接配置
String host = "192.168.0.1"; // 替换为实际的内网或公网IP
String port = "3306";
String database = "testdb";
String username = "root";
String password = "your_password";
// JDBC连接URL(非SSL方式)
String jdbcUrl = "jdbc:mysql://" + host + ":" + port + "/" + database
+ "?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
// SSL方式连接(推荐生产环境使用)
// String jdbcUrl = "jdbc:mysql://" + host + ":" + port + "/" + database
// + "?requireSSL=true&useSSL=true&serverTimezone=UTC";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
System.out.println("成功连接到FlexusRDS for MySQL!");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VERSION()");
if (rs.next()) {
System.out.println("数据库版本: " + rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}PostgreSQL JDBC连接示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class FlexusRDSPostgreSQLDemo {
public static void main(String[] args) {
String host = "192.168.0.1";
String port = "5432";
String database = "testdb";
String username = "postgres";
String password = "your_password";
// JDBC连接URL(非SSL方式)
String jdbcUrl = "jdbc:postgresql://" + host + ":" + port + "/" + database
+ "?sslmode=disable";
// SSL方式连接(推荐生产环境使用)
// String jdbcUrl = "jdbc:postgresql://" + host + ":" + port + "/" + database
// + "?sslmode=require";
try {
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
System.out.println("成功连接到FlexusRDS for PostgreSQL!");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT version()");
if (rs.next()) {
System.out.println("数据库版本: " + rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}3.5 通过Python连接
Python开发者可以使用pymysql(MySQL)或psycopg2(PostgreSQL)库连接FlexusRDS实例。
Python连接MySQL示例:
import pymysql
# 数据库连接配置
config = {
'host': '192.168.0.1', # 替换为实际IP
'port': 3306,
'user': 'root',
'password': 'your_password',
'database': 'testdb',
'charset': 'utf8mb4'
}
try:
# 建立连接
conn = pymysql.connect(**config)
print("成功连接到FlexusRDS for MySQL!")
# 创建游标并执行查询
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
result = cursor.fetchone()
print(f"数据库版本: {result[0]}")
# 关闭连接
cursor.close()
conn.close()
except pymysql.Error as e:
print(f"连接失败: {e}")Python连接PostgreSQL示例:
import psycopg2
# 数据库连接配置
config = {
'host': '192.168.0.1',
'port': 5432,
'user': 'postgres',
'password': 'your_password',
'database': 'testdb'
}
try:
conn = psycopg2.connect(**config)
print("成功连接到FlexusRDS for PostgreSQL!")
cursor = conn.cursor()
cursor.execute("SELECT version()")
result = cursor.fetchone()
print(f"数据库版本: {result[0]}")
cursor.close()
conn.close()
except psycopg2.Error as e:
print(f"连接失败: {e}")4. 安全组与访问控制配置
为了保障数据库的安全性和稳定性,在使用Flexus云数据库RDS实例之前需要正确配置安全组规则。
4.1 内网连接的安全组配置
内网连接时,安全组配置分为两种情况:
4.2 公网连接的安全组配置
公网连接时,需要在RDS所在安全组配置入方向规则:
4.3 管理员账户与密码安全
创建实例页面只提供管理员root账户(MySQL)或postgres账户(PostgreSQL)。管理员账户的密码需要满足以下要求:
建议用户谨慎对root账户执行revoke、drop user、rename user操作,避免影响业务正常使用。
5. 备份与恢复
Flexus云数据库RDS提供了完善的备份与恢复机制,保障数据安全。
5.1 自动备份
FlexusRDS for MySQL提供了和实例磁盘大小相同的免费存储空间用于存放备份数据。备份存储用量超过数据库存储空间的100%后开始计费。自动备份保留天数默认为7天,不支持修改。备份文件保留7天可以满足绝大部分用户使用场景,如果需要保留超过7天可以创建手动备份。
5.2 手动备份
用户可以根据需要创建手动备份。手动备份可以通过控制台"备份恢复"页面进行操作。手动备份文件支持下载。
5.3 数据恢复
FlexusRDS支持通过备份文件恢复全量数据。恢复操作会将备份文件从OBS备份空间下载到实例上进行全量恢复,恢复时长和实例的数据量有关,平均恢复速率约为100MB/s。
恢复操作步骤:
5.4 数据迁移
使用数据复制服务可以快速解决多场景下数据库之间的数据流通问题。通过服务化迁移,免去了传统的DBA人力成本和硬件成本。用户也可以使用mysqldump等工具进行数据导入导出。
6. 参数调优与最佳实践
数据库参数是数据库系统运行的关键配置信息,设置不合适的参数值可能会影响业务。
6.1 关键参数说明
6.2 使用规范建议
根据华为云的最佳实践建议:
6.3 存储空间自动扩容
实例购买完成后可以根据业务需要开启存储空间自动扩容,扩容上限为4TB。自动扩容后系统会根据新的容量扣除存储费用。
7. 计费与成本管理
7.1 计费模式
Flexus云数据库RDS仅支持包年/包月计费方式。用户在购买时一次性付费,使用过程中不会再另外扣费。
7.2 计费项
Flexus云数据库RDS对以下项目收费:
7.3 服务到期与续费
包年/包月实例到期后无法在管理控制台进行操作,自动化监控或告警等运维也会停止。如果在保留期结束时没有续费,实例将终止服务,系统中的数据也将被永久删除。续费操作请参见实例续费相关文档。
8. 约束与限制
FlexusRDS for MySQL实例在使用上有一些固定限制,用来提高实例的稳定性和安全性。
8.1 规格与配额
8.2 命名限制
8.3 系统账户
创建Flexus云数据库RDS实例时,系统会自动创建以下系统账户用于后台运维管理,用户不可使用:
8.4 存储引擎
FlexusRDS for MySQL支持InnoDB存储引擎。
9. 常见问题解答
Q1:Flexus云数据库RDS和标准云数据库RDS有什么区别?
A:Flexus云数据库RDS是华为云面向中小企业和开发者推出的轻量化数据库服务,整体上属于RDS for MySQL和RDS for PostgreSQL产品序列。主要区别在于FlexusRDS规格更加轻量、购买方式仅支持包年包月,而标准版RDS提供更丰富的规格选项和按需计费模式。FlexusRDS开箱即用、便捷运维,适合入门级和中小规模业务场景。
Q2:FlexusRDS实例如何选择单机还是主备?
A:单机实例采用单个数据库节点部署,性价比高但故障后无法保障及时恢复,适合开发测试环境或个人学习。主备实例采用一主一备架构,支持跨可用区高可用,主节点故障后会自动切换,适合对业务连续性有较高要求的生产环境。
Q3:如何从外部网络访问FlexusRDS实例?
A:需要为实例绑定弹性公网IP,然后在安全组中配置入方向规则放通数据库端口(MySQL为3306,PostgreSQL为5432),并限制来源IP为可信地址。公网访问会产生带宽流量费。一个弹性公网IP只允许绑定一个FlexusRDS实例。
Q4:FlexusRDS的备份是如何收费的?
A:FlexusRDS提供了和实例磁盘大小相同的免费存储空间用于存放备份数据。备份存储用量超过数据库存储空间的100%后开始计费。自动备份保留7天,需要更长时间保留可以创建手动备份。
Q5:FlexusRDS支持哪些数据库版本?
A:FlexusRDS for MySQL支持MySQL 8.0和5.7版本。FlexusRDS for PostgreSQL支持PostgreSQL 17、16、15、14、13版本(12版本仅存量经营,不支持新购)。
Q6:应用程序连接FlexusRDS时出现连接超时怎么办?
A:首先检查安全组规则是否正确放通了数据库端口;其次确认使用的是内网还是公网地址,内网连接需要在同一VPC内;然后检查数据库实例状态是否正常运行;最后检查应用程序连接池配置是否合理,避免长连接导致内存不足。



