Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon Aurora MySQL 参考

本参考包含有关 Aurora MySQL 参数和状态变量的信息。

Aurora MySQL 参数

您可以使用数据库参数组中的参数按照与管理其他 Amazon RDS 数据库实例相同的方法管理 Amazon Aurora MySQL 数据库集群。Amazon Aurora 不同于其他数据库引擎,因为您具有一个包含多个数据库实例的数据库集群。因此,您用于管理 Aurora MySQL 数据库集群的有些参数将应用于整个集群。其他参数则仅应用于数据库集群中的特定数据库实例。

群集级别的参数是在数据库群集参数组中管理的。实例级别的参数是在数据库参数组中管理的。Aurora MySQL 数据库集群中的每个数据库实例均与 MySQL 数据库引擎兼容。但是,您将在集群级应用有些 MySQL 数据库引擎参数。您使用数据库集群参数组管理这些参数。您无法在 Aurora 数据库集群中实例的数据库参数组中查找集群级参数。本主题后面提供了集群级参数的列表。

您可以使用 AWS 管理控制台、AWS CLI 或 Amazon RDS API 管理集群级参数和实例级参数。可以使用单独的命令管理集群级参数和实例级参数。例如,您可以使用 modify-db-cluster-parameter-group CLI 命令来管理数据库集群参数组中的集群级参数。您可以使用 modify-db-parameter-group CLI 命令来为数据库集群中的数据库实例管理数据库参数组中的实例级参数。

您可在控制台中或者使用 CLI 或 RDS API 查看群集级别和实例级别的参数。例如,您可以使用 describe-db-cluster-parameters AWS CLI 命令来查看数据库集群参数组中的集群级参数。您可以使用 describe-db-parameters CLI 命令来查看数据库集群中数据库实例的数据库参数组中的实例级参数。

有关数据库参数组的更多信息,请参阅 使用数据库参数组和数据库集群参数组。有关 Aurora Serverless 集群的规则和限制,请参阅 Aurora Serverless 和参数组

集群级参数

下表显示了适用于整个 Aurora MySQL 数据库集群的所有参数。

参数名称 可修改 备注

aurora_enable_replica_log_compression

不适用于作为 Aurora 全局数据库的一部分的集群。

aurora_enable_repl_bin_log_filtering

不适用于作为 Aurora 全局数据库的一部分的集群。

aurora_enable_zdr

有关更多信息,请参阅Amazon Aurora MySQL 复制的高可用性注意事项

aurora_load_from_s3_role

有关更多信息,请参阅将数据从 Amazon S3 存储桶中的文本文件加载到 Amazon Aurora MySQL 数据库集群

aurora_select_into_s3_role

有关更多信息,请参阅将数据从 Amazon Aurora MySQL 数据库集群保存到 Amazon S3 存储桶中的文本文件

auto_increment_increment

auto_increment_offset

aws_default_lambda_role

有关更多信息,请参阅从 Amazon Aurora MySQL 数据库集群中调用 Lambda 函数

aws_default_s3_role

binlog_checksum

binlog_format

binlog_row_image

binlog_rows_query_log_events

character-set-client-handshake

character_set_client

character_set_connection

character_set_database

character_set_filesystem

character_set_results

character_set_server

collation_connection

collation_server

completion_type

default_storage_engine

Aurora 集群对所有数据使用 InnoDB 存储引擎。

innodb_autoinc_lock_mode

innodb_checksums

innodb_cmp_per_index_enabled

innodb_commit_concurrency

innodb_data_home_dir

innodb_file_per_table

innodb_flush_log_at_trx_commit

innodb_ft_max_token_size

innodb_ft_min_token_size

innodb_ft_num_word_optimize

innodb_ft_sort_pll_degree

innodb_online_alter_log_max_size

innodb_optimize_fulltext_only

innodb_page_size

innodb_purge_batch_size

innodb_purge_threads

innodb_rollback_on_timeout

innodb_rollback_segments

innodb_spin_wait_delay

innodb_strict_mode

innodb_support_xa

innodb_sync_array_size

innodb_sync_spin_loops

innodb_table_locks

innodb_undo_directory

innodb_undo_logs

innodb_undo_tablespaces

lc_time_names

lower_case_table_names

master-info-repository

master_verify_checksum

server_audit_events

server_audit_excl_users

server_audit_incl_users

server_audit_logging

有关将日志上传到 CloudWatch Logs 的说明,请参阅 将 Amazon Aurora MySQL 日志发布到 Amazon CloudWatch Logs

server_id

skip-character-set-client-handshake

skip_name_resolve

sync_frm

time_zone

实例级参数

下表显示了适用于 Aurora MySQL 数据库集群中特定数据库实例的所有参数。

参数名称 可修改 备注

allow-suspicious-udfs

aurora_lab_mode

有关更多信息,请参阅Amazon Aurora MySQL 实验室模式

aurora_oom_response

有关更多信息,请参阅 Amazon Aurora MySQL 内存不足问题

autocommit

automatic_sp_privileges

back_log

basedir

binlog_cache_size

binlog_max_flush_queue_time

binlog_order_commits

binlog_stmt_cache_size

bulk_insert_buffer_size

concurrent_insert

connect_timeout

core-file

datadir

default_time_zone

default_tmp_storage_engine

default_week_format

delay_key_write

delayed_insert_limit

delayed_insert_timeout

delayed_queue_size

div_precision_increment

end_markers_in_json

enforce_gtid_consistency

有时

在 Aurora MySQL 版本 2.04 及更高版本中可修改。

eq_range_index_dive_limit

event_scheduler

explicit_defaults_for_timestamp

flush

flush_time

ft_boolean_syntax

ft_max_word_len

ft_min_word_len

ft_query_expansion_limit

ft_stopword_file

general_log

有关将日志上传到 CloudWatch Logs 的说明,请参阅 将 Amazon Aurora MySQL 日志发布到 Amazon CloudWatch Logs

general_log_file

group_concat_max_len

gtid-mode

有时

在 Aurora MySQL 版本 2.04 及更高版本中可修改。

host_cache_size

init_connect

innodb_adaptive_hash_index

innodb_adaptive_max_sleep_delay

innodb_autoextend_increment

innodb_buffer_pool_dump_at_shutdown

innodb_buffer_pool_dump_now

innodb_buffer_pool_filename

innodb_buffer_pool_load_abort

innodb_buffer_pool_load_at_startup

innodb_buffer_pool_load_now

innodb_buffer_pool_size

innodb_change_buffer_max_size

innodb_compression_failure_threshold_pct

innodb_compression_level

innodb_compression_pad_pct_max

innodb_concurrency_tickets

innodb_file_format

innodb_flush_log_at_timeout

innodb_flushing_avg_loops

innodb_force_load_corrupted

innodb_ft_aux_table

innodb_ft_cache_size

innodb_ft_enable_stopword

innodb_ft_server_stopword_table

innodb_ft_user_stopword_table

innodb_large_prefix

innodb_lock_wait_timeout

innodb_log_compressed_pages

innodb_lru_scan_depth

innodb_max_purge_lag

innodb_max_purge_lag_delay

innodb_monitor_disable

innodb_monitor_enable

innodb_monitor_reset

innodb_monitor_reset_all

innodb_old_blocks_pct

innodb_old_blocks_time

innodb_open_files

innodb_print_all_deadlocks

innodb_random_read_ahead

innodb_read_ahead_threshold

innodb_read_io_threads

innodb_read_only

innodb_replication_delay

innodb_sort_buffer_size

innodb_stats_auto_recalc

innodb_stats_method

innodb_stats_on_metadata

innodb_stats_persistent

innodb_stats_persistent_sample_pages

innodb_stats_transient_sample_pages

innodb_thread_concurrency

innodb_thread_sleep_delay

interactive_timeout

join_buffer_size

keep_files_on_create

key_buffer_size

key_cache_age_threshold

key_cache_block_size

key_cache_division_limit

local_infile

lock_wait_timeout

log-bin

log_bin_trust_function_creators

log_bin_use_v1_row_events

log_error

log_output

log_queries_not_using_indexes

log_slave_updates

log_throttle_queries_not_using_indexes

log_warnings

long_query_time

low_priority_updates

max_allowed_packet

max_binlog_cache_size

max_binlog_size

max_binlog_stmt_cache_size

max_connect_errors

max_connections

有关更多信息,请参阅至 Aurora MySQL 数据库实例的最大连接数

max_delayed_threads

max_error_count

max_heap_table_size

max_insert_delayed_threads

max_join_size

max_length_for_sort_data

max_prepared_stmt_count

max_seeks_for_key

max_sort_length

max_sp_recursion_depth

max_tmp_tables

max_user_connections

max_write_lock_count

metadata_locks_cache_size

min_examined_row_limit

myisam_data_pointer_size

myisam_max_sort_file_size

myisam_mmap_size

myisam_sort_buffer_size

myisam_stats_method

myisam_use_mmap

net_buffer_length

net_read_timeout

net_retry_count

net_write_timeout

old-style-user-limits

old_passwords

optimizer_prune_level

optimizer_search_depth

optimizer_switch

optimizer_trace

optimizer_trace_features

optimizer_trace_limit

optimizer_trace_max_mem_size

optimizer_trace_offset

performance_schema

pid_file

plugin_dir

port

preload_buffer_size

profiling_history_size

query_alloc_block_size

query_cache_limit

query_cache_min_res_unit

query_cache_size

query_cache_type

query_cache_wlock_invalidate

query_prealloc_size

range_alloc_block_size

read_buffer_size

read_only

read_rnd_buffer_size

relay-log

relay_log_info_repository

relay_log_recovery

safe-user-create

secure_auth

secure_file_priv

skip-slave-start

skip_external_locking

skip_show_database

slave_checkpoint_group

slave_checkpoint_period

slave_parallel_workers

slave_pending_jobs_size_max

slave_sql_verify_checksum

slow_launch_time

slow_query_log

有关将日志上传到 CloudWatch Logs 的说明,请参阅 将 Amazon Aurora MySQL 日志发布到 Amazon CloudWatch Logs

slow_query_log_file

socket

sort_buffer_size

sql_mode

sql_select_limit

stored_program_cache

sync_binlog

sync_master_info

sync_relay_log

sync_relay_log_info

sysdate-is-now

table_cache_element_entry_ttl

table_definition_cache

table_open_cache

table_open_cache_instances

temp-pool

thread_handling

thread_stack

timed_mutexes

tmp_table_size

tmpdir

transaction_alloc_block_size

transaction_prealloc_size

tx_isolation

updatable_views_with_limit

validate-password

validate_password_dictionary_file

validate_password_length

validate_password_mixed_case_count

validate_password_number_count

validate_password_policy

validate_password_special_char_count

wait_timeout

不适用的 MySQL 参数和状态变量

由于 Aurora MySQL 与 MySQL 之间存在架构差异,某些 MySQL 参数和状态变量不适用于 Aurora MySQL。

以下 MySQL 参数不适用于 Aurora MySQL:

  • innodb_adaptive_flushing

  • innodb_adaptive_flushing_lwm

  • innodb_checksum_algorithm

  • innodb_doublewrite

  • innodb_flush_method

  • innodb_flush_neighbors

  • innodb_io_capacity

  • innodb_io_capacity_max

  • innodb_log_buffer_size

  • innodb_log_file_size

  • innodb_log_files_in_group

  • innodb_max_dirty_pages_pct

  • innodb_use_native_aio

  • innodb_write_io_threads

  • thread_cache_size

以下 MySQL 状态变量不适用于 Aurora MySQL:

  • innodb_buffer_pool_bytes_dirty

  • innodb_buffer_pool_pages_dirty

  • innodb_buffer_pool_pages_flushed

注意

这些列表并不详尽。

Aurora MySQL 事件

以下是 Aurora MySQL 的一些常见等待事件。

注意

有关 MySQL 等待事件中使用的命名约定的信息,请参阅 MySQL 文档中的性能架构测试命名约定

io/aurora_redo_log_flush

在该等待事件中,某个会话正等待数据写入 Aurora 存储。通常,该等待事件针对 Aurora MySQL 中的写入 I/O 操作。

io/aurora_respond_to_client

在该等待事件中,线程正将结果集返回给客户端。

io/file/csv/data

在该等待事件中,有正写入 CSV 表的线程。检查您的 CSV 表使用情况。此事件的典型原因是在表上设置 log_output。

io/file/innodb/innodb_data_file

在该等待事件中,有正等待至存储的 I/O 操作的线程。此事件在 I/O 密集型工作负载中更普遍。显示此等待事件较大部分的 SQL 语句可能运行磁盘密集型查询。或者,它们可能请求无法从 InnoDB 缓冲池得到满足的数据。要查明情况,请检查查询计划和缓存命中率。有关更多信息,请参阅 MySQL 文档中的缓冲和缓存

io/file/sql/binlog

在该等待事件中,有等待正写入磁盘的二进制日志文件的线程。

io/socket/sql/client_connection

在该等待事件中,线程正处理新连接。

io/table/sql/handler

这是表 I/O 等待事件。通常,这些类型的事件可以后接嵌套事件(如文件 I/O 事件)。有关性能架构中的“原子”和“分子”事件的更多信息,请参阅 MySQL 文档中的性能架构原子和分子事件

lock/table/sql/handler

该等待事件是表锁定等待事件处理程序。有关性能架构中的“原子”和“分子”事件的更多信息,请参阅 MySQL 文档中的性能架构原子和分子事件

synch/cond/mysys/my_thread_var::suspend

在该等待事件中,将在线程等待条件时暂停线程。例如,此事件发生在线程等待表级别锁定时。建议调查工作负载,以了解哪些线程可能正获取数据库实例上的表锁定。有关 MySQL 中的表锁定的更多信息,请参阅 MySQL 文档中的表锁定问题

synch/cond/sql/MDL_context::COND_wait_status

在该等待事件中,有正等待表元数据锁定的线程。有关更多信息,请参阅 MySQL 文档中的优化锁定操作

synch/cond/sql/MYSQL_BIN_LOG::COND_done

在该等待事件中,有等待正写入磁盘的二进制日志文件的线程。二进制日志记录争用可能出现在更改率非常高的数据库上。

synch/mutex/innodb/aurora_lock_thread_slot_futex

在该等待事件中,一个线程正在等待 InnoDB 记录锁定。如果看到该事件,请检查数据库是否存在发生冲突的工作负载。有关更多信息,请参阅 MySQL 文档中的 InnoDB 锁定

synch/mutex/innodb/buf_pool_mutex

在该等待事件中,线程已在 InnoDB 缓冲池上获取锁定。

synch/mutex/sql/LOCK_open

在该等待事件中,LOCK_open 正用于保护数据字典中的各个对象。该等待事件指示有正等待获取这些锁定的线程。通常,此事件由数据字典争用导致。

synch/mutex/sql/LOCK_table_cache

在该等待事件中,有正等待在表缓存实例上获取锁定的线程。有关更多信息,请参阅 MySQL 文档中的 MySQL 如何打开和关闭表

synch/mutex/sql/LOG

在该等待事件中,有正等待日志锁定的线程。例如,线程可能等待锁定写入慢速查询日志文件。

synch/mutex/sql/MYSQL_BIN_LOG::LOCK_commit

在该等待事件中,有正等待带着提交到二进制日志的意图获取锁定的线程。二进制日志记录争用可能出现在更改率非常高的数据库上。根据您的 MySQL 版本,有特定锁定用于保护二进制日志的一致性和持续性。在 RDS MySQL 中,二进制日志用于复制和自动备份过程。在 Aurora MySQL 中,本机复制或备份不需要二进制日志。它们默认情况下处于禁用状态,但可以启用或用于外部复制或更改数据捕获。有关更多信息,请参阅 MySQL 文档中的二进制日志

synch/mutex/sql/MYSQL_BIN_LOG::LOCK_log

在该等待事件中,线程正积极锁定二进制日志文件。二进制日志记录争用可能出现在更改率非常高的数据库上。根据您的 MySQL 版本,有特定锁定用于保护二进制日志的一致性和持续性。

synch/rwlock/innodb/dict

在该等待事件中,有正等待 InnoDB 数据字典中保留的 rwlock 的线程。

synch/rwlock/innodb/dict sys RW lock

在该等待事件中,有正等待 InnoDB 数据字典中保留的 rwlock 的线程。

synch/rwlock/innodb/dict_operation_lock

在该等待事件中,有在 InnoDB 数据字典操作中保留锁定的线程。

Aurora MySQL 存储过程

您可以在连接到 Aurora MySQL 集群中的主实例时,调用以下存储过程。这些过程控制事务如何从外部数据库复制到 Aurora MySQL,或从 Aurora MySQL 复制到外部数据库。要了解如何根据 Aurora MySQL 中的全局事务标识符 (GTID) 使用复制,请参阅 在 Aurora MySQL 中使用基于 GTID 的复制

mysql.rds_set_master_auto_position

将复制模式设置为基于二进制日志文件位置或全局事务标识符 (GTID)。

语法

CALL mysql.rds_set_master_auto_position (auto_position_mode);

参数

auto_position_mode

该值指示是使用日志文件位置复制还是基于 GTID 的复制:

  • 0 – 使用基于二进制日志文件位置的复制方法。默认为 0

  • 1 – 使用基于 GTID 的复制方法。

使用说明

对于 Aurora MySQL 数据库集群,您将在连接到主实例时调用此存储过程。

主用户必须运行 mysql.rds_set_master_auto_position 过程。

对于 Aurora,Aurora MySQL 版本 2.04 及更高版本的 MySQL 5.7 兼容版本支持此过程。Aurora MySQL 1.1 或 1.0 不支持基于 GTID 的复制。

mysql.rds_set_external_master_with_auto_position

将 Aurora MySQL 主实例配置为接受来自外部 MySQL 实例的传入复制。此过程还会根据全局事务标识符 (GTID) 配置复制。

此过程对于 Amazon RDS MySQL 和 Aurora MySQL 均可用。它在不同上下文中的作用可能不同。在用于 Aurora MySQL 时,此过程不会配置延迟复制。此限制是由于 Amazon RDS MySQL 支持延迟复制,但 Aurora MySQL 不支持。

语法

CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption );

参数

host_name

在 Aurora 之外运行以变为复制主实例的 MySQL 实例的主机名或 IP 地址。

host_port

在 Aurora 之外运行的要配置为复制主实例的 MySQL 实例使用的端口。如果网络配置包括转换端口号的安全 Shell (SSH) 端口复制,请指定由 SSH 公开的端口号。

replication_user_name

在对 Aurora 外部运行的 MySQL 实例上具有 REPLICATION CLIENTREPLICATION SLAVE 权限的用户的 ID。建议您向专用于复制的账户提供外部实例。

replication_user_password

replication_user_name 中指定的用户 ID 的密码。

ssl_encryption

目前未实施该选项。默认值为 0。

使用说明

对于 Aurora MySQL 数据库集群,您将在连接到主实例时调用此存储过程。

主用户必须运行 mysql.rds_set_external_master_with_auto_position 过程。主用户在充当复制目标的 Aurora MySQL 数据库集群的主实例上运行此过程。这可能是外部 MySQL 数据库实例或 Aurora MySQL 数据库集群的复制目标。

对于 Aurora,Aurora MySQL 版本 2.04 及更高版本的 MySQL 5.7 兼容版本支持此过程。Aurora MySQL 1.1 或 1.0 不支持基于 GTID 的复制。

在运行 mysql.rds_set_external_master_with_auto_position 前,请将外部 MySQL 数据库实例配置为复制主实例。要连接到外部 MySQL 实例,应指定 replication_user_namereplication_user_password 值。这些值必须指示具有外部 MySQL 实例上的 REPLICATION CLIENTREPLICATION SLAVE 权限的复制用户。

将外部 MySQL 实例配置为复制主实例

  1. 通过使用所选的 MySQL 客户端,连接到外部 MySQL 实例并创建要用于复制的用户账户。以下是示例。

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在外部 MySQL 实例上,向复制用户授予 REPLICATION CLIENTREPLICATION SLAVE 权限。以下示例为您的域的 'repl_user' 用户授予所有数据库的 REPLICATION CLIENTREPLICATION SLAVE 权限。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

在调用 mysql.rds_set_external_master_with_auto_position 时,Amazon RDS 将记录某些信息。这些信息包括 mysql.rds_historymysql.rds_replication_status 表中的时间、用户和 "set master" 操作。

要跳过已知会导致问题的基于 GTID 的特定事务,您可以使用 mysql.rds_skip_transaction_with_gtid 存储过程。有关使用基于 GTID 的复制的更多信息,请参阅在 Aurora MySQL 中使用基于 GTID 的复制

示例

在 Aurora 主实例上运行时,下例示例将 Aurora 集群配置为充当在 Aurora 之外运行的某个 MySQL 实例的只读副本。

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'SomePassW0rd');

mysql.rds_skip_transaction_with_gtid

在 Aurora 主实例上跳过复制具有指定全局事务标识符 (GTID) 的事务。

在已知特定 GTID 事务导致问题时,您可以使用该过程进行灾难恢复。请使用该存储过程跳过有问题的事务。有问题的事务示例包括禁用复制、删除重要数据或导致数据库实例变得不可用的事务。

语法

CALL mysql.rds_skip_transaction_with_gtid (gtid_to_skip);

参数

gtid_to_skip

要跳过的复制事务的 GTID。

使用说明

对于 Aurora MySQL 数据库集群,您将在连接到主实例时调用此存储过程。

主用户必须运行 mysql.rds_skip_transaction_with_gtid 过程。

对于 Aurora,Aurora MySQL 版本 2.04 及更高版本的 MySQL 5.7 兼容版本支持此过程。Aurora MySQL 1.1 或 1.0 不支持基于 GTID 的复制。