通过搭配使用MySQL和DRDS(分布式关系型数据库中间件),可以实现数据的自动化水平拆分和在线平滑扩缩容,进而实现数据库服务能力的线性扩展。此外,结合读写分离的支持,还能够提升数据库的读取性能,满足高并发读取的需求。
实现原理
通过DRDS数据库中间件隐藏底层数据库的复杂性,提供统一的接口给应用开发人员操作数据库。对于应用开发人员来说,他们并不需要了解中间件的存在,只需要理解数据库的概念。他们可以通过逻辑库来创建和管理逻辑表,并使用标准的SQL语句对表进行增删改查操作,就像在传统的单个数据库中一样。中间件负责将这些操作转换为底层物理数据库的操作,同时处理分片规则、数据的分布和复制,以及提供高可用性和性能优化等功能。
前提条件
- 拥有天翼云实名认证账号。
- DRDS实例与MySQL实例处于相同的VPC,以保证网络连通。
- 建议DRDS实例与应用程序、MySQL实例选择相同的安全组,三者网络访问不受限制。如果选择了不同的安全组,请注意添加安全组访问规则,开通网络访问。
创建MySQL实例
具体操作,请参见创建MySQL实例。
创建DRDS实例
具体操作,请参见购买分布式关系型数据库实例。
DRDS实例关联MySQL实例及基本用法
具体步骤如下:
- 进入DRDS管理控制台,选择【实例列表】页面。
- 在【实例列表】页面中,选择待关联实例的【操作】列的【管理】按钮,进入实例的【基本信息】页面。
- 在【基本信息】页面,点击左上角的【关联RDS管理】按钮。
- 在关联RDS页面单击【添加关联RDS】按钮,在弹出输入框中,选择要关联的RDS实例。输入【用户名】和【密码】,点击【确认】添加要关联的RDS。
- 创建schema。
- 创建DRDS帐号。
- 连接DRDS实例或逻辑库。
读写分离
DRDS使用以下两种方式开启读写分离功能。
balance属性配置
进入DRDS管理控制台,分组管理--默认分组--关联RDS设置--属性设置。读写分离配置参数有“关闭”,“读语句发往读库”,“读语句随机发往读库和写库”选项:
- “关闭”:表示不开启读写分离,所有语句发往写节点。
- “读语句发往读库”:表示开启读写分离,所有事务外(autocommit=1)的select语句发往读节点;所有事务内(autocommit=0) 的语句发往写节点。
- “读语句随机发往读库和写库”:表示开启读写分离,所有事务外(autocommit=1)的select语句随机发往读节点或写节点;所有事务内 (autocommit=0)的语句发往写节点。
HINT语句
使用 /* !HINT({"balance":"?"})*/ 注解可以强制指定 select 语句按照指定规则进行读写分离,balance有三种取值方式,与DRDS的balance属性类似:
- /* !HINT({"balance":"0"})*/ 强制 select 语句发往写节点 。
- /* !HINT({"balance":"1"})*/ 强制 select 语句发往读节点 。
- /* !HINT({"balance":"2"})*/ 强制 select 语句随机发往数据库读节点或写节点。