使用专用日志卷(DLV)
您可以将专用日志卷(DLV)用于使用预调配 IOPS(PIOPS)存储的数据库实例。DLV 将 PostgreSQL 数据库事务日志、MySQL/MariaDB 重做日志和二进制日志移动到与包含数据库表的卷不同的存储卷中。DLV 可以提高事务写入日志的效率和一致性。DLV 非常适合分配了较大存储空间、每秒 I/O(IOPS)要求较高或工作负载对延迟敏感的数据库。
DLV 支持 PIOPS 存储(io1 和 io2 Block Express),创建它们时的固定大小为 1000GiB,预调配 IOPS 为 3000。
对于以下版本,Amazon RDS 在所有 Amazon Web Services 区域中都支持 DLV:
MariaDB 10.6.7 及更高的 10 版本
MySQL 8.0.28 及更高的 8 版本
PostgreSQL 13.10 及更高的 13 版本、14.7 及更高的 14 版本,以及 15.2 及更高的 15 版本
RDS 对多可用区部署支持 DLV。修改或创建多可用区实例时,会同时为主实例和辅助实例创建 DLV。
RDS 对于只读副本支持 DLV。如果主数据库实例启用了 DLV,则启用 DLV 后创建的所有只读副本也将具有 DLV。除非经过明确修改,否则在切换到 DLV 之前创建的任何只读副本都不会启用 DLV。我们建议在启用 DLV 之前连接到主实例的所有只读副本也要手动修改为具有 DLV。
注意
对于 5 TiB 或更大的数据库配置,建议使用专用日志卷。
有关每个数据库引擎可用的已分配存储、预调配 IOPS 和存储吞吐量范围的信息,请参阅 预置 IOPS SSD 存储。
启用和禁用 DLV 时的注意事项
启用和禁用 DLV 可能很耗时并导致停机。该过程包括在启用时将所有事务日志或重做和二进制日志(具体取决于数据库引擎)复制到新卷,或者在禁用时复制回原始存储。此操作的持续时间受多个因素影响:
-
事务日志数量:
-
具有更多事务的较大数据库会生成更多日志,从而增加复制所需的时间。
-
如果复制插槽处于非活动状态或复制正处于滞后状态,则事务日志可能会在主数据库实例上累积,从而增加复制所需的时间。确保复制是最新的,并移除所有不必要的插槽。
-
-
存储配置:
-
数据库实例 EBS 带宽 – 带宽越高,则支持的数据传输速度越快。
-
预调配 IOPS 数 – 每秒进行读写操作的次数(IOPS)越多,复制过程就越快。
-
-
数据库活动 - 配置期间的高水平数据库活动可能会减慢此过程。
为了最大限度地减少停机时间,我们建议您将此过程计划和安排在活动较少的期间或维护时段进行。
创建数据库实例时启用 DLV
您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 创建启用了 DLV 的数据库实例。
在新数据库实例上启用 DLV
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
选择创建数据库。
-
在创建数据库实例页面上,选择支持 DLV 的数据库引擎。
-
对于存储:
-
选择预调配 IOPS SSD(io1)或预调配 IOPS SSD(io2)。
-
输入所需的分配的存储空间和预调配 IOPS。
-
展开专用日志卷,然后选择开启专用日志卷。
-
-
根据需要选择其它设置。
-
选择创建数据库。
创建数据库后,专用日志卷的值将显示在数据库详细信息页面的配置选项卡上。
要在创建数据库实例时使用预调配 IOPS 存储启用 DLV,请使用 Amazon CLI 命令 create-db-instance。设置以下参数:
-
--dedicated-log-volume
– 启用专用日志卷。 -
--storage-type
– 对于预调配 IOPS,设置为io1
或io2
。 -
--allocated-storage
– 要为数据库实例分配的存储量(以 GiB 为单位)。 -
--iops
– 数据库实例的预调配 IOPS 的数量,以每秒的 I/O 操作数量表示。
要在创建数据库实例时使用预调配 IOPS 存储启用 DLV,请使用 Amazon RDS API 操作 CreateDBInstance。设置以下参数:
-
DedicatedLogVolume
– 要启用专用日志卷,请设置为true
。 -
StorageType
– 对于预调配 IOPS,设置为io1
或io2
。 -
AllocatedStorage
– 要为数据库实例分配的存储量(以 GiB 为单位)。 -
Iops
– 数据库实例的 IOPS 速率,以每秒的 I/O 操作数量表示。
在现有数据库实例上启用 DLV
您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 修改数据库实例来启用 DLV。
在修改数据库实例的 DLV 设置后,必须重启数据库实例。
在现有数据库实例上启用 DLV
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases (数据库)。
要筛选数据库实例的列表,对于 Filter databases (筛选数据库),请输入 Amazon RDS 用于筛选结果的文本字符串。将仅显示其名称包含该字符串的数据库实例。
-
选择具有要修改的预调配 IOPS 存储的数据库实例。
-
选择修改。
-
在修改数据库实例页面上:
-
对于存储,展开专用日志卷,然后选择开启专用日志卷。
-
-
选择继续。
-
选择立即应用可立即将更改应用到数据库实例。或选择 Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用) 以在下一个维护时段内应用更改。
-
检查将更改的参数,然后选择修改数据库实例以完成修改。
专用日志卷的新值将显示在数据库详细信息页面的配置选项卡上。
要使用预调配 IOPS 存储在现有数据库实例上启用或禁用 DLV,请使用 Amazon CLI 命令 modify-db-instance
。设置以下参数:
-
--dedicated-log-volume
– 启用专用日志卷。使用
--no-dedicated-log-volume
(默认值)将禁用专用日志卷。 -
--apply-immediately
– 使用--apply-immediately
可立即应用更改。使用
--no-apply-immediately
(默认值)可在下一个维护时段内应用更改。
要使用预调配 IOPS 存储在现有数据库实例上启用或禁用 DLV,请使用 Amazon RDS API 操作 ModifyDBInstance
。设置以下参数:
-
DedicatedLogVolume
– 将此选项设置为true
可启用专用日志卷。将此选项设置为
false
可禁用专用日志卷。这是默认值。 -
ApplyImmediately
– 将此选项设置为True
可立即应用更改。将此选项设置为
False
(默认值)可在下一个维护时段内应用更改。
监控 DLV 存储
可以使用 CloudWatch 中的 FreeStorageSpaceLogVolume
指标来监控 DLV 存储使用情况。
可以对 RDS for PostgreSQL 使用以下查询来查找事务日志占用的大小:
SELECT pg_size_pretty(COALESCE(sum(size), 0)) AS total_wal_generated_size FROM pg_catalog.pg_ls_waldir();
如果 DLV 的存储空间用完,则数据库实例将进入 storage-full
状态,从而导致停机。