IBM Cloud Docs
更改部署配置

更改部署配置

IBM Cloud® Databases for MySQL 允许您更改某些 MySQL 配置设置,以便您可以根据用例调整 MySQL 数据库。 要对数据库配置进行永久更改,请使用 Cloud Databases CLI-pluginAPI 将更改写入部署的配置文件。

配置是在模式中定义的。 要进行更改,请将包含设置及其新值的 JSON 对象发送到 API 或 CLI。 例如,在 CLI 或 API 中,使用如下命令将 max_connections 设置为 150:

{"configuration":{"max_connections":150}}

有关更多信息,请参阅 管理 MySQL Connections

如何计算MySQL"max_connections 变量

max_connections 是 MySQL 中的配置参数,用于确定可以与数据库服务器建立的最大并发连接数。

MySQL max_connections 基本公式

计算 max_connections 的基本公式为:

Available RAM = Global Buffers + (Thread Buffers x `max_connections`)

要检索缓冲区及其值的列表,请使用类似如下的命令:

SHOW VARIABLES LIKE '%buffer%';

使用 Cloud Databases CLI 插件

使用如下命令检查部署的当前配置:

ibmcloud cdb deployment-configuration-schema <deployment name or CRN>

要通过 Cloud Databases CLI-plugin 更改配置,请使用 deployment-configuration 命令:

ibmcloud cdb deployment-configuration <deployment name or CRN> [@JSON_FILE | JSON_STRING]

此命令将读取要从 JSON 对象或文件进行的更改。 有关更多信息,请参阅 CLI 参考页面

使用 Cloud Databases API

有两个部署配置端点,一个用于查看配置模式,另一个用于更改配置。 要查看配置模式,请向 /deployments/{id}/configuration/schema 发送 GET 请求。

要更改配置,请将您希望在 PATCH 请求的请求主体中更改为 JSON 对象的设置发送到 /deployments/{id}/configuration

有关更多信息,请参阅 API 参考

Databases for MySQL 时区设置

Databases for MySQL 部署的时区始终为全球标准时间。 使用 Cloud Databases API 配置时区,或者 CLI 将时区更改为指定时区 (建议) 或时区的偏移量。

您需要在已复原的实例和读副本上再次配置时区。 虽然会复原时区表 (对于复原) 和复制时区表 (对于读副本),但 @@global.time_zone 值不是。 要设置此值,请使用与以前相同的 API 调用,但使用新的 CRN。

配置 Databases for MySQL 时区设置

在供应时,会将 Cloud Databases 部署配置为全球标准时间。 重新配置时区是一项持久更改,必须针对每个 Cloud Databases 部署进行此更改。

配置时区会在 MySQL 实例中设置全局时区。 在发生故障转移的实例中,时区设置将作为复制的一部分传播,因为时区设置将写入 MySQL 配置文件。 此情况的例外情况是将实例复原到配置首选时区之前的时间点。

如果将时区配置为具有夏令时功能的时区,那么调整是配置的一部分。 您无需执行任何操作。 使用特定时区比使用偏移时间更好。

Cloud Databases 验证 time_zone 参数值。 如果使用无效值配置部署,那么配置将失败。 可以在 此处找到有效的名称 time_zone values

在 Cloud Databases API 中更改时区

示例偏移量:

curl -v -XPATCH -H "Authorization: Bearer $token" -H "Content-Type: application/json" https://api.<region>.databases.cloud.ibm.com/v5/ibm/deployments/<crn>/configuration -d '{"configuration": {"time_zone": "<EXAMPLE OFFSET"}}'

指定时区的示例:

curl -v -XPATCH -H "Authorization: Bearer $token" -H "Content-Type: application/json" https://api.<region>.databases.cloud.ibm.com/v5/ibm/deployments/<crn>/configuration -d '{"configuration": {"time_zone": "<EXAMPLE TIME ZONE"}}'

在 Cloud Databases CLI 中更改时区

指定时区的示例

ibmcloud cdb deployment-configuration <crn> '{"time_zone": "US/Pacific"}'

可用的Databases for MySQL配置设置

default_authentication_plugin

  • 缺省- sha256_password
  • 允许的值: sha256_passwordmysql_native_password
  • 是否重新启动数据库? - true

除非严格必要,否则请勿使用 mysql_native_password

innodb_buffer_pool_size_percentage

  • 描述: 要用于 innodb_buffer_pool_size 的内存百分比。 缺省值 50% 是保守值,适用于任何大小的数据库。 如果您的数据库需要更多 RAM,那么可以增大此值。 将此值设置得过高可能会超出数据库的内存限制,这可能会导致其崩溃。
  • 缺省值: 50
  • 最小值: 10
  • 最大值: 100
  • 是否重新启动数据库? - true

innodb_flush_log_at_trx_commit

  • 描述: 控制 commit 操作的严格 ACID 合规性与批量重新排列和执行与落实相关的 I/O 操作时可能实现的更高性能之间的平衡。 您可以通过更改缺省值来实现更好的性能,但是在崩溃时可能会丢失事务。
  • 缺省值: 2
  • 最小值: 0
  • 最大值: 2
  • 是否重新启动数据库? - false

innodb_log_buffer_size

  • 描述: InnoDB 用于写入磁盘上 日志文件 的缓冲区的大小 (以字节计)。
  • 缺省值: 33554432
  • 最小值: 1048576
  • 最大值: 4294967295
  • 是否重新启动数据库? - true

innodb_log_file_size

  • 描述 日志组中每个 日志文件的大小(以字节为单位)。Innodb_log_file_size 和“innodb_log_files_in_group 已被”innodb_redo_log_capacity 取代。 设置“innodb_log_file_size 也会设置”innodb_redo_log_capacity
  • 缺省值: 2147483648
  • 最小值: 4194304
  • 最大值: 274877906900
  • 是否重新启动数据库? - false

innodb_lru_scan_depth

  • 描述: 影响 InnoDB 缓冲池flush 操作的算法和启发式的参数。 小于缺省值的设置通常适用于大多数工作负载。 值远高于必需值可能会影响性能。 仅当您在典型工作负载下具有备用 I/O 容量时,才应考虑增大该值。
  • 缺省值: 256
  • 最小值: 128
  • 最大值: 2048
  • 是否重新启动数据库? - false

innodb_write_io_threads

  • 描述: InnoDB中写操作的 I/O 线程数。
  • 缺省值: 4
  • 最小值: 1
  • 最大值: 64
  • 是否重新启动数据库? - true

max_allowed_packet

  • 缺省- 1073741824
  • 最小值- 1024
  • 最大值- 1073741824
  • 是否重新启动数据库? - false

max_prepared_stmt_count

  • 描述-指定服务器上的预编译语句总数。
  • 缺省- 16382
  • 最小值- 0
  • 最大-(版本 ≤ 8.0.17) 1048576,(版本 ≥ 8.0.18) 4194304
  • 是否重新启动数据库? - false

max_connections

  • 缺省- 200
  • 是否重新启动数据库? - false

在增加最大连接数之前,您可能需要 缩放

mysql_max_binlog_age_sec

  • 缺省- 1800
  • 是否重新启动数据库? - false

net_write_timeout

  • 描述: 在中止写入之前等待将块写入连接的秒数。
  • 缺省值: 60
  • 最小值: 1
  • 最大值: 7200
  • 是否重新启动数据库? - false

sql_mode

  • 允许值:
    • ALLOW_INVALID_DATES
    • ANSI_QUOTES
    • ERROR_FOR_DIVISION_BY_ZERO
    • HIGH_NOT_PRECEDENCE
    • IGNORE_SPACE
    • NO_AUTO_CREATE_USER
    • NO_AUTO_VALUE_ON_ZERO
    • NO_BACKSLASH_ESCAPES
    • NO_DIR_IN_CREATE
    • NO_ENGINE_SUBSTITUTION
    • NO_FIELD_OPTIONS
    • NO_KEY_OPTIONS
    • NO_TABLE_OPTIONS
    • NO_UNSIGNED_SUBTRACTION
    • NO_ZERO_DATE
    • NO_ZERO_IN_DATE
    • ONLY_FULL_GROUP_BY
    • PAD_CHAR_TO_FULL_LENGTH
    • PIPES_AS_CONCAT
    • REAL_AS_FLOAT
    • STRICT_ALL_TABLES
    • STRICT_TRANS_TABLES
  • 是否重新启动数据库? - false

time_zone

  • 描述: 缺省情况下,当前在服务器上设置的时区为 "+ 00:00" (全球标准时间)。 不过,也可以将其设置为与协调世界时的特定偏移,格式为[HH]:MM,前缀为 + 或 -,例如 "+10:00"、'-6:00 "或 "+05:30"。 还可以使用诸如 "MET" 或“美国/太平洋”之类的指定时区。
  • 缺省值: +00:00
  • 类型:string
  • 是否重新启动数据库? - false

wait_timeout

  • 描述: 在关闭非交互式连接之前,服务器等待该连接上的活动的秒数。
  • 缺省值: 28800
  • 最小值: 1
  • 最大值: 31536000
  • 是否重新启动数据库? - false

innodb_read_io_threads

  • 描述:InnoDB 中读取操作的 I/O 线程数。
  • 缺省值: 4
  • 最小值: 1
  • 最大值: 64
  • 是否重新启动数据库? - true

net_read_timeout

  • 描述终止读取前等待连接中更多数据的秒数。
  • 缺省值: 30
  • 最小值: 1
  • 最大值: 7200
  • 是否重新启动数据库? - false