创建SQL Server只读实例

当您面临数据库读取压力大幅增加时,可以通过创建一个或多个只读实例来扩展读取能力,提高应用的整体吞吐量。RDS SQL Server基于源生AlwaysOn技术,通过物理复制方式复制主实例生成只读实例,只读实例数据与主实例保持一致,并且主实例的数据更新也会自动同步到所有只读实例中。

说明
  • 只读实例的特性、限制、使用场景等,请参见SQL Server只读实例简介

  • RDS SQL Server当前对于满足条件的主实例支持只读实例快速初始化能力,该能力将有效缩短只读实例的创建时间至分钟级别,且该过程对主实例I/O无任何影响。具体详情,请参见只读实例快速初始化能力简介

前提条件

您已创建SQL Server主实例,且主实例满足以下条件:

  • 实例版本:2017 企业集群版、2019 企业集群版、2022 企业集群版

  • 实例系列:集群系列

  • 实例存储类型:ESSD云盘、通用云盘

  • 计费方式:包年包月或按量付费,Serverless实例不支持创建只读实例。

说明
  • 创建SQL Server只读实例前,请在基本信息页面确认主实例版本或系列等。

  • 如果主实例为基础系列或高可用系列,且需要创建只读实例时,您可选择将原实例升级为企业集群系列后再创建只读实例。具体操作,请参见升级数据库版本

注意事项

  • 只能在主实例内创建只读实例,不支持将已有主实例切换为只读实例。

  • 由于创建只读实例实际上是从备实例复制数据,因此不会影响主实例。

  • 只读实例数量:一个主实例下最多可创建7个只读实例。

  • 实例备份:因主实例已有备份,只读实例暂不支持备份设置以及手动发起备份;不支持通过备份文件或任意时间点创建临时实例;不支持通过备份集覆盖实例;创建只读实例后,主实例将不支持通过备份集直接覆盖实例来恢复数据。

  • 数据迁移:不支持将数据迁移至只读实例。

  • 数据库管理:不支持创建和删除数据库。

  • 账号管理:不支持创建和删除账号,不支持为账号授权以及修改账号密码功能。

  • 实例创建时间:创建只读实例所需的时间与主实例的数据量和IO性能成正相关。因此,在创建只读实例前,建议对主实例的数据量和IO性能进行评估和优化,以减少创建时间。

  • 存储空间:只读实例存储空间不能低于主实例。只读实例存储空间范围详情,请参见RDS SQL Server只读实例规格列表

费用说明

创建只读实例会产生费用,支持包年包月和按量付费两种方式计费。更多详情,请参见只读实例价格

说明

实例为Serverless计费方式时,不支持创建只读实例。

创建只读实例

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 实例分布区域的只读实例右侧单击添加

    image.png

  3. 配置基础资源,包含计费方式、存储类型、可用区等,单击下一步:实例配置

    1. 选择计费方式

      计费方式

      建议

      优点

      包年包月

      长期使用RDS实例,请选择包年包月(一次性付费),并在页面左下角选择购买时长

      包年包月比按量付费更实惠,且购买时长越长,折扣越多。

      按量付费

      短期使用RDS实例,请选择按量付费(按小时付费)。

      您可以先创建按量付费实例,确认实例符合要求后转包年包月

      可随时释放实例,停止计费。

    2. 选择数据库存储类型

      支持的存储类型详情,请参见存储类型

    3. 选择实例所在的可用区

      说明
      • 可用区是地域中的一个独立物理区域,同一地域不同可用区没有实质性区别。

      • ECS访问同可用区RDS的性能比访问同地域其它可用区RDS更好,但差别较小。

    4. 选择实例规格

      选择分类(独享或通用)和具体规格(CPU核数、内存、最大连接数等)。

      分类

      说明

      特点

      通用规格

      独享:内存和I/O

      共享:CPU和存储

      价格低,性价比高。

      独享规格

      独享:CPU、内存、存储和I/O

      说明

      独占型是独享型的顶配,独占整台服务器的CPU、内存、存储和I/O。

      性能更好更稳定。

      说明
      • 每种规格都有对应的CPU核数、内存、最大连接数和最大IOPS。详情请参见RDS SQL Server只读实例规格列表

      • 为保证数据同步有足够的I/O性能支撑,建议只读实例的规格(内存)不小于主实例。

    5. 选择存储空间

      存储空间包括数据空间、系统文件空间、日志文件空间和事务文件空间。存储空间范围(最小值和最大值)与前面选择的实例规格和存储类型有关。您可以调整存储空间,最少增减5 GB。

      说明
      • 只读实例存储空间不能低于主实例。

      • 部分本地SSD盘的存储空间大小与实例规格绑定,ESSD云盘或SSD云盘不受此限制。详情请参见主实例规格列表

  4. 配置实例资源,包含网络类型、交换机、资源组等,单击下一步:确认订单

    1. 网络类型固定配置为专有网络

    2. 选择VPC和主节点交换机

      建议选择与ECS实例相同的VPC。ECS实例与RDS实例位于不同VPC时,无法内网互通。

      说明

      VPC相同,交换机不同,ECS实例与RDS实例也可以内网互通。

    3. 设置更多自定义参数。如无特殊需求,可保留默认值

      参数

      说明

      实例释放保护

      计费方式按量付费时,您可以为实例开启实例释放保护,防止实例被意外释放。更多信息,请参见开启和关闭实例释放保护

      资源组

      选择默认或自定义的资源组,方便实例管理。

      实例描述

      自定义,长度为2~255个字符,以大小字母或中文开头,可包含数字,下划线(_)或短划线(-)。

      系统字符集排序规则

      默认为主实例的系统字符集排序规则。

      标签

      您可以为实例绑定标签,对实例进行分类管理。

  5. 确认参数配置购买量购买时长(仅包年包月实例),勾选服务协议,单击去支付,并完成支付。

    说明
    • 对于包年包月实例,建议选中到期自动续费,避免因忘记续费而导致业务中断。

    • 实例创建需要约1~10分钟。请刷新页面查看。

查看只读实例

您可以在实例列表页面、目标实例的集群管理页面、目标实例的基本信息页面查看只读实例具体信息。

实例列表页面查看

  1. 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。

  2. 在实例列表中找到只读实例,单击该只读实例的ID。

基本信息页面查看

您可以在主实例的基本信息页面查看只读实例。

  1. 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。

  2. 在实例列表中找到主实例,单击该主实例的ID。

  3. 在主实例的基本信息页面,把鼠标悬停于只读实例的数量上,单击只读实例的ID。

    image.png

集群管理页面查看

前提条件

已在集群管理页面开通读写分离

操作步骤

  1. 登录RDS管理控制台

  2. 在实例列表中找到主实例,单击该主实例的ID。

  3. 在左侧导航栏中,单击集群管理

  4. 找到只读实例,单击该只读实例的ID。

相关操作

常见问题

只读实例的计费方式可以转化吗?

可以。具体操作,请参见按量付费转包年包月包年包月转按量付费

变更只读实例的配置、释放只读实例、转化只读实例计费方式会影响主实例吗?

不会。

主实例上创建的账号在只读实例上可以用吗?

主实例创建的账号会同步到只读实例,只读实例无法管理账号。账号在只读实例上只能进行读操作,不能进行写操作。

如果主实例出现故障,是否支持把只读实例转变为常规实例?

不支持。

只读实例上的数据支持手动备份或自动备份吗?

由于备份在主实例中进行,只读实例暂不支持备份设置以及手动发起备份。

只读实例是否支持并行复制?

支持,RDS SQL Server默认为并行复制。

事务日志的清除机制是怎样的?

RDS SQL Server事务日志分为两个阶段:

  • 日志截断:通常每次的日志备份会自动做日志截断。但如果出现长事务、同步等待或内核相关问题时,截断会无法生效。

  • 日志收缩:每日的常规备份包括日志收缩,您也可以通过控制台进行日志收缩。具体操作,请参见收缩事务日志

如何理解只读实例的复制原理?若出现复制延迟,一般出现原因以及解决方法是什么?如何查看复制延迟?

创建只读实例时会从备实例复制数据,数据与主实例一致,主实例的数据更新也会自动同步到所有只读实例。

通常出现复制延迟原因如下:

  • 原因:主实例规格大,只读实例规格过小,导致主备延迟过大。只读实例规格过小,大主库拖小只读,导致主备延迟过大。

    解决方法:升级只读实例规格。更多信息,请参见变更配置

  • 原因:存在并发的大事务导致延迟。

    解决方法:检查处理存在的大事务,一般存在大事务原因可能包括锁问题、慢SQL问题以及临时查询未提交问题等。

  • 原因:内核Bug导致的复制异常。

    解决方法:建议升级实例大版本内核小版本解决。

您可通过SQL Server 自治服务进行诊断查看或通过如下SQL查看:

SELECT
    ag.name AS [availability_group_name]
    , d.name AS [database_name]
    , ar.replica_server_name AS [replica_instance_name]
    , drs.truncation_lsn
    , drs.log_send_queue_size
    , drs.redo_queue_size
FROM
    sys.availability_groups ag
    INNER JOIN sys.availability_replicas ar
        ON ar.group_id = ag.group_id
    INNER JOIN sys.dm_hadr_database_replica_states drs
        ON drs.replica_id = ar.replica_id
    INNER JOIN sys.databases d
        ON d.database_id = drs.database_id
WHERE drs.is_local=0
ORDER BY
    ag.name ASC, d.name ASC, drs.truncation_lsn ASC, ar.replica_server_name ASC