华为云云数据库 RDS for MariaDB 从零到一对接使用完全指南
1. 引言:为什么选择华为云 RDS for MariaDB
MariaDB作为MySQL社区版的重要分支,凭借其卓越的性能、丰富的存储引擎和活跃的开源生态,在Web应用、电商平台、数据分析等场景中得到了广泛应用。华为云云数据库 RDS for MariaDB将开源数据库能力与云原生基础设施深度融合,提供开箱即用的数据库服务。用户无需关心底层服务器运维、补丁更新和故障恢复等繁琐工作,只需聚焦于业务逻辑开发与数据模型设计。
与自建数据库相比,华为云RDS for MariaDB具备以下核心优势:应用无需改造即可无缝迁移;管理控制台提供全面的监控信息,简单易用、灵活管理;随时根据业务情况弹性伸缩所需资源,按需开支。本文将从零开始,系统讲解华为云RDS for MariaDB的对接使用全流程,涵盖实例创建、多种连接方式、数据迁移、账号权限管理、参数调优、高可用架构、备份恢复、监控告警和安全防护等核心环节,并提供可落地的代码示例与运维建议。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 产品选型与实例创建
2.1 准备工作
在购买RDS for MariaDB实例之前,需要完成以下准备工作:首先注册华为账号并开通华为云,并进行实名认证;其次确保账户有足够金额,可根据需要进行账户充值;最后如果需要对华为云上的资源进行精细管理,应使用统一身份认证服务IAM创建IAM用户及用户组并授权,使得IAM用户获得具体的操作权限。
2.2 计费模式选择
华为云RDS for MariaDB提供两种计费模式。
包年/包月属于预付费模式,先付费后使用,按照订单周期结算,购买周期越长折扣越大,适合业务量长期稳定的成熟系统。按需计费属于后付费模式,先使用后付费,秒级计费、每小时扣费一次,不足一小时按实际时长收费,允许用户根据业务负载灵活调整资源,避免资源预置过多或不足的风险,适合开发测试环境或负载波动较大的业务场景。两种计费模式之间也支持相互转换。
2.3 核心配置参数
进入购买云数据库RDS页面后,需要依次完成以下核心配置。
区域选择:资源所在的地理区域,不同区域内的产品内网不互通,且创建后不可更换,建议选择与业务服务器相同的区域以降低网络延迟。
数据库引擎与版本:选择MariaDB引擎,当前主流版本包括10.5和10.11,不同区域支持的版本可能略有差异,以控制台实际界面为准。
实例类型:主备实例采用一主一备的经典高可用架构,主备节点规格一致,备机在主机故障时自动切换,适合生产环境。单机实例仅包含单个数据库节点,性价比高,适合个人学习、微型网站和中小企业的开发测试环境。
存储类型与空间:SSD云盘提供高IOPS和低延迟,是绝大多数场景的首选。存储空间根据数据量预估选择,后续可按需扩容。
虚拟私有云VPC:实例所属的VPC网络,后续连接实例时,ECS需与RDS实例处于同一VPC才能使用内网连接。
完成上述配置后单击立即购买,等待实例状态变为正常即可开始使用。
3. 连接方式详解
华为云RDS for MariaDB提供使用数据管理服务DAS、内网和公网三种连接方式。用户可根据使用场景灵活选择。
3.1 方式一:通过数据管理服务DAS连接(推荐)
数据管理服务DAS是一款专业的简化数据库管理工具,提供优质的可视化操作界面,大幅提高工作效率,让数据管理变得既安全又简单。云数据库RDS服务默认为您开通了远程主机登录权限,推荐您使用更安全便捷的数据管理服务连接实例。
操作步骤:登录华为云控制台,进入云数据库RDS服务,在实例管理页面找到目标实例,单击实例名称进入概览页,在右上角单击登录按钮,跳转至DAS服务页面,输入数据库账号和密码即可完成登录。DAS支持执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能地管理数据库。
3.2 方式二:通过MariaDB命令行客户端连接
云数据库RDS实例购买完成后,可以先登录到Linux弹性云服务器,在ECS上安装MariaDB客户端,然后执行MariaDB命令行通过MariaDB内网IP连接到实例。
操作流程:首先购买Linux ECS,并确认ECS实例与RDS for MariaDB实例在同一区域、同一VPC内。然后测试ECS到RDS for MariaDB实例内网IP和端口的网络连通性,并在ECS上安装MariaDB客户端。最后使用命令行通过内网IP和端口连接RDS for MariaDB实例。
命令行连接示例:
mysql -h <内网IP地址> -P 3306 -u root -p当不满足通过内网IP地址访问RDS实例的条件时,可以使用公网访问,建议单独绑定弹性公网IP连接弹性云服务器或公网主机与RDS for MariaDB实例。RDS提供两种连接方式通过MariaDB客户端连接实例:非SSL连接和SSL连接。其中SSL连接实现了数据加密功能,具有更高的安全性。
SSL连接命令示例:
mysql -h <公网IP地址> -P 3306 -u root -p --ssl-ca=/home/ca.pem3.3 方式三:通过JDBC应用程序连接
应用程序接入数据库最常用的方式是JDBC。华为云RDS for MariaDB完全兼容MySQL通信协议,因此使用标准的MariaDB或MySQL JDBC驱动即可完成连接。通过JDBC连接实例的方式包括两种:无需下载SSL证书和需下载SSL证书。使用SSL证书连接通过了加密功能,具有更高的安全性。RDS for MariaDB新实例默认关闭SSL数据加密。
JDBC连接格式:
jdbc:mysql://<实例IP>:<实例端口>/<数据库名>?useSSL=false您可以在实例连接管理页面的连接信息区域查看实例IP和端口。如果通过公网连接,实例IP为该实例已绑定的弹性公网IP。实例端口默认为3306。
Java代码示例(非SSL连接):
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MariaDBConnection {
public static void main(String[] args) {
String url = \"jdbc:mysql://192.168.0.1:3306/mydb?useSSL=false&serverTimezone=UTC\";
String user = \"root\";
String password = \"your_password\";
try {
Class.forName(\"org.mariadb.jdbc.Driver\");
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(\"SELECT VERSION()\");
if (rs.next()) {
System.out.println(\"Database version: \" + rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}Java代码示例(SSL连接):
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MariaDBSSLConnection {
public static void main(String[] args) {
String url = \"jdbc:mysql://192.168.0.1:3306/mydb?useSSL=true&requireSSL=true&serverTimezone=UTC\";
String user = \"root\";
String password = \"your_password\";
System.setProperty(\"javax.net.ssl.trustStore\", \"/path/to/truststore\");
System.setProperty(\"javax.net.ssl.trustStorePassword\", \"truststore_password\");
try {
Class.forName(\"org.mariadb.jdbc.Driver\");
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(\"SELECT VERSION()\");
if (rs.next()) {
System.out.println(\"Database version: \" + rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}Python代码示例(使用PyMySQL):
import pymysql
def connect_mariadb():
connection = pymysql.connect(
host='192.168.0.1',
port=3306,
user='root',
password='your_password',
database='mydb',
charset='utf8mb4'
)
try:
with connection.cursor() as cursor:
cursor.execute('SELECT VERSION()')
result = cursor.fetchone()
print(f'Database version: {result[0]}')
finally:
connection.close()
if __name__ == '__main__':
connect_mariadb()Python代码示例(使用SQLAlchemy ORM):
from sqlalchemy import create_engine, text
def connect_with_sqlalchemy():
engine = create_engine(
'mysql+pymysql://root:your_password@192.168.0.1:3306/mydb?charset=utf8mb4'
)
with engine.connect() as conn:
result = conn.execute(text('SELECT VERSION()'))
row = result.fetchone()
print(f'Database version: {row[0]}')
if __name__ == '__main__':
connect_with_sqlalchemy()4. 数据迁移与导入
4.1 使用数据复制服务DRS进行实时迁移
华为云数据复制服务DRS支持将数据从源数据库实时迁移到目标数据库。在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足相应的权限要求,才能启动迁移任务。DRS会在预检查阶段对数据库账号权限进行自动检查,并给出处理建议。
实时迁移是指在数据复制服务能够同时连通源数据库和目标数据库的情况下,只需要配置迁移的源、目标数据库实例及迁移对象即可完成整个数据迁移过程。DRS会帮助用户对比源端和目标端的指标和数据,帮助确定合适的业务割接时机,实现最小化业务中断的数据库迁移。
4.2 实时同步
实时同步是指在不同的系统之间,将数据通过同步技术从一个数据源拷贝到其他数据库,并保持一致,实现关键业务的数据实时流动。实时同步不同于迁移,迁移是以整体数据库搬迁为目的,而实时同步是维持不同业务之间的数据持续性流动。
以MySQL到RDS for MariaDB的实时同步为例,在实时同步管理页面单击创建同步任务,选择同步类型、源库和目标库信息,配置同步对象后启动任务。DRS会根据用户选择,在预检查阶段对同步对象进行自动检查。
4.3 传统数据导入方式
除了DRS服务外,用户也可以使用传统的数据库导入导出方式进行数据迁移。相同引擎数据库之间数据导入导出,称之为同构型迁移。可以使用mysqldump工具导出数据,再通过mysql命令行导入到RDS for MariaDB实例中。
数据导出示例:
mysqldump -h 源数据库IP -P 3306 -u root -p --databases mydb > mydb.sql数据导入示例:
mysql -h RDS实例IP -P 3306 -u root -p < mydb.sql5. 账号权限与安全管理
5.1 IAM权限管理
华为云使用统一身份认证服务IAM进行精细的权限管理。默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得相应的操作权限。如果需要使用到对接其他服务的一些功能时,除了需要配置RDS ReadOnlyAccess权限外,还需要配置对应服务的权限。使用控制台连接实例时,除了需要配置RDS ReadOnlyAccess权限外,您还需要配置数据管理服务DAS FullAccess权限后,才可正常使用控制台登录数据库实例。
5.2 数据库账号管理
在RDS for MariaDB实例中,可以创建多个数据库账号并授予不同的权限,实现数据库层面的访问控制。如果忘记数据库管理员账号密码,可以重新设置密码。如果root账号自身出现问题,比如丢失或者删除,可以通过重置密码的方法恢复root账号权限。
5.3 安全组配置
安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求并相互信任的弹性云服务器和云数据库RDS实例提供访问策略。为了保障数据库的安全性和稳定性,在使用RDS数据库实例之前,您需要设置安全组,开通需访问数据库的IP地址和端口。通过弹性公网IP连接RDS实例时,需要为RDS所在安全组配置相应的入方向规则。
5.4 SSL数据加密
SSL连接实现了数据加密功能,可以保护数据在传输过程中的安全性。RDS for MariaDB新实例默认关闭SSL数据加密。开启SSL请参考设置SSL数据加密。需要注意的是,SSL连接实现了数据加密功能,但同时也会增加网络连接响应时间和CPU消耗。对于性能敏感的生产环境,需要根据实际业务需求权衡安全性与性能之间的平衡。
6. 参数调优与性能优化
6.1 数据库参数管理
您可以使用数据库参数模板中的参数来管理数据库引擎配置。数据库参数模板就像是引擎配置值的容器,这些值可应用于一个或多个数据库实例。您可以修改用户创建的数据库参数模板中的参数值,但不能更改默认数据库参数模板中的参数值。当您修改当前实例的参数模板并保存后,仅应用于当前实例,不会对其他实例造成影响。
在RDS管理控制台的左侧导航栏选择参数管理,根据参数模板类型进行相应操作。您可以在控制台查看实例的参数修改情况。
6.2 性能优化建议
根据业务的复杂度,合理配置RDS for MariaDB参数。建议保持合理的活跃连接数。避免长连接,长连接的缓存可能较大,导致内存不足,建议定期释放长连接。
架构设计和库表索引设计会影响查询性能,良好的设计可以提高查询性能,反之会出现很多慢SQL。如果产生了慢日志,可以通过查看慢日志来确定是否存在运行缓慢的SQL查询,以及各个查询的性能特征,从而定位查询运行缓慢的原因。部分参数设置不当会导致性能变慢。
如果CPU使用率很高或接近100%,会导致数据读写处理缓慢、连接缓慢等,从而影响业务正常运行。可以创建只读实例专门负责查询,减轻主实例负载,分担数据库压力。
7. 高可用与备份恢复
7.1 高可用架构
主备实例采用一主一备的经典高可用架构,主备实例的每个节点的规格保持一致。备机提高了实例的可靠性,创建主机的过程中会同步创建备机,备机创建成功后用户不可见。针对灾难性的故障,RDS有高可用工具会自动进行备份重建。
7.2 只读实例
在对数据库有少量写请求但有大量读请求的应用场景下,单个实例可能无法抵抗读取压力,甚至对主业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,您可以在某个区域中创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,以此增加应用的吞吐量。
7.3 备份策略
系统根据您指定的备份保留期保存数据库实例的自动备份。开启自动备份策略后,会自动触发一次全量备份,备份方式为物理备份。之后会按照策略中的备份时间段和备份周期进行全量备份。云数据库RDS支持将备份文件存放到另一个区域存储,某一区域的实例故障后,可以在异地区域使用备份文件在异地恢复到新的RDS实例,用来恢复业务。实例开启跨区域备份策略后,会自动将该实例的备份文件备份到目标区域。
7.4 数据恢复
云数据库RDS for MariaDB支持以下恢复方式:实例级恢复支持使用已有的自动备份或手动备份恢复整个实例的数据;库表级恢复支持通过自动备份文件将数据库表恢复到指定的时间点。如果需要,您可以将数据恢复到备份保留期中的任意时间点。通过备份文件恢复到实例上,会从OBS备份空间中将该备份文件下载到实例上进行全量恢复,恢复时长和实例的数据量有关。
8. 监控告警与运维管理
8.1 监控指标
RDS与云监控服务CES配合,实时监控用户账户中的实例,并根据设置报告告警和发送通知。您可以实时获取实例的运行指标和存储使用情况的详细信息。如果业务需要关注CPU使用率、磁盘利用率和连接数使用率等指标,可以通过管理告警规则配置对应的指标和告警策略。
8.2 告警规则设置
设置云数据库RDS服务的告警规则包括设置告警规则名称、资源类型、维度、监控对象、监控指标、告警阈值、监控周期和是否发送通知等参数。告警策略中,是否触发告警取决于连续周期的数据是否达到阈值。例如CPU使用率监控周期为5分钟,连续三个周期平均值大于等于80%,则触发告警。
8.3 事件监控
事件监控提供了事件类型数据上报、查询和告警的功能。方便您将业务中的各类重要事件或对云资源的操作事件收集到云监控服务,并在事件发生时进行告警。命名空间为SYS.RDS。
9. 磁盘扩容与规格变更
9.1 磁盘扩容
随着业务数据的增加,原来申请的数据库磁盘容量可能会不足。尤其当实例显示磁盘空间满状态,且数据库不可进行写入操作时,您需要为RDS for MariaDB实例进行扩容。当实例处于磁盘空间满状态时,需扩容至磁盘空间使用率小于85%才可使实例处于可用状态,使数据库恢复正常的写入操作。磁盘扩容期间,服务不中断。云数据库RDS for MariaDB服务只支持扩容磁盘存储空间大小,不支持变更存储类型。
9.2 规格变更
CPU和内存规格可根据业务需要进行变更,支持规格升配也支持降配。当实例的状态由规格变更中变为正常,则说明变更成功。
10. 常见问题解答
问1:RDS for MariaDB与自建MariaDB有哪些主要区别?
答:华为云RDS for MariaDB是托管的云数据库服务,用户无需关心底层服务器运维、补丁更新和故障恢复等繁琐工作。它提供了开箱即用的数据库服务,具备自动备份、高可用、监控告警等企业级特性,而自建数据库需要用户自行完成所有这些运维工作。
问2:如何选择RDS for MariaDB的实例类型?
答:主备实例采用一主一备的经典高可用架构,适合生产环境。单机实例仅包含单个数据库节点,性价比高,适合个人学习、微型网站和中小企业的开发测试环境。对于读多写少的场景,可以额外创建只读实例来分担查询压力。
问3:内网连接和公网连接有什么区别?
答:当应用部署在弹性云服务器上,且该弹性云服务器与RDS for MariaDB实例处于同一区域、同一VPC时,建议使用内网IP连接,这种方式延迟低、安全性高且不产生公网流量费用。不能通过内网访问时,可以绑定弹性公网IP使用公网连接,但需要注意公网流量会产生费用。
问4:SSL加密连接对性能有什么影响?
答:SSL连接实现了数据加密功能,可以保护数据传输过程中的安全性,但同时也会增加网络连接响应时间和CPU消耗。对于性能敏感的生产环境,需要根据实际业务需求在安全性与性能之间做出权衡。
问5:如何排查RDS for MariaDB的慢查询问题?
答:可以通过查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征。同时需要检查架构设计和库表索引设计是否合理。部分数据库参数设置不当也会导致性能变慢。也可以在控制台查看实例的参数修改情况来辅助排查。
问6:RDS for MariaDB的备份可以保留多久?
答:系统根据您指定的备份保留期保存数据库实例的自动备份。云数据库RDS for MariaDB支持长达732天的自动备份恢复,数据不丢失。您也可以创建手动备份来长期保存特定时间点的数据。




