MySQL8 中文参考(八十七)(1)https://developer.aliyun.com/article/1565935
Ndb_api_trans_close_count
: 由此 MySQL 服务器(SQL 节点)中止的事务数量(可能大于 TransCommitCount 和 TransAbortCount 的总和)。Ndb_api_trans_close_count_session
: 在此客户端会话中中止的事务数量(可能大于 TransCommitCount 和 TransAbortCount 的总和)。Ndb_api_trans_close_count_replica
: 此副本中中止的事务数(可能大于 TransCommitCount 和 TransAbortCount 之和)。Ndb_api_trans_close_count_slave
: 此副本中中止的事务数(可能大于 TransCommitCount 和 TransAbortCount 之和)。Ndb_api_trans_commit_count
: 此 MySQL 服务器(SQL 节点)提交的事务数。Ndb_api_trans_commit_count_session
: 在此客户端会话中提交的事务数。Ndb_api_trans_commit_count_replica
: 此副本提交的事务数。Ndb_api_trans_commit_count_slave
: 此副本提交的事务数。Ndb_api_trans_local_read_row_count
: 此 MySQL 服务器(SQL 节点)已读取的总行数。Ndb_api_trans_local_read_row_count_session
: 在此客户端会话中已读取的总行数。Ndb_api_trans_local_read_row_count_replica
: 此副本已读取的总行数。Ndb_api_trans_local_read_row_count_slave
: 此副本已读取的总行数。Ndb_api_trans_start_count
: 此 MySQL 服务器(SQL 节点)启动的事务数。Ndb_api_trans_start_count_session
: 在此客户端会话中启动的事务数。Ndb_api_trans_start_count_replica
: 此副本启动的事务数。Ndb_api_trans_start_count_slave
: 此副本启动的事务数。Ndb_api_uk_op_count
: 此 MySQL 服务器(SQL 节点)基于或使用唯一键的操作数。Ndb_api_uk_op_count_session
: 在此客户端会话中基于或使用唯一键的操作数。Ndb_api_uk_op_count_replica
: 此副本基于或使用唯一键的操作次数。Ndb_api_uk_op_count_slave
: 此副本基于或使用唯一键的操作次数。Ndb_api_wait_exec_complete_count
: 线程在等待此 MySQL 服务器(SQL 节点)完成操作执行时被阻塞的次数。Ndb_api_wait_exec_complete_count_session
: 客户端会话中线程在等待操作执行完成时被阻塞的次数。Ndb_api_wait_exec_complete_count_replica
: 线程在等待此副本完成操作执行时被阻塞的次数。Ndb_api_wait_exec_complete_count_slave
: 线程在等待此副本完成操作执行时被阻塞的次数。Ndb_api_wait_meta_request_count
: 线程等待此 MySQL 服务器(SQL 节点)基于元数据的信号时被阻塞的次数。Ndb_api_wait_meta_request_count_session
: 客户端会话中线程等待基于元数据的信号时被阻塞的次数。Ndb_api_wait_meta_request_count_replica
: 线程等待此副本基于元数据的信号时被阻塞的次数。Ndb_api_wait_meta_request_count_slave
: 线程等待此副本基于元数据的信号时被阻塞的次数。Ndb_api_wait_nanos_count
: 此 MySQL 服务器(SQL 节点)等待来自数据节点某种类型信号的总时间(以纳秒为单位)。Ndb_api_wait_nanos_count_session
: 客户端会话中等待来自数据节点某种类型信号的总时间(以纳秒为单位)。Ndb_api_wait_nanos_count_replica
: 此副本等待来自数据节点某种类型信号的总时间(以纳秒为单位)。Ndb_api_wait_nanos_count_slave
: 此副本等待来自数据节点的某种类型信号的总时间(以纳秒为单位)。Ndb_api_wait_scan_result_count
: 等待此 MySQL 服务器(SQL 节点)通过扫描信号而被阻塞的线程次数。Ndb_api_wait_scan_result_count_session
: 在此客户端会话中等待扫描信号而被阻塞的线程次数。Ndb_api_wait_scan_result_count_replica
: 等待此副本通过扫描信号而被阻塞的线程次数。Ndb_api_wait_scan_result_count_slave
: 等待此副本通过扫描信号而被阻塞的线程次数。ndb_autoincrement_prefetch_sz
: NDB 自增预取大小。ndb_clear_apply_status
: 导致 RESET SLAVE/RESET REPLICA 清除 ndb_apply_status 表中的所有行;默认为 ON。Ndb_cluster_node_id
: 当作为 NDB 集群 SQL 节点时,此服务器的节点 ID。Ndb_config_from_host
: NDB 集群管理服务器主机名或 IP 地址。Ndb_config_from_port
: 用于连接 NDB 集群管理服务器的端口。Ndb_config_generation
: 集群当前配置的生成编号。Ndb_conflict_fn_epoch
: 通过 NDB$EPOCH() NDB 复制冲突检测函数发现的行数。Ndb_conflict_fn_epoch2
: 通过 NDB 复制 NDB$EPOCH2()冲突检测函数发现的行数。Ndb_conflict_fn_epoch2_trans
: 通过 NDB 复制 NDB$EPOCH2_TRANS()冲突检测函数发现的行数。Ndb_conflict_fn_epoch_trans
: 通过 NDB$EPOCH_TRANS()冲突检测函数发现的行数。Ndb_conflict_fn_max
: 基于“较大时间戳获胜”的 NDB 复制冲突解决已应用于更新和删除操作的次数。Ndb_conflict_fn_max_del_win
: 基于 NDB$MAX_DELETE_WIN()结果的 NDB 复制冲突解决已应用于更新和删除操作的次数。Ndb_conflict_fn_max_ins
: 基于“较大时间戳获胜”的 NDB 复制冲突解决已应用于插入操作的次数。Ndb_conflict_fn_max_del_win_ins
: 基于 NDB$MAX_DEL_WIN_INS()结果的 NDB 复制冲突解决已应用于插入操作的次数。Ndb_conflict_fn_old
: 在 NDB 复制中应用“相同时间戳获胜”冲突解决的次数。Ndb_conflict_last_conflict_epoch
: 在此副本上检测到冲突的最近 NDB 时代。Ndb_conflict_last_stable_epoch
: 通过事务冲突函数发现存在冲突的行数。Ndb_conflict_reflected_op_discard_count
: 由于执行期间出现错误而未应用的反射操作数量。Ndb_conflict_reflected_op_prepare_count
: 已准备好执行的接收到的反射操作数量。Ndb_conflict_refresh_op_count
: 已准备好的刷新操作数量。ndb_conflict_role
: 副本在冲突检测和解决中扮演的角色。值为 PRIMARY、SECONDARY、PASS 或 NONE(默认)。只能在停止复制 SQL 线程时更改。详细信息请参阅文档。Ndb_conflict_trans_conflict_commit_count
: 需要事务冲突处理后提交的时代事务数量。Ndb_conflict_trans_detect_iter_count
: 提交时代事务所需的内部迭代次数。应略大于或等于 Ndb_conflict_trans_conflict_commit_count。Ndb_conflict_trans_reject_count
: 事务冲突函数发现后被拒绝的事务数。Ndb_conflict_trans_row_conflict_count
: 事务冲突函数发现的冲突行数。包括任何包含在或依赖于冲突事务中的行。Ndb_conflict_trans_row_reject_count
: 事务冲突函数发现后重新调整的总行数。包括 Ndb_conflict_trans_row_conflict_count 和任何包含在或依赖于冲突事务中的行。ndb_data_node_neighbour
: 指定集群数据节点“最接近”此 MySQL 服务器,用于事务提示和完全复制表。ndb_default_column_format
: 设置用于新 NDB 表的默认行格式和列格式(FIXED 或 DYNAMIC)。ndb_deferred_constraints
: 指定应推迟约束检查(如果支持)。通常不需要或不使用;仅用于测试目的。ndb_dbg_check_shares
: 检查任何残留的共享(仅限调试版本)。ndb-schema-dist-timeout
: 在检测模式分发超时之前等待的时间。ndb_distribution
: NDBCLUSTER 中新表的默认分布(KEYHASH 或 LINHASH��默认为 KEYHASH)。Ndb_epoch_delete_delete_count
: 检测到的删除-删除冲突数(应用删除操作,但行不存在)。ndb_eventbuffer_free_percent
: 达到 ndb_eventbuffer_max_alloc 设置的限制后,在事件缓冲区中恢复缓冲之前应该可用的空闲内存百分比。ndb_eventbuffer_max_alloc
: NDB API 可用于缓冲事件的最大内存分配。默认为 0(无限制)。Ndb_execute_count
: 操作向 NDB 内核进行的往返次数。ndb_extra_logging
: 控制在 MySQL 错误日志中记录 NDB 集群模式、连接和数据分发事件。ndb_force_send
: 强制立即将缓冲区发送到 NDB,而不等待其他线程。ndb_fully_replicated
: 新 NDB 表是否完全复制。ndb_index_stat_enable
: 在查询优化中使用 NDB 索引统计。ndb_index_stat_option
: 用于 NDB 索引统计的逗号分隔的可调整选项列表;列表不应包含空格。ndb_join_pushdown
: 启用将连接下推到数据节点。Ndb_last_commit_epoch_server
: NDB 最近提交的时期。Ndb_last_commit_epoch_session
: 此 NDB 客户端最近提交的时期。ndb_log_apply_status
: MySQL 服务器是否作为副本记录 mysql.ndb_apply_status 更新,从其直接来源接收到的更新,使用自己的二进制日志,使用自己的服务器 ID。ndb_log_bin
: 将更新写入 NDB 表的二进制日志。仅在启用二进制日志记录时有效,使用–log-bin 选项。ndb_log_binlog_index
: 将时期和二进制日志位置之间的映射插入 ndb_binlog_index 表。默认为 ON。仅在启用二进制日志记录时有效。ndb_log_empty_epochs
: 启用时,将没有更改的时期写入 ndb_apply_status 和 ndb_binlog_index 表,即使启用了 log_replica_updates 或 log_slave_updates。ndb_log_empty_update
: 启用时,产生没有更改的更新将写入 ndb_apply_status 和 ndb_binlog_index 表,即使启用了 log_replica_updates 或 log_slave_updates。ndb_log_exclusive_reads
: 使用独占锁记录主键读取;允许基于读取冲突进行冲突解决。ndb_log_orig
: 是否在 mysql.ndb_binlog_index 表中记录原始服务器的 ID 和时期。在启动 mysqld 时使用–ndb-log-orig 选项设置。ndb_log_transaction_id
: 是否将 NDB 事务 ID 写入二进制日志(只读)。ndb_log_transaction_compression
: 是否压缩 NDB 二进制日志;也可以通过启用–binlog-transaction-compression 选项在启动时启用。ndb_log_transaction_compression_level_zstd
: 写入 NDB 二进制日志时使用的 ZSTD 压缩级别。ndb_metadata_check
: 启用自动检测 NDB 元数据相对于 MySQL 数据字典的更改;默认启用。Ndb_metadata_blacklist_size
: NDB 二进制日志线程未能同步的 NDB 元数据对象数量;在 NDB 8.0.22 中更名为 Ndb_metadata_excluded_count。ndb_metadata_check_interval
: 每隔几秒执行一次相对于 MySQL 数据字典的 NDB 元数据更改检查。Ndb_metadata_detected_count
: NDB 元数据更改监视线程检测到更改的次数。Ndb_metadata_excluded_count
: NDB 二进制日志线程未能同步的 NDB 元数据对象数量。ndb_metadata_sync
: 触发 NDB 字典和 MySQL 数据字典之间所有更改的立即同步;同步完成后重置为 false,ndb_metadata_check 和 ndb_metadata_check_interval 值将被忽略。Ndb_metadata_synced_count
: 已同步的 NDB 元数据对象数量。Ndb_number_of_data_nodes
: 此 NDB 集群中的数据节点数;仅在服务器参与集群时设置。ndb-optimization-delay
: 在 NDB 表上通过 OPTIMIZE TABLE 处理一组行之间等待的毫秒数。ndb_optimized_node_selection
: SQL 节点选择用作事务协调器的集群数据节点的方式。Ndb_pruned_scan_count
: 自上次启动集群以来由 NDB 执行的扫描次数,其中可以使用分区修剪。Ndb_pushed_queries_defined
: API 节点尝试下推到数据节点的连接数。Ndb_pushed_queries_dropped
: API 节点尝试推送但失败的连接数。Ndb_pushed_queries_executed
: 成功推送并在数据节点上执行的连接数。Ndb_pushed_reads
: 通过推送连接在数据节点上执行的读取次数。ndb_read_backup
: 为所有 NDB 表启用从任何副本读取;使用 CREATE TABLE 或 ALTER TABLE 中的 NDB_TABLE=READ_BACKUP={0|1}为单个 NDB 表启用或禁用。ndb_recv_thread_activation_threshold
: 当接收线程接管集群连接的轮询时的激活阈值(以同时活动线程计量)。ndb_recv_thread_cpu_mask
: 将接收线程锁定到特定 CPU 的 CPU 掩码;以十六进制形式指定。详细信息请参阅文档。Ndb_replica_max_replicated_epoch
: 此副本上最近提交的 NDB 时期。当此值大于或等于 Ndb_conflict_last_conflict_epoch 时,尚未检测到冲突。ndb_replica_batch_size
: 副本应用程序的批处理大小(以字节为单位)。ndb_report_thresh_binlog_epoch_slip
: NDB 7.5 及更高版本:完全缓冲但尚未被二进制日志注入器线程消耗的时期数量的阈值,超过该阈值会生成 BUFFERED_EPOCHS_OVER_THRESHOLD 事件缓冲区状态消息;在 NDB 7.5 之前:在报告二进制日志状态之前滞后的时期数量的阈值。ndb_report_thresh_binlog_mem_usage
: 在报告二进制日志状态之前剩余内存百分比的阈值。ndb_row_checksum
: 启用时设置行校验和;默认启用。Ndb_scan_count
: 自上次启动集群以来 NDB 执行的扫描总数。ndb_schema_dist_lock_wait_timeout
: 在模式分发期间等待锁定的时间,超时则返回错误。ndb_schema_dist_timeout
: 在模式分发期间检测超时之前等待的时间。ndb_schema_dist_upgrade_allowed
: 允许连接到 NDB 时进行模式分发表升级。ndb_show_foreign_key_mock_tables
: 显示用于支持 foreign_key_checks=0 的模拟表。ndb_slave_conflict_role
: 副本在冲突检测和解决中扮演的角色。值为 PRIMARY、SECONDARY、PASS 或 NONE(默认)。只能在停止复制 SQL 线程时更改。有关更多信息,请参阅文档。Ndb_slave_max_replicated_epoch
: 最近在此副本上提交的 NDB 时代。当此值大于或等于 Ndb_conflict_last_conflict_epoch 时,尚未检测到冲突。Ndb_system_name
: 配置的集群系统名称;如果服务器未连接到 NDB,则为空。ndb_table_no_logging
: 启用此设置时创建的 NDB 表不会被检查点到磁盘(尽管会创建表模式文件)。在使用 NDBCLUSTER 创建表或更改为使用 NDBCLUSTER 时设置会持续整个表的生命周期。ndb_table_temporary
: NDB 表在磁盘上不是持久的:不会创建模式文件,表也不会被记录。Ndb_trans_hint_count_session
: 在此会话中启动的使用提示的事务数量。ndb_use_copying_alter_table
: 在 NDB Cluster 中使用复制 ALTER TABLE 操作。ndb_use_exact_count
: 强制 NDB 在 SELECT COUNT(*)查询规划期间使用记录计数以加快此类查询的速度。ndb_use_transactions
: 设置为 OFF,以禁用 NDB 的事务支持。除了某些特殊情况外不建议使用;有关详细信息,请参阅文档。ndb_version
: 显示构建和 NDB 引擎版本为整数。ndb_version_string
: 显示构建信息,包括 NDB 引擎版本,格式为 ndb-x.y.z。ndbcluster
: 启用 NDB Cluster(如果此版本的 MySQL 支持)。通过--skip-ndbcluster
禁用。ndbinfo
: 启用 ndbinfo 插件(如果支持)。ndbinfo_database
: 用于 NDB 信息数据库的名称;只读。ndbinfo_max_bytes
: 仅用于调试。ndbinfo_max_rows
: 仅用于调试。ndbinfo_offline
: 将 ndbinfo 数据库置于离线模式,在该模式下,表或视图不返回任何行。ndbinfo_show_hidden
: 是否在 mysql 客户端中显示 ndbinfo 内部基本表;默认为关闭。ndbinfo_table_prefix
: 用于命名 ndbinfo 内部基本表的前缀;只读。ndbinfo_version
: ndbinfo 引擎版本;只读。replica_allow_batching
: 打开或关闭副本的更新批处理。server_id_bits
: 用于标识服务器的 server_id 中实际使用的最低有效位数,允许 NDB API 应用程序将应用程序数据存储在最高有效位中。server_id 必须小于 2 的这个值的幂。skip-ndbcluster
: 禁用 NDB Cluster 存储引擎。slave_allow_batching
: 打开或关闭副本的更新批处理。transaction_allow_batching
: 允许在一个事务中批处理语句。禁用 AUTOCOMMIT 以使用。
25.4.3 NDB 集群配置文件
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-file.html
25.4.3.1 NDB 集群配置:基本示例
25.4.3.2 NDB 集群推荐的起始配置
25.4.3.3 NDB 集群连接字符串
25.4.3.4 在 NDB 集群中定义计算机
25.4.3.5 定义 NDB 集群管理服务器
25.4.3.6 定义 NDB 集群数据节点
25.4.3.7 在 NDB 集群中定义 SQL 和其他 API 节点
25.4.3.8 定义系统
25.4.3.9 NDB 集群的 MySQL 服务器选项和变量
25.4.3.10 NDB 集群 TCP/IP 连接
25.4.3.11 使用直接连接的 NDB 集群 TCP/IP 连接
25.4.3.12 NDB 集群共享内存连接
25.4.3.13 数据节点内存管理
25.4.3.14 配置 NDB 集群发送缓冲区参数
配置 NDB 集群需要处理两个文件:
my.cnf
:指定所有 NDB 集群可执行文件的选项。这个文件,你应该在之前使用 MySQL 时熟悉,必须被集群中运行的每个可执行文件访问。config.ini
:这个文件,有时被称为全局配置文件,只被 NDB 集群管理服务器读取,然后将其中包含的信息分发给参与集群的所有进程。config.ini
包含了集群中涉及的每个节点的描述。这包括数据节点的配置参数和集群中所有节点之间连接的配置参数。要快速查看此文件中可能出现的部分以及每个部分中可能放置的配置参数类型,请参阅 config.ini 文件的部分。
配置数据的缓存。 NDB
使用有状态的配置。管理服务器在重新启动时不会每次读取全局配置文件,而是在第一次启动时缓存配置,之后,只有在以下条件之一为真时才会读取全局配置文件:
- 管理服务器是使用–initial 选项启动的。 当使用
--initial
时,全局配置文件将被重新读取,任何现有的缓存文件将被删除,并且管理服务器将创建一个新的配置缓存。 - 管理服务器是使用–reload 选项启动的。
--reload
选项会导致管理服务器将其缓存与全局配置文件进行比较。如果它们不同,管理服务器将创建一个新的配置缓存;任何现有的配置缓存将被保留,但不被使用。如果管理服务器的缓存和全局配置文件包含相同的配置数据,则使用现有的缓存,并且不会创建新的缓存。 - 管理服务器是使用–config-cache=FALSE 启动的。 这会禁用
--config-cache
(默认启用),并可用于强制管理服务器完全绕过配置缓存。在这种情况下,管理服务器会忽略可能存在的任何配置文件,始终从config.ini
文件中读取其配置数据。 - 未找到配置缓存。 在这种情况下,管理服务器会读取全局配置文件并创建一个包含与文件中相同配置数据的缓存。
配置缓存文件。 默认情况下,管理服务器会在 MySQL 安装目录中名为mysql-cluster
的目录中创建配置缓存文件。(如果在 Unix 系统上从源代码构建 NDB Cluster,则默认位置为/usr/local/mysql-cluster
。)可以通过使用--configdir
选项在运行时覆盖此设置。配置缓存文件是以ndb_*
node_id*_config.bin.*
seq_id*
的模式命名的二进制文件,其中*node_id
是集群中管理服务器的节点 ID,seq_id
是缓存标识符。缓存文件按顺序使用seq_id
进行编号,按创建顺序排列。管理服务器使用由seq_id
*确定的最新缓存文件。
注意
通过删除后续配置缓存文件或重命名较早的缓存文件以使其具有更高的*seq_id
*,可以回滚到先前的配置。然而,由于配置缓存文件以二进制格式编写,不应尝试手动编辑其内容。
有关 NDB Cluster 管理服务器的--configdir
、--config-cache
、--initial
和--reload
选项的更多信息,请参见第 25.5.4 节“ndb_mgmd — NDB Cluster 管理服务器守护程序”。
我们不断改进 NDB Cluster 配置,并试图简化这个过程。虽然我们努力保持向后兼容性,但有时可能会引入不兼容的更改。在这种情况下,如果更改不向后兼容,我们会尽量提前通知 NDB Cluster 用户。如果您发现这样的更改并且我们没有记录,请按照第 1.5 节“如何报告错误或问题”中给出的说明在 MySQL 错误数据库中报告。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-example.html
25.4.3.1 NDB Cluster 配置:基本示例
要支持 NDB Cluster,您应该按照以下示例更新my.cnf
。您也可以在调用可执行文件时在命令行上指定这些参数。
注意
此处显示的选项不应与在config.ini
全局配置文件中使用的选项混淆。全局配置选项将在本节后面讨论。
# my.cnf # example additions to my.cnf for NDB Cluster # (valid in MySQL 8.0) # enable ndbcluster storage engine, and provide connection string for # management server host (default port is 1186) [mysqld] ndbcluster ndb-connectstring=ndb_mgmd.mysql.com # provide connection string for management server host (default port: 1186) [ndbd] connect-string=ndb_mgmd.mysql.com # provide connection string for management server host (default port: 1186) [ndb_mgm] connect-string=ndb_mgmd.mysql.com # provide location of cluster configuration file # IMPORTANT: When starting the management server with this option in the # configuration file, the use of --initial or --reload on the command line when # invoking ndb_mgmd is also required. [ndb_mgmd] config-file=/etc/config.ini
(有关连接字符串的更多信息,请参见第 25.4.3.3 节,“NDB Cluster 连接字符串”。)
# my.cnf # example additions to my.cnf for NDB Cluster # (works on all versions) # enable ndbcluster storage engine, and provide connection string for management # server host to the default port 1186 [mysqld] ndbcluster ndb-connectstring=ndb_mgmd.mysql.com:1186
重要
一旦您在my.cnf
文件中以前面显示的方式使用NDBCLUSTER
和ndb-connectstring
参数启动了一个mysqld进程,您就不能执行任何CREATE TABLE
或ALTER TABLE
语句,除非您实际启动了集群。否则,这些语句将因错误而失败。这是设计如此。
您还可以在集群my.cnf
文件中使用单独的[mysql_cluster]
部分来设置所有可执行文件读取和使用的设置:
# cluster-specific settings [mysql_cluster] ndb-connectstring=ndb_mgmd.mysql.com:1186
对于可以在my.cnf
文件中设置的其他NDB
变量,请参见第 25.4.3.9.2 节,“NDB Cluster 系统变量”。
NDB Cluster 全局配置文件按照惯例命名为config.ini
(但这不是必需的)。如果需要,它会在启动时被ndb_mgmd读取,并且可以放置在任何可以被其读取的位置。配置的位置和名称使用--config-file=*
path_name*
在命令行上与ndb_mgmd指定。此选项没有默认值,并且如果ndb_mgmd使用配置缓存,则会被忽略。
NDB Cluster 的全局配置文件使用 INI 格式,由方括号括起的部分标题(前面有部分标题),后跟适当的参数名称和值组成。与标准 INI 格式的一个偏差是,参数名称和值可以用冒号(:
)分隔,也可以用等号(=
)分隔;但是,等号更受青睐。另一个偏差是,部分不是通过部分名称唯一标识的。相反,唯一部分(例如相同类型的两个不同节点)通过在部分内指定的唯一 ID 来标识。
大多数参数都定义了默认值,并且也可以在config.ini
中指定。要创建默认值部分,只需在部分名称中添加单词default
。例如,[ndbd]
部分包含适用于特定数据节点的参数,而[ndbd default]
部分包含适用于所有数据节点的参数。假设所有数据节点应使用相同的数据内存大小。要配置它们所有,创建一个包含DataMemory
行以指定数据内存大小的[ndbd default]
部分。
如果使用,[ndbd default]
部分必须在配置文件中的任何[ndbd]
部分之前。对于任何其他类型的default
部分也是如此。
注意
在一些较旧的 NDB Cluster 版本中,没有NoOfReplicas
的默认值,它总是必须在[ndbd default]
部分中明确指定。尽管此参数现在具有默认值 2,这是大多数常见用法场景中推荐的设置,但仍建议显式设置此参数。
全局配置文件必须定义集群中涉及的计算机和节点,以及这些节点位于哪些计算机上。这里显示了一个由一个管理服务器、两个数据节点和两个 MySQL 服务器组成的集群的简单配置文件示例:
# file "config.ini" - 2 data nodes and 2 SQL nodes # This file is placed in the startup directory of ndb_mgmd (the # management server) # The first MySQL Server can be started from any host. The second # can be started only on the host mysqld_5.mysql.com [ndbd default] NoOfReplicas= 2 DataDir= /var/lib/mysql-cluster [ndb_mgmd] Hostname= ndb_mgmd.mysql.com DataDir= /var/lib/mysql-cluster [ndbd] HostName= ndbd_2.mysql.com [ndbd] HostName= ndbd_3.mysql.com [mysqld] [mysqld] HostName= mysqld_5.mysql.com
注意
前面的示例旨在作为熟悉 NDB Cluster 的最小起始配置,并且几乎肯定不足以用于生产设置。请参阅第 25.4.3.2 节,“NDB Cluster 的推荐起始配置”,其中提供了一个更完整的起始配置示例。
每个节点在config.ini
文件中都有自己的部分。例如,此集群有两个数据节点,因此前面的配置文件包含定义这些节点的两个[ndbd]
部分。
注意
不要在config.ini
文件中的部分标题相同行上放置注释;这会导致管理服务器无法启动,因为在这种情况下无法解析配置文件。
config.ini 文件的部分
config.ini
配置文件中有六个不同的部分可供使用,如下列表所述:
[computer]
: 定义了集群主机。配置可行的 NDB Cluster 不需要此部分,但在设置大型集群时可能会作为一种便利。有关更多信息,请参见第 25.4.3.4 节,“在 NDB Cluster 中定义计算机”。[ndbd]
: 定义了集群数据节点(ndbd进程)。有关详细信息,请参见第 25.4.3.6 节,“定义 NDB Cluster 数据节点”。[mysqld]
: 定义了集群的 MySQL 服务器节点(也称为 SQL 或 API 节点)。有关 SQL 节点配置的讨论,请参见第 25.4.3.7 节,“在 NDB Cluster 中定义 SQL 和其他 API 节点”。[mgm]
或[ndb_mgmd]
: 定义了集群管理服务器(MGM)节点。有关管理节点配置的信息,请参见第 25.4.3.5 节,“定义 NDB Cluster 管理服务器”。[tcp]
: 定义了集群节点之间的 TCP/IP 连接,TCP/IP 是默认的传输协议。通常情况下,设置 NDB Cluster 不需要[tcp]
或[tcp default]
部分,因为集群会自动处理;但在某些情况下可能需要覆盖集群提供的默认值。有关可用 TCP/IP 配置参数及其使用方法,请参见第 25.4.3.10 节,“NDB Cluster TCP/IP Connections”。在某些情况下,您可能还会发现第 25.4.3.11 节,“NDB Cluster TCP/IP Connections Using Direct Connections”也很有用。[shm]
: 定义了节点之间的共享内存连接。在 MySQL 8.0 中,默认启用,但仍应被视为实验性。有关 SHM 互连的讨论,请参见第 25.4.3.12 节,“NDB Cluster Shared-Memory Connections”。[sci]
: 定义了集群数据节点之间的可扩展一致性接口连接。在 NDB 8.0 中不受支持。
您可以为每个部分定义default
值。如果使用,default
部分应该出现在该类型的任何其他部分之前。例如,[ndbd default]
部分应该在任何[ndbd]
部分之前出现在配置文件中。
NDB Cluster 参数名称不区分大小写,除非在 MySQL Server 的my.cnf
或my.ini
文件中指定。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-starting.html
25.4.3.2 NDB Cluster 推荐的起始配置
要实现 NDB Cluster 的最佳性能取决于许多因素,包括以下内容:
- NDB Cluster 软件版本
- 数据节点和 SQL 节点的数量
- 硬件
- 操作系统
- 要存储的数据量
- 集群要运行的负载大小和类型
因此,获得最佳配置可能是一个迭代过程,其结果可能因每个 NDB Cluster 部署的具体情况而有很大不同。当在运行集群的平台上进行更改或使用 NDB Cluster 数据的应用程序进行更改时,也可能需要更改配置。因此,不可能为所有使用场景提供一个理想的单一配置。但是,在本节中,我们提供了一个推荐的基本配置。
起始 config.ini 文件。 以下config.ini
文件是配置运行 NDB Cluster 8.0 集群的推荐起点:
# TCP PARAMETERS [tcp default] SendBufferMemory=2M ReceiveBufferMemory=2M # Increasing the sizes of these 2 buffers beyond the default values # helps prevent bottlenecks due to slow disk I/O. # MANAGEMENT NODE PARAMETERS [ndb_mgmd default] DataDir=*path/to/management/server/data/directory* # It is possible to use a different data directory for each management # server, but for ease of administration it is preferable to be # consistent. [ndb_mgmd] HostName=*management-server-A-hostname* # NodeId=*management-server-A-nodeid* [ndb_mgmd] HostName=*management-server-B-hostname* # NodeId=*management-server-B-nodeid* # Using 2 management servers helps guarantee that there is always an # arbitrator in the event of network partitioning, and so is # recommended for high availability. Each management server must be # identified by a HostName. You may for the sake of convenience specify # a NodeId for any management server, although one is allocated # for it automatically; if you do so, it must be in the range 1-255 # inclusive and must be unique among all IDs specified for cluster # nodes. # DATA NODE PARAMETERS [ndbd default] NoOfReplicas=2 # Using two fragment replicas is recommended to guarantee availability of data; # using only one fragment replica does not provide any redundancy, which means # that the failure of a single data node causes the entire cluster to shut down. # It is also possible (but not required) in NDB 8.0 to use more than two # fragment replicas, although two fragment replicas are sufficient to provide # high availability. LockPagesInMainMemory=1 # On Linux and Solaris systems, setting this parameter locks data node # processes into memory. Doing so prevents them from swapping to disk, # which can severely degrade cluster performance. DataMemory=3456M # The value provided for DataMemory assumes 4 GB RAM # per data node. However, for best results, you should first calculate # the memory that would be used based on the data you actually plan to # store (you may find the ndb_size.pl utility helpful in estimating # this), then allow an extra 20% over the calculated values. Naturally, # you should ensure that each data node host has at least as much # physical memory as the sum of these two values. # ODirect=1 # Enabling this parameter causes NDBCLUSTER to try using O_DIRECT # writes for local checkpoints and redo logs; this can reduce load on # CPUs. We recommend doing so when using NDB Cluster on systems running # Linux kernel 2.6 or later. NoOfFragmentLogFiles=300 DataDir=*path/to/data/node/data/directory* MaxNoOfConcurrentOperations=100000 SchedulerSpinTimer=400 SchedulerExecutionTimer=100 RealTimeScheduler=1 # Setting these parameters allows you to take advantage of real-time scheduling # of NDB threads to achieve increased throughput when using ndbd. They # are not needed when using ndbmtd; in particular, you should not set # RealTimeScheduler for ndbmtd data nodes. TimeBetweenGlobalCheckpoints=1000 TimeBetweenEpochs=200 RedoBuffer=32M # CompressedLCP=1 # CompressedBackup=1 # Enabling CompressedLCP and CompressedBackup causes, respectively, local checkpoint files and backup files to be compressed, which can result in a space savings of up to 50% over noncompressed LCPs and backups. # MaxNoOfLocalScans=64 MaxNoOfTables=1024 MaxNoOfOrderedIndexes=256 [ndbd] HostName=*data-node-A-hostname* # NodeId=*data-node-A-nodeid* LockExecuteThreadToCPU=1 LockMaintThreadsToCPU=0 # On systems with multiple CPUs, these parameters can be used to lock NDBCLUSTER # threads to specific CPUs [ndbd] HostName=*data-node-B-hostname* # NodeId=*data-node-B-nodeid* LockExecuteThreadToCPU=1 LockMaintThreadsToCPU=0 # You must have an [ndbd] section for every data node in the cluster; # each of these sections must include a HostName. Each section may # optionally include a NodeId for convenience, but in most cases, it is # sufficient to allow the cluster to allocate node IDs dynamically. If # you do specify the node ID for a data node, it must be in the range 1 # to 144 inclusive and must be unique among all IDs specified for # cluster nodes. # SQL NODE / API NODE PARAMETERS [mysqld] # HostName=*sql-node-A-hostname* # NodeId=*sql-node-A-nodeid* [mysqld] [mysqld] # Each API or SQL node that connects to the cluster requires a [mysqld] # or [api] section of its own. Each such section defines a connection # “slot”; you should have at least as many of these sections in the # config.ini file as the total number of API nodes and SQL nodes that # you wish to have connected to the cluster at any given time. There is # no performance or other penalty for having extra slots available in # case you find later that you want or need more API or SQL nodes to # connect to the cluster at the same time. # If no HostName is specified for a given [mysqld] or [api] section, # then *any* API or SQL node may use that slot to connect to the # cluster. You may wish to use an explicit HostName for one connection slot # to guarantee that an API or SQL node from that host can always # connect to the cluster. If you wish to prevent API or SQL nodes from # connecting from other than a desired host or hosts, then use a # HostName for every [mysqld] or [api] section in the config.ini file. # You can if you wish define a node ID (NodeId parameter) for any API or # SQL node, but this is not necessary; if you do so, it must be in the # range 1 to 255 inclusive and must be unique among all IDs specified # for cluster nodes.
SQL 节点所需的 my.cnf 选项。 作为 NDB Cluster SQL 节点的 MySQL 服务器必须始终使用--ndbcluster
和--ndb-connectstring
选项启动,可以在命令行或my.cnf
中指定。
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-connection-strings.html
MySQL8 中文参考(八十七)(3)https://developer.aliyun.com/article/1565938