MySQL8 中文参考(九十二)
25.5.18 ndb_print_file — 打印 NDB 磁盘数据文件内容
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-file.html
ndb_print_file 从 NDB Cluster 磁盘数据文件中获取信息。
用法
ndb_print_file [-v] [-q] *file_name*+
file_name 是 NDB Cluster 磁盘数据文件的名称。可以接受多个文件名,用空格分隔。
与ndb_print_schema_file和ndb_print_sys_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)不同,ndb_print_file必须在 NDB Cluster 数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此即使管理服务器未运行,甚至集群已完全关闭,也可以使用此实用程序。
选项
表 25.40 与程序 ndb_print_file 一起使用的命令行选项
| 格式 | 描述 | 新增、弃用或移除 |
|---|---|---|
--file-key=hex_data,-K hex_data | 通过标准输入、tty 或 my.cnf 文件提供加密密钥 | 新增:NDB 8.0.31 |
--file-key-from-stdin | 通过标准输入提供加密密钥 | 新增:NDB 8.0.31 |
--help,-? | 显示帮助文本并退出;与--usage 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--quiet,-q | 减少输出的冗长性 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--usage,-? | 显示帮助文本并退出;与--help 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--verbose,-v | 增加输出的详细程度 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--version,-V | 显示版本信息并退出 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
ndb_print_file 支持以下选项:
-
--file-key,-K命令行格式 --file-key=hex_data引入版本 8.0.31-ndb-8.0.31 从
stdin,tty, 或my.cnf文件提供文件系统加密或解密密钥。 -
--file-key-from-stdin命令行格式 --file-key-from-stdin引入版本 8.0.31-ndb-8.0.31 类型 布尔值 默认数值 FALSE有效数值 TRUE从
stdin提供文件系统加密或解密密钥。 -
--help,-h,-?命令行格式 --help打印帮助信息并退出。
-
--quiet,-q命令行格式 --quiet抑制输出 (静默模式)。
-
--usage,-?命令行格式 --usage打印帮助信息并退出。
-
--verbose,-v命令行格式 --verbose使输出详细。
-
--version,-v命令行格式 --version打印版本信息并退出。
更多信息,请参见 第 25.6.11 节, “NDB 集群磁盘数据表”。
25.5.19 ndb_print_frag_file — 打印 NDB 片段列表文件内容
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-frag-file.html
ndb_print_frag_file 从集群片段列表文件中获取信息。它旨在帮助诊断数据节点重新启动时出现的问题。
用法
ndb_print_frag_file *file_name*
file_name 是集群片段列表文件的名称,与模式 S*X*.FragList 匹配,其中 X 是范围在 2-9 之间的数字,并且位于具有节点 ID nodeid 的数据节点文件系统中,位于名为 ndb_*nodeid*_fs/D*N*/DBDIH/ 的目录中,其中 N 是 1 或 2。每个片段文件包含属于每个 NDB 表的片段记录。有关集群片段文件的更多信息,请参见 NDB 集群数据节点文件系统目录。
与 ndb_print_backup_file, ndb_print_sys_file, 以及 ndb_print_schema_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他 NDB 实用程序不同),ndb_print_frag_file 必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此此实用程序可在管理服务器未运行时使用,甚至在集群完全关闭时使用。
附加选项
无。
示例输出
$> ndb_print_frag_file /usr/local/mysqld/data/ndb_3_fs/D1/DBDIH/S2.FragList
Filename: /usr/local/mysqld/data/ndb_3_fs/D1/DBDIH/S2.FragList with size 8192
noOfPages = 1 noOfWords = 182
Table Data
----------
Num Frags: 2 NoOfReplicas: 2 hashpointer: 4294967040
kvalue: 6 mask: 0x00000000 method: HashMap
Storage is on Logged and checkpointed, survives SR
------ Fragment with FragId: 0 --------
Preferred Primary: 2 numStoredReplicas: 2 numOldStoredReplicas: 0 distKey: 0 LogPartId: 0
-------Stored Replica----------
Replica node is: 2 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
-------Stored Replica----------
Replica node is: 3 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
------ Fragment with FragId: 1 --------
Preferred Primary: 3 numStoredReplicas: 2 numOldStoredReplicas: 0 distKey: 0 LogPartId: 1
-------Stored Replica----------
Replica node is: 3 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
-------Stored Replica----------
Replica node is: 2 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
25.5.20 ndb_print_schema_file — 打印 NDB 模式文件内容
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-schema-file.html
ndb_print_schema_file从集群模式文件获取诊断信息。
用法
ndb_print_schema_file *file_name*
file_name 是一个集群模式文件的名称。有关集群模式文件的更多信息,请参阅 NDB Cluster Data Node File System Directory。
像ndb_print_backup_file和ndb_print_sys_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)ndb_print_schema_file必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此此实用程序可在管理服务器未运行时使用,甚至在集群完全关闭时也可使用。
附加选项
无。
25.5.21 ndb_print_sys_file — 打印 NDB 系统文件内容
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-print-sys-file.html
ndb_print_sys_file从 NDB 集群系统文件中获取诊断信息。
用法
ndb_print_sys_file *file_name*
*file_name是集群系统文件(sysfile)的名称。集群系统文件位于数据节点的数据目录(DataDir)中;此目录下系统文件的路径与模式ndb_*#*_fs/D*#*/DBDIH/P*#*.sysfile匹配。在每种情况下,#*代表一个数字(不一定是相同的数字)。有关更多信息,请参见 NDB 集群数据节点文件系统目录。
像ndb_print_backup_file和ndb_print_schema_file(与大多数旨在在管理服务器主机上运行或连接到管理服务器的其他NDB实用程序不同)ndb_print_backup_file必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此此实用程序可在管理服务器未运行时使用,甚至在集群完全关闭时也可使用。
附加选项
无。
25.5.22 ndb_redo_log_reader — 检查和打印集群重做日志的内容
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-redo-log-reader.html
读取重做日志文件,检查其中是否有错误,以人类可读的格式打印其内容,或两者兼而有之。ndb_redo_log_reader主要供 NDB Cluster 开发人员和支持人员在调试和诊断问题时使用。
该实用程序仍在开发中,其语法和行为可能会在未来的 NDB Cluster 版本中发生变化。
ndb_redo_log_reader的 C++源文件可以在目录/storage/ndb/src/kernel/blocks/dblqh/redoLogReader中找到。
可用于ndb_redo_log_reader的选项如下表所示。表后附有附加描述。
表 25.41 与程序 ndb_redo_log_reader 一起使用的命令行选项
| 格式 | 描述 | 新增、弃用或移除 |
|---|---|---|
-dump | 打印转储信息 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--file-key=key,-K key | 提供解密密钥 | 新增:NDB 8.0.31 |
--file-key-from-stdin | 使用 stdin 提供解密密钥 | 新增:NDB 8.0.31 |
-filedescriptors | 仅打印文件描述符 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--help | 打印使用信息(无简短形式) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-lap | 提供 lap 信息,包括最大 GCI 的开始和完成 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-mbyte # | 起始兆字节 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-mbyteheaders | 仅显示文件中每兆字节的第一页标题 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-nocheck | 不检查记录错误 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-noprint | 不打印记录 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-page # | 从此页开始 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-pageheaders | 仅显示页头 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-pageindex # | 从此页索引开始 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
-twiddle | 位移转储 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
| 格式 | 描述 | 添加、弃用或移除 |
用法
ndb_redo_log_reader *file_name* [*options*]
file_name 是集群重做日志文件的名称。重做日志文件位于数据节点数据目录(DataDir)下的编号目录中;在此目录下到重做日志文件的路径与模式匹配为 ndb_*nodeid*_fs/D*#*/DBLQH/S*#*.FragLog。nodeid 是数据节点的节点 ID。# 的两个实例分别代表一个数字(不一定相同的数字);D 后面的数字范围为 8-39 包括 8 和 39;S 后面的数字范围根据 NoOfFragmentLogFiles 配置参数的值而变化,其默认值为 16;因此,文件名中数字的默认范围为 0-15 包括 0 和 15。更多信息,请参阅 NDB Cluster Data Node File System Directory。
要读取的文件名后面可以跟随此处列出的一个或多个选项:
-
-dump命令行格式 -dump打印转储信息。
-
--file-key,-K命令行格式 --file-key=key引入版本 8.0.31-ndb-8.0.31 使用
stdin、tty或my.cnf文件提供文件解密密钥。 -
--file-key-from-stdin命令行格式 --file-key-from-stdin引入版本 8.0.31-ndb-8.0.31 使用
stdin提供文件解密密钥。 -
| 命令行格式 |
-filedescriptors| -
| --- | --- |
-filedescriptors: 仅打印文件描述符。 -
| 命令行格式 |
--help| -
| --- | --- |
--help: 打印使用信息。 -
-lap命令行格式 -lap提供 lap 信息,包括最大 GCI 的开始和完成。
-
| 命令行格式 |
-mbyte #| -
| --- | --- | | 类型 | 数值型 | | 默认值 |
0| | 最小值 |0| | 最大值 |15|-mbyte *#*: 起始兆字节。#是一个范围在 0 到 15 之间的整数。 -
| 命令行格式 |
-mbyteheaders| -
| --- | --- |
-mbyteheaders: 仅显示文件中每个兆字节的第一页页眉。 -
| 命令行格式 |
-noprint| -
| --- | --- |
-noprint: 不打印日志文件的内容。 -
| 命令行格式 |
-nocheck| -
| --- | --- |
-nocheck: 不检查日志文件中的错误。 -
| 命令行格式 |
-page #| -
| --- | --- | | 类型 | 整数型 | | 默认值 |
0| | 最小值 |0| | 最大值 |31|-page *#*: 从这一页开始。#是一个范围在 0 到 31 之间的整数。 -
| 命令行格式 |
-pageheaders| -
| --- | --- |
-pageheaders: 仅显示页眉。 -
| 命令行格式 |
-pageindex #| -
| --- | --- | | 类型 | 整数型 | | 默认值 |
12| | 最小值 |12| | 最大值 |8191|-pageindex *#*: 从这个页面索引开始。#是一个范围在 12 到 8191 之间的整数。 -
-twiddle命令行格式 -twiddle位移转储。
像ndb_print_backup_file和ndb_print_schema_file(与大多数NDB实用程序不同,这些实用程序旨在在管理服务器主机上运行或连接到管理服务器)ndb_redo_log_reader必须在集群数据节点上运行,因为它直接访问数据节点文件系统。由于它不使用管理服务器,因此即使管理服务器未运行,甚至在集群完全关闭时也可以使用此实用程序。
25.5.23 ndb_restore — 恢复 NDB 集群备份
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-restore.html
25.5.23.1 将 NDB 备份恢复到不同版本的 NDB 集群
25.5.23.2 恢复到不同数量的数据节点
25.5.23.3 从并行备份中恢复
NDB 集群恢复程序实现为一个独立的命令行实用程序ndb_restore,通常可以在 MySQL bin 目录中找到。该程序读取备份生成的文件,并将存储的信息插入数据库。
在 NDB 7.6 及更早版本中,由于对 NDBT 测试库的不必要依赖,该程序在运行完成时打印了 NDBT_ProgramExit - *status*,在 NDB 8.0 中已经移除了这个依赖,消除了多余的输出。
ndb_restore必须针对每个由 START BACKUP 命令创建的备份文件执行一次。这等于在创建备份时集群中的数据节点数量。
注意
在使用ndb_restore之前,建议集群在单用户模式下运行,除非您要并行恢复多个数据节点。有关更多信息,请参见第 25.6.6 节,“NDB 集群单用户模式”。
可与ndb_restore一起使用的选项显示在下表中。表后面会有额外的描述。
表 25.42 与程序 ndb_restore 一起使用的命令行选项
| 格式 | 描述 | 添加、弃用或移除 |
|---|---|---|
[--allow-pk-changes[=0|1]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes) | 允许更改构成表主键的列集 | 添加:NDB 8.0.21 |
--append | 追加数据到制表符文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--backup-password=password | 为使用--decrypt 解密的加密备份提供密码; 请参阅允许的值的文档 | 新增: NDB 8.0.22 |
--backup-password-from-stdin | 从 STDIN 安全获取解密密码; 与--decrypt 选项一起使用 | 新增: NDB 8.0.24 |
--backup-path=path | 备份文件目录的路径 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--backupid=#,-b # | 恢复具有此 ID 的备份 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--character-sets-dir=path | 包含字符集的目录 | 移除: 8.0.31 |
--connect=connection_string,-c connection_string | --connectstring 的别名 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-retries=# | 放弃之前重试连接的次数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-retry-delay=# | 尝试联系管理服务器之间等待的秒数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-string=connection_string,-c connection_string | 与--ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--core-file | 在错误时写入核心文件; 用于调试 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--decrypt | 解密加密备份; 需要--backup-password | 新增: NDB 8.0.22 |
--defaults-extra-file=path | 在读取全局文件后读取给定文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-file=path | 仅从给定文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-group-suffix=string | 还读取具有 concat(group, suffix) 的组 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--disable-indexes | 导致备份中的索引被忽略;可能减少恢复数据所需的时间 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--dont-ignore-systab-0,-f | 在恢复过程中不要忽略系统表;仅用于实验;不适用于生产环境 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--exclude-databases=list | 要排除的一个或多个数据库的列表(包括未命名的数据库) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
[--exclude-intermediate-sql-tables[=TRUE|FALSE]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_exclude-intermediate-sql-tables) | 不恢复任何中间表(名称以'#sql-'为前缀);这些表是从复制 ALTER TABLE 操作中留下的;指定 FALSE 来恢复这些表 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--exclude-missing-columns | 导致备份版本中缺失于数据库中表版本的列被忽略 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--exclude-missing-tables | 导致备份中缺失于数据库中的表被忽略 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--exclude-tables=list | 要排除的一个或多个表的列表(包括未命名的同一数据库中的表);每个表引用必须包括数据库名称 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--fields-enclosed-by=char | 字段由此字符包围 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--fields-optionally-enclosed-by | 字段可选择由此字符包围 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--fields-terminated-by=char | 字段由此字符终止 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--help,-? | 显示帮助文本并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--hex | 以十六进制格式打印二进制类型 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
[--ignore-extended-pk-updates[=0|1]](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ignore-extended-pk-updates) | 忽略包含对现在包含在扩展主键中的列的更新的日志条目 | 新增:NDB 8.0.21 |
--include-databases=list | 要恢复的一个或多个数据库的列表(排除未命名的数据库) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--include-stored-grants | 将共享用户和授权恢复到 ndb_sql_metadata 表 | 新增:NDB 8.0.19 |
--include-tables=list | 要恢复的一个或多个表的列表(排除同一数据库中未命名的表);每个表引用必须包括数据库名称 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--lines-terminated-by=char | 行以此字符结尾 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--login-path=path | 从登录文件中读取给定路径 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--lossy-conversions,-L | 在从备份中恢复数据时允许���值的有损转换(类型降级或符号更改) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--no-binlog | 如果 mysqld 已连接并使用二进制日志记录,则不记录恢复的数据 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--no-defaults | 不从登录文件以外的任何选项文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--no-restore-disk-objects,-d | 不恢复与磁盘数据相关的对象 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--no-upgrade,-u | 不升级尚未调整 VAR 数据大小的 varsize 属性的数组类型,并且不更改列属性 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-connectstring=connection_string,-c connection_string | 设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-mgmd-host=connection_string,-c connection_string | 与 --ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-nodegroup-map=map,-z | 指定节点组映射;未使用,不支持 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-nodeid=# | 为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-optimized-node-selection | 启用节点选择优化以进行事务。默认启用;使用 --skip-ndb-optimized-node-selection 来禁用 | 移除:8.0.31 |
--nodeid=#,-n # | 备份所在节点的 ID | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--num-slices=# | 恢复时应用的切片数量 | 添加:NDB 8.0.20 |
--parallelism=#,-p # | 并行事务的数量,用于恢复数据 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--preserve-trailing-spaces,-P | 允许在将固定宽度字符串类型提升为可变宽度类型时保留尾随空格(包括填充) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--print | 将元数据、数据和日志打印到标准输出(等同于 --print-meta --print-data --print-log) | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--print-data | 将数据打印到标准输出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--print-defaults | 打印程序参数列表并退出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--print-log | 将日志打印到标准输出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--print-meta | 将元数据打印到��准输出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--print-sql-log | 将 SQL 日志写入标准输出 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--progress-frequency=# | 每隔指定秒数打印还原进度状态 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--promote-attributes,-A | 在从备份还原数据时允许属性提升 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--rebuild-indexes | 导致在备份中找到的有序索引进行多线程重建;使用的线程数由设置 BuildIndexThreads 决定 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--remap-column=string | 对指定列的值应用偏移量,使用指定的函数和参数。格式为[db].[tbl].[col]:[fn]:[args];详细信息请参阅文档 | 新增功能:NDB 8.0.21 |
--restore-data,-r | 使用 NDB API 将表数据和日志还原到 NDB 集群 | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--restore-epoch,-e | 将 epoch 信息还原到状态表;在副本集群上用于启动复制;更新或插入具有 ID 0 的行到 mysql.ndb_apply_status | (支持所有基于 MySQL 8.0 的 NDB 版本) |
--restore-meta,-m | 使用 NDB API 将元数据恢复到 NDB 集群 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--restore-privilege-tables | 恢复之前移至 NDB 的 MySQL 权限表 | 废弃:NDB 8.0.16 |
--rewrite-database=string | 恢复到不同命名的数据库;格式为 olddb,newdb | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--skip-broken-objects | 忽略备份文件中缺失的 blob 表 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--skip-table-check,-s | 在恢复过程中跳过表结构检查 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--skip-unknown-objects | 导致 ndb_restore 不识别的模式对象在从较新 NDB 版本备份恢复到较旧版本时被忽略 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--slice-id=# | 在按片段恢复时的片段 ID | 新增:NDB 8.0.20 |
--tab=path,-T path | 为提供的路径中的每个表创建一个制表符分隔的.txt 文件 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--timestamp-printouts{=true|false} | 在所有信息、错误和调试日志消息前加上时间戳 | 新增:NDB 8.0.33 |
--usage,-? | 显示帮助文本并退出;与--help 相同 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--verbose=# | 输出中的详细程度 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
--version,-V | 显示版本信息并退出 | (适用于基于 MySQL 8.0 的所有 NDB 版本) |
[--with-apply-status](https://wiki.example.org/mysql-cluster-programs-ndb-restore.html#option_ndb_restore_with-apply-status) | 还原 ndb_apply_status 表。需要--restore-data | 新增:NDB 8.0.29 |
| 格式 | 描述 | 添加、弃用或移除 |
-
命令行格式 --allow-pk-changes[=0|1]引入版本 8.0.21-ndb-8.0.21 类型 整数 默认值 0最小值 0最大值 1当此选项设置为
1时,ndb_restore允许表定义中的主键与备份中相同表的主键不同。当在不同模式版本之间备份和还原时,可能希望在一个或多个表上进行主键更改,而且执行还原操作使用 ndb_restore 比在还原表模式和数据后发出许多ALTER TABLE语句更简单或更有效。--allow-pk-changes支持以下主键定义的更改:-
扩展主键:备份中表模式中存在的非空列将成为数据库中表的主键的一部分。
重要提示
在扩展表的主键时,任何成为主键一部分的列在备份时不能被更新;任何由ndb_restore发现的此类更新会导致还原操作失败,即使值没有发生变化。在某些情况下,可能可以使用
--ignore-extended-pk-updates选项覆盖此行为;有关此选项的更多信息,请参阅该选项的描述。 -
缩小主键(1):备份模式中已经是表主键一部分的列不再是主键的一部分,但仍然保留在表中。
-
缩小主键(2):备份模式中已经是表主键一部分的列将被完全从表中移除。
这些差异可以与ndb_restore支持的其他模式差异结合使用,包括需要使用分段表的 blob 和 text 列的更改。
典型情景中使用主键模式更改的基本步骤如下:
-
使用ndb_restore还原表模式
--restore-meta -
更改模式为所需的模式,或创建它
-
备份所需的模式
-
运行ndb_restore
--disable-indexes使用上一步的备份,以删除索引和约束 -
运行ndb_restore
--allow-pk-changes(可能还包括--ignore-extended-pk-updates、--disable-indexes以及可能需要的其他选项)以恢复所有数据 -
运行ndb_restore
--rebuild-indexes使用具有所需模式的备份,以重建索引和约束
在扩展主键时,可能需要ndb_restore在恢复操作期间使用临时的次要唯一索引,以将旧主键映射到新主键。只有在需要将备份日志中的事件应用于具有扩展主键的表时,才会创建这样的索引。此索引命名为
NDB$RESTORE_PK_MAPPING,并且在每个需要它的表上创建;如果需要,多个运行在并行的ndb_restore实例可以共享它。(在恢复过程结束时运行ndb_restore--rebuild-indexes会导致此索引被删除。) -
-
--append命令行格式 --append当与
--tab和--print-data选项一起使用时,这会导致数据附加到具有相同名称的任何现有文件中。 -
--backup-path=dir_name命令行格式 --backup-path=path类型 目录名称 默认值 ./必须提供备份目录的路径;这通过
--backup-path选项提供给ndb_restore,并且必须包括与要恢复的备份的 ID 相对应的子目录。例如,如果数据节点的DataDir是/var/lib/mysql-cluster,那么备份目录是/var/lib/mysql-cluster/BACKUP,备份 ID 为 3 的备份文件可以在/var/lib/mysql-cluster/BACKUP/BACKUP-3中找到。路径可以是绝对路径,也可以是相对于ndb_restore可执行文件所在目录的路径,并且可以选择性地加上backup-path=前缀。可以将备份恢复到与创建时不同配置的数据库。例如,假设在具有节点 ID
2和3的两个存储节点的集群中创建的备份 ID 为12的备份,需要恢复到具有四个节点的集群中。那么必须分别在备份所在集群的每个存储节点上运行ndb_restore两次。然而,ndb_restore 不能总是将从运行不同 MySQL 版本的集群中制作的备份恢复到运行不同 MySQL 版本的集群中。有关更多信息,请参见第 25.3.7 节,“NDB 集群升级和降级”。重要
无法使用较旧版本的ndb_restore恢复从较新版本的 NDB Cluster 制作的备份。可以将从较新版本的 MySQL 制作的备份恢复到较旧的集群,但必须使用较新 NDB Cluster 版本的ndb_restore的副本来执行此操作。
例如,要将从运行 NDB Cluster 8.0.35 的集群中获取的集群备份恢复到运行 NDB Cluster 7.6.28 的集群中,必须使用随 NDB Cluster 7.6.28 发行的ndb_restore。
为了更快地恢复,可以并行恢复数据,前提是有足够数量的集群连接可用。也就是说,当并行恢复到多个节点时,必须为每个并发的ndb_restore进程在集群
config.ini文件中有一个[api]或[mysqld]部分可用。但是,数据文件必须始终先于日志应用。 -
--backup-password=*password*命令行格式 --backup-password=password引入版本 8.0.22-ndb-8.0.22 类型 字符串 默认值 [none]此选项指定在使用
--decrypt选项解密加密备份时要使用的密码。这必须是用于加密备份的相同密码。密码必须为 1 到 256 个字符,并且必须用单引号或双引号括起来。它可以包含 ASCII 字符代码为 32、35、38、40-91、93、95 和 97-126 的任何 ASCII 字符;换句话说,它可以使用除了
!、'、"、$、%、\和^之外的任何可打印 ASCII 字符。在 MySQL 8.0.24 及更高版本中,可以省略密码,此时ndb_restore将等待从
stdin提供密码,就像在使用--backup-password-from-stdin时一样。 -
--backup-password-from-stdin[=TRUE|FALSE]命令行格式 --backup-password-from-stdin引入版本 8.0.24-ndb-8.0.24 当用于替代
--backup-password时,此选项允许从系统 shell(stdin)输入备份密码,类似于在使用--password时交互地向mysql提供密码而不在命令行上提供密码时的操作。 -
--backupid=#,-b命令行格式 --backupid=#类型 数字 默认值 none此选项用于指定备份的 ID 或序列号,与管理客户端在完成备份时显示的
Backup *backup_id* completed消息中显示的数字相同(请参阅第 25.6.8.2 节,“使用 NDB 集群管理客户端创建备份”)。重要
在恢复集群备份时,必须确保从具有相同备份 ID 的备份中恢复所有数据节点。使用来自不同备份的文件最多会导致将集群恢复到不一致状态,并且很可能完全失败。
在 NDB 8.0 中,此选项是必需的。
-
--character-sets-dir命令行格式 --character-sets-dir=path已移除 8.0.31 包含字符集的目录。
-
--connect,-c命令行格式 --connect=connection_string类型 字符串 默认值 localhost:1186--ndb-connectstring的别名。 -
--connect-retries命令行格式 --connect-retries=#类型 整数 默认值 12最小值 0最大值 12在放弃之前重试连接的次数。
-
--connect-retry-delay命令行格式 --connect-retry-delay=#类型 整数 默认值 5最小值 0最大值 5尝试联系管理服务器之间等待的秒数。
-
--connect-string命令行格式 --connect-string=connection_string类型 字符串 默认值 [none]与
--ndb-connectstring相同。 -
--core-file命令行格式 --core-file在错误时写入核心文件;用于调试。
-
--decrypt命令行格式 --decrypt引入 8.0.22-ndb-8.0.22 使用由
--backup-password选项提供的密码解密加密备份。 -
--defaults-extra-file命令行格式 --defaults-extra-file=path类型 字符串 默认值 [none]在读取全局文件后读取给定文件。
-
--defaults-file命令行格式 --defaults-file=path类型 字符串 默认值 [none]仅从给定文件中读取默认选项。
-
--defaults-group-suffix命令行格式 --defaults-group-suffix=string类型 字符串 默认值 [none]也读取带有 concat(group, suffix) 的组。
-
--disable-indexes命令行格式 --disable-indexes在从本机
NDB备份中恢复数据时禁用索引的恢复。之后,您可以使用多线程构建索引一次性为所有表恢复索引,使用--rebuild-indexes,这应该比为非常大的表同时重建索引更快。在 NDB 8.0.27 及更高版本中,此选项还会删除备份中指定的任何外键。
在 NDB 8.0.29 之前,尝试从 MySQL 访问一个
NDB表,其中一个或多个索引找不到时,总是会被拒绝并显示错误4243索引未找到。从 NDB 8.0.29 开始,MySQL 可以打开这样的表,前提是查询不使用任何受影响的索引;否则查询将被拒绝并显示ER_NOT_KEYFILE。在后一种情况下,您可以通过执行类似于以下语句的ALTER TABLE语句来暂时解决问题:ALTER TABLE tbl ALTER INDEX idx INVISIBLE;这会导致 MySQL 忽略表
tbl上的索引idx。有关更多信息,请参阅主键和索引。 -
--dont-ignore-systab-0,-f命令行格式 --dont-ignore-systab-0通常,在恢复表数据和元数据时,ndb_restore会忽略备份中存在的
NDB系统表的副本。--dont-ignore-systab-0会导致系统表被恢复。此选项仅供实验和开发使用,不建议在生产环境中使用。 -
--exclude-databases=db-list命令行格式 --exclude-databases=list类型 字符串 默认值 逗号分隔的一个或多个不应恢复的数据库列表。
这个选项通常与
--exclude-tables结合使用;请参阅该选项的描述以获取更多信息和示例。 -
--exclude-intermediate-sql-tables[=TRUE|FALSE]命令行格式 --exclude-intermediate-sql-tables[=TRUE|FALSE]类型 布尔值 默认值 TRUE在执行复制
ALTER TABLE操作时,mysqld会创建中间表(其名称以#sql-为前缀)。当为TRUE时,--exclude-intermediate-sql-tables选项会阻止ndb_restore从恢复这些可能残留的表。此选项默认为TRUE。 -
--exclude-missing-columns命令行格式 --exclude-missing-columns可以使用此选项仅恢复选定的表列,这会导致ndb_restore忽略备份中与正在恢复的表版本中缺失的任何列。此选项适用于所有正在恢复的表。如果希望仅将此选项应用于选定的表或数据库,可以将其与本节其他地方描述的一个或多个
--include-*或--exclude-*选项结合使用,然后使用一组补充选项将数据恢复到其余表中。 -
--exclude-missing-tables命令行格式 --exclude-missing-tables可以使用此选项仅恢复选定的表,这会导致ndb_restore忽略备份中未在目标数据库中找到的任何表。
-
--exclude-tables=table-list命令行格式 --exclude-tables=list类型 字符串 默认值 列出一个或多个要排除的表;每个表引用必须包括数据库名称。通常与
--exclude-databases一起使用。当使用
--exclude-databases或--exclude-tables时,仅排除选项命名的那些数据库或表;所有其他数据库和表都会被ndb_restore恢复。本表显示了使用
--exclude-*选项(为清晰起见,可能需要的其他选项已被省略)调用ndb_restore的几种情况,以及这些选项对从 NDB Cluster 备份中恢复的影响:*表 25.43 使用--exclude-选项进行多次调用 ndb_restore,并这些选项对从 NDB Cluster 备份中恢复的影响。
选项 结果 --exclude-databases=db1所有数据库中除了 db1的所有表都会被恢复;db1中的表不会被恢复--exclude-databases=db1,db2(或--exclude-databases=db1--exclude-databases=db2)所有数据库中除了 db1和db2的所有表都会被恢复;db1或db2中的表不会被恢复--exclude-tables=db1.t1除了 db1中的t1之外的所有表都会被恢复;db1中的所有其他表都会被恢复;所有其他数据库中的表都会被恢复--exclude-tables=db1.t2,db2.t1(或--exclude-tables=db1.t2--exclude-tables=db2.t1)除了数据库 db1中的t2和数据库db2中的表t1之外的所有表都会被恢复;db1或db2中的其他表不会被恢复;所有其他数据库中的表都会被恢复您可以一起使用这两个选项。例如,以下操作会导致所有数据库中的所有表除了数据库
db1和db2以及数据库db3中的表t1和t2被恢复:$> ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2(同样,为了清晰和简洁起见,我们已经省略了示例中可能需要的其他选项。)
您可以一起使用
--include-*和--exclude-*选项,但必须遵守以下规则:-
所有
--include-*和--exclude-*选项的操作是累积的。 -
所有
--include-*和--exclude-*选项都按照传递给 ndb_restore 的顺序从右到左进行评估。 -
在存在冲突选项的情况下,第一个(最右侧)选项优先。换句话说,从右到左的第一个选项(匹配给定数据库或表)“获胜”。
例如,以下选项集导致ndb_restore从数据库
db1中恢复所有表,除了db1.t1,同时不恢复来自任何其他数据库的表:--include-databases=db1 --exclude-tables=db1.t1然而,简单地颠倒给定选项的顺序会导致所有来自数据库
db1的表被恢复(包括db1.t1,但不包括来自任何其他数据库的表),因为--include-databases选项位于最右侧,首先匹配数据库db1,因此优先于匹配db1或db1中任何表的任何其他选项:--exclude-tables=db1.t1 --include-databases=db1 -
-
--fields-enclosed-by=char命令行格式 --fields-enclosed-by=char类型 字符串 默认值 每个列值都由传递给此选项的字符串括起来(不管数据类型如何;请参阅
--fields-optionally-enclosed-by的描述)。 -
--fields-optionally-enclosed-by命令行格式 --fields-optionally-enclosed-by类型 字符串 默认值 传递给此选项的字符串用于包含包含字符数据(如
CHAR、VARCHAR、BINARY、TEXT或ENUM)的列值。 -
--fields-terminated-by=char命令行格式 --fields-terminated-by=char类型 字符串 默认值 \t (制表符)传递给此选项的字符串用于分隔列值。默认值是制表符(
\t)。 -
--help命令行格式 --help显示帮助文本并退出。
-
--hex命令行格式 --hex如果使用了此选项,则所有二进制值都以十六进制格式输出。
-
--ignore-extended-pk-updates命令行格式 --ignore-extended-pk-updates[=0|1]引入版本 8.0.21-ndb-8.0.21 类型 整数 默认值 0最小值 0最大值 1在使用
--allow-pk-changes时,成为表主键一部分的列在备份过程中不能被更新;这些列应该保持与插入值相同的值,直到包含这些值的行被删除。如果ndb_restore在恢复备份时遇到这些列的更新,恢复将失败。因为一些应用程序在更新行时可能为所有列设置值,即使有些列的值没有改变,备份可能包含看似更新未实际修改的列的日志事件。在这种情况下,您可以将--ignore-extended-pk-updates设置为1,强制ndb_restore忽略这样的更新。重要
当导致这些更新被忽略时,用户有责任确保任何成为主键一部分的列的值没有更新。
更多信息,请参阅
--allow-pk-changes的描述。 -
--include-databases=db-list命令行格式 --include-databases=list类型 字符串 默认值 逗号分隔的一个或多个要恢复的数据库列表。通常与
--include-tables一起使用;有关更多信息和示例,请参阅该选项的描述。 -
--include-stored-grants命令行格式 --include-stored-grants引入版本 8.0.19-ndb-8.0.19 在 NDB 8.0 中,ndb_restore默认不恢复共享用户和授权(请参阅第 25.6.13 节,“权限同步和 NDB_STORED_USER”)到
ndb_sql_metadata表。指定此选项会导致它执行此操作。 -
--include-tables=table-list命令行格式 --include-tables=list类型 字符串 默认值 逗号分隔的要恢复的表列表;每个表引用必须包括数据库名称。
当使用
--include-databases或--include-tables时,只有由该选项命名的数据库或表会被恢复;所有其他数据库和表都会被ndb_restore排除,并且不会被恢复。以下表显示了使用
--include-*选项调用ndb_restore的几种情况(为清晰起见,省略了可能需要的其他选项),以及这些选项对从 NDB Cluster 备份中恢复的影响:*表 25.44 使用--include-选项调用 ndb_restore 的几种情况,以及它们对从 NDB Cluster 备份中恢复的影响。
选项 结果 --include-databases=db1仅恢复数据库 db1中的表;忽略所有其他数据库中的所有表--include-databases=db1,db2(或--include-databases=db1--include-databases=db2)仅恢复数据库 db1和db2中的表;忽略所有其他数据库中的所有表--include-tables=db1.t1仅恢复数据库 db1中的表t1;不恢复db1中的其他表或任何其他数据库中的表--include-tables=db1.t2,db2.t1(或--include-tables=db1.t2--include-tables=db2.t1)仅恢复数据库 db1中的表t2和数据库db2中的表t1;不恢复db1、db2或任何其他数据库中的其他表您还可以同时使用这两个选项。例如,以下内容将导致恢复数据库
db1和db2中的所有表,以及数据库db3中的表t1和t2(而不���其他数据库或表):$> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2(在刚刚显示的示例中,我们再次省略了其他可能需要的选项。)
也可以仅恢复选定的数据库或来自单个数据库的选定表,而不使用任何
--include-*(或--exclude-*)选项,使用此处显示的语法:ndb_restore *other_options* *db_name*,[*db_name*[,...] | *tbl_name*[,*tbl_name*][,...]]换句话说,您可以指定要恢复的以下内容之一:
-
一个或多个数据库的所有表
-
来自单个数据库的一个或多个表
-
-
--lines-terminated-by=char命令行格式 --lines-terminated-by=char类型 字符串 默认值 \n (换行)指定用于结束每行输出的字符串。默认值是换行符 (
\n)。 -
--login-path命令行格式 --login-path=path类型 字符串 默认值 [none]从登录文件中读取给定路径。
-
--lossy-conversions,-L命令行格式 --lossy-conversions此选项旨在补充
--promote-attributes选项。使用--lossy-conversions允许在从备份恢复数据时进行列值的有损转换(类型降级或符号更改)。除了一些例外情况外,规定降级的规则与 MySQL 复制相同;有关当前受支持的属性降级的具体类型转换信息,请参见 Section 19.5.1.9.2, “Replication of Columns Having Different Data Types”。从 NDB 8.0.26 开始,此选项还使得将
NULL列恢复为NOT NULL成为可能。该列不得包含任何NULL条目;否则 ndb_restore 将停止并显示错误。ndb_restore 在进行有损转换期间执行的任何数据截断都会报告一次,每个属性和列一次。
-
--no-binlog命令行格式 --no-binlog此选项防止任何连接的 SQL 节点将由 ndb_restore 恢复的数据写入其二进制日志。
-
--no-restore-disk-objects,-d命令行格式 --no-restore-disk-objects此选项阻止ndb_restore恢复任何 NDB 集群磁盘数据对象,如表空间和日志文件组;有关这些内容的更多信息,请参见第 25.6.11 节,“NDB 集群磁盘数据表”。
-
--no-upgrade,-u命令行格式 --no-upgrade使用ndb_restore恢复备份时,使用旧的固定格式创建的
VARCHAR列将被调整大小并重新创建为现在使用的可变宽度格式。可以通过指定--no-upgrade来覆盖此行为。 -
--ndb-connectstring命令行格式 --ndb-connectstring=connection_string类型 字符串 默认值 [none]为连接到 ndb_mgmd 设置连接字符串。语法:“[nodeid=id;][host=]hostname[:port]”。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
-
--ndb-mgmd-host命令行格式 --ndb-mgmd-host=connection_string类型 字符串 默认值 [none]与
--ndb-connectstring相同。 -
--ndb-nodegroup-map=map,-z命令行格式 --ndb-nodegroup-map=map用于将从一个节点组获取的备份还原到另一个节点组,但从未完全实现;不受支持。
所有支持此选项的代码在 NDB 8.0.27 中已删除;在此版本及更高版本中,对其设置的任何值都将被忽略,该选项本身不起作用。
-
--ndb-nodeid命令行格式 --ndb-nodeid=#类型 整数 默认值 [none]为此节点设置节点 ID,覆盖
--ndb-connectstring设置的任何 ID。 -
--ndb-optimized-node-selection命令行格式 --ndb-optimized-node-selection已移除 8.0.31 启用优化以选择事务节点。默认启用;使用
--skip-ndb-optimized-node-selection来禁用。 -
--no-defaults命令行格式 --no-defaults不要从除登录文件以外的任何选项文件中读取默认选项。
-
--nodeid=#,-n命令行格式 --nodeid=#类型 数字 默认值 none指定取备份的数据节点的节点 ID。
在将备份恢复到数据节点数量与取备份的节点不同的集群时,此信息有助于识别要恢复到给定节点的正确文件集或文件集。 (在这种情况下,通常需要将多个文件恢复到单个数据节点。)有关更多信息和示例,请参见 Section 25.5.23.2, “Restoring to a different number of data nodes”。
在 NDB 8.0 中,此选项是必需的。
-
--num-slices=#命令行格式 --num-slices=#引入版本 8.0.20-ndb-8.0.20 类型 整数 默认值 1最小值 1最大值 1024在按片段恢复备份时,此选项设置备份分成的片段数。这允许多个ndb_restore实例并行恢复不相交的子集,可能减少执行恢复操作所需的时间。
片段 是给定备份中数据的子集;也就是说,它是具有相同片段 ID 的一组片段,使用
--slice-id选项指定。这两个选项必须始终一起使用,并且由--slice-id设置的值必须始终小于片段数。ndb_restore 遇到片段并为每个片段分配一个片段计数器。在按片段恢复时,每个片段被分配一个片段 ID;此片段 ID 在 0 到片段数减 1 的范围内。对于不是
BLOB表的表,确定给定片段属于哪个片段的公式如下:[*slice_ID*] = [*fragment_counter*] % [*number_of_slices*]对于
BLOB表,不使用片段计数器;而是使用片段号,以及BLOB表的主表 ID(回想一下,NDB在内部将BLOB值存储在单独的表中)。在这种情况下,给定片段的片段 ID 计算如下:[*slice_ID*] = ([*main_table_ID*] + [*fragment_ID*]) % [*number_of_slices*]因此,通过*
N切片进行恢复意味着运行N*个ndb_restore实例,每个实例都带有--num-slices=*N*(以及任何其他必要选项),并且每个实例分别带有--slice-id=1、--slice-id=2、--slice-id=3,依此类推直到slice-id=*N*-1。示例。 假设您想要恢复名为
BACKUP-1的备份,在每个数据节点的默认目录/var/lib/mysql-cluster/BACKUP/BACKUP-3中找到,到具有节点 ID 为 1、2、3 和 4 的四个数据节点的集群。要使用五个切片执行此操作,请执行以下列表中显示的命令集:-
使用ndb_restore恢复集群元数据如下所示:
$> ndb_restore -b 1 -n 1 -m --disable-indexes --backup-path=/home/ndbuser/backups -
恢复集群数据到数据节点,调用ndb_restore如下所示:
$> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 1 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 2 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 3 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=0 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=1 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=2 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=3 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 $> ndb_restore -b 1 -n 4 -r --num-slices=5 --slice-id=4 --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1所有刚刚在这一步中展示的命令可以并行执行,只要集群中有足够的连接槽位(参见
--backup-path选项的描述)。 -
恢复索引如常,如下所示:
$> ndb_restore -b 1 -n 1 --rebuild-indexes --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1 -
最后,使用以下命令恢复时代:
$> ndb_restore -b 1 -n 1 --restore-epoch --backup-path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
恢复集群数据时应使用切片,只需恢复集群数据,不需要在恢复元数据、索引或时代信息时使用
--num-slices或--slice-id。如果这两个选项中的任何一个或两个与控制这些内容恢复的ndb_restore选项一起使用,程序会忽略它们。使用
--parallelism选项对恢复速度的影响与使用切片或使用多个ndb_restore实例进行并行恢复(--parallelism指定单个ndb_restore线程执行的并行事务数)是独立的,但可以与其中一个或两者一起使用。您应该注意增加--parallelism会导致ndb_restore��集群施加更大的负载;如果系统可以处理这一点,恢复应该会更快完成。--num-slices的值不直接取决于与硬件相关的值,如 CPU 数量或 CPU 核心数,RAM 容量等,也不取决于 LDM 的数量。可以在同一恢复过程中在不同的数据节点上使用不同的值来使用此选项;这样做本身不会产生任何不良影响。
-
-
--parallelism=#,-p命令行格式 --parallelism=#类型 数值 默认值 128最小值 1最大值 1024ndb_restore使用单行事务并发应用多行。此参数确定ndb_restore实例尝试使用的并行事务(并发行数)的数量。默认值为 128;最小值为 1,最大值为 1024。
执行插入操作的工作在涉及的数据节点的线程之间并行化。这种机制用于从
.Data文件中恢复大量数据,即数据的模糊快照;它不用于构建或重建索引。更改日志是串行应用的;索引删除和构建是 DDL 操作,单独处理。在恢复的客户端端没有线程级并行性。 -
--preserve-trailing-spaces,-P命令行格式 --preserve-trailing-spaces当将固定宽度字符数据类型提升为其可变宽度等效类型时,即将
CHAR列值提升为VARCHAR,或将BINARY列值提升为VARBINARY时,导致尾随空格被保留。否则,当将这些列值插入新列时,任何尾随空格都将从这些列值中删除。注意
虽然你可以将
CHAR列提升为VARCHAR,将BINARY列提升为VARBINARY,但不能将VARCHAR列提升为CHAR或VARBINARY列提升为BINARY。 -
--print命令行格式 --print使ndb_restore打印所有数据、元数据和日志到
stdout。等同于同时使用--print-data、--print-meta和--print-log选项。注意
使用
--print或任何--print_*选项都是执行干预运行。包括其中一个或多个这些选项会导致任何输出重定向到stdout;在这种情况下,ndb_restore 不会尝试将数据或元数据恢复到 NDB Cluster。 -
--print-data命令行格式 --print-data使ndb_restore将其输出定向到
stdout。通常与--tab、--fields-enclosed-by、--fields-optionally-enclosed-by、--fields-terminated-by、--hex和--append中的一个或多个一起使用。TEXT和BLOB列值总是被截断。���些值在输出中被截断为前 256 个字节。目前在使用--print-data时无法覆盖此行为。 -
--print-defaults命令行格式 --print-defaults打印程序参数列表并退出。
-
--print-log命令行格式 --print-log使ndb_restore将其日志输出到
stdout。 -
--print-meta命令行格式 --print-meta将所有元数据打印到
stdout。 -
print-sql-log命令行格式 --print-sql-log将 SQL 语句记录到
stdout。使用该选项启用;通常此行为已禁用。在尝试记录之前,该选项会检查是否所有正在恢复的表都有明确定义的主键;只有具有NDB实现的��藏主键的表上的查询无法转换为有效的 SQL。此选项不适用于具有
BLOB列的表。 -
--progress-frequency=N命令行格式 --progress-frequency=#类型 数值 默认值 0最小值 0最大值 65535在备份进行中每
N秒打印一次状态报告。0(默认值)不会打印任何状态报告。最大值为 65535。 -
--promote-attributes,-A命令行格式 --promote-attributesndb_restore 支持有限的属性提升,方式与 MySQL 复制支持的方式类似;也就是说,从给定类型的列备份的数据通常可以恢复到使用“更大、类似”的类型的列。例如,从
CHAR(20)列的数据可以恢复到声明为VARCHAR(20)、VARCHAR(30)或CHAR(30)的列;从MEDIUMINT列的数据可以恢复到类型为INT或BIGINT的列。请参阅 19.5.1.9.2 节,“具有不同数据类型的列的复制”,了解目前由属性提升支持的类型转换表。从 NDB 8.0.26 开始,此选项还可以将
NOT NULL列恢复为NULL。ndb_restore 的属性提升必须显式启用,如下所示:
-
准备要恢复备份的表。ndb_restore 不能用于使用与原始表定义不同的定义重新创建表;这意味着您必须手动创建表,或在恢复表元数据后但在恢复数据之前使用
ALTER TABLE修改要提升的列。 -
在恢复表数据时,使用
--promote-attributes选项(简写为-A)调用ndb_restore。如果不使用此选项,则不会发生属性提升;相反,恢复操作将失败并显示错误。
在字符数据类型和
TEXT或BLOB之间进行转换时,只能同时执行字符类型(CHAR和VARCHAR)和二进制类型(BINARY和VARBINARY)之间的转换。例如,你不能在同一次调用ndb_restore时将一个INT列提升为BIGINT同时将一个VARCHAR列提升为TEXT。不支持在不同字符集之间转换
TEXT列,并且明确禁止。在使用ndb_restore进行字符或二进制类型到
TEXT或BLOB的转换时,你可能会注意到它创建并使用一个或多个名为*table_name*$ST*node_id*的临时表。这些表在之后不再需要,并且通常在成功恢复后由ndb_restore删除。 -
-
--rebuild-indexes命令行格式 --rebuild-indexes在恢复本地
NDB备份时启用有序索引的多线程重建。使用此选项由ndb_restore用于构建有序索引的线程数受BuildIndexThreads数据节点配置参数和 LDM 数的控制。只有在首次运行ndb_restore时才需要使用此选项;这将导致所有有序索引在恢复后续节点时重新构建,而无需再次使用
--rebuild-indexes。在向数据库插入新行之前,应使用此选项;否则,在尝试重建索引时可能会插入导致唯一约束冲突的行。默认情况下,有序索引的构建与 LDM 的数量并行进行。在节点和系统重新启动期间执行的离线索引构建可以通过
BuildIndexThreads数据节点配置参数加快速度;此参数对由ndb_restore在线执行的索引删除和重建没有影响。唯一索引的重建使用磁盘写入带宽进行重做日志记录和本地检查点。带宽不足可能导致重做缓冲区超载或日志超载错误。在这种情况下,您可以再次运行ndb_restore
--rebuild-indexes;进程将在发生错误的地方恢复。在遇到临时错误时,也可以这样做。您可以无限次重复执行ndb_restore--rebuild-indexes;通过减少--parallelism的值,您可能能够停止此类错误。如果问题是空间不足,您可以增加重做日志的大小(FragmentLogFileSize节点配置参数),或者增加执行 LCP 的速度(MaxDiskWriteSpeed和相关参数),以便更快地释放空间。 -
--remap-column=*db*.*tbl*.*col*:*fn*:*args*命令行格式 --remap-column=string引入版本 8.0.21-ndb-8.0.21 类型 字符串 默认值 [none]与
--restore-data一起使用时,此选项将对指定列的值应用函数。参数字符串中的值在此处列出:-
db: 数据库名称,在--rewrite-database执行的任何重命名之后。 -
tbl: 表名。 -
col: 要更新的列的名称。此列必须是INT或BIGINT类型。该列也可以是但不需要是UNSIGNED。 -
fn: 函数名称;目前,唯一支持的名称是offset。 -
args: 提供给函数的参数。目前,仅支持一个参数,即offset函数要添加的偏移量的大小。支持负值。参数的大小不能超过列类型的有符号变体;例如,如果*col*是一个INT列,则传递给offset函数的参数的允许范围为-2147483648到2147483647(参见第 13.1.2 节,“整数类型(精确值) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT”)。如果将偏移值应用于列会导致溢出或下溢,则恢复操作将失败。例如,如果列是
BIGINT,并且选项尝试在列值为 4294967291 的行上应用偏移值 8,则会发生这种情况,因为4294967291 + 8 = 4294967299 > 4294967295。
当您希望将存储在多个 NDB Cluster 源实例中的数据(均使用相同模式)合并到单个目标 NDB Cluster 中时,可以使用此选项,使用 NDB 本机备份(参见第 25.6.8.2 节,“使用 NDB Cluster 管理客户端创建备份”)和ndb_restore来合并数据,其中源集群之间的主键和唯一键值重叠,并且在过程中有必要将这些值重新映射到不重叠的范围。可能还需要保留表之间的其他关系。为了满足这些要求,可以在同一次调用ndb_restore中多次使用该选项来重新映射不同表的列,如下所示:
$> ndb_restore --restore-data --remap-column=hr.employee.id:offset:1000 \ --remap-column=hr.manager.id:offset:1000 --remap-column=hr.firstaiders.id:offset:1000(此处未显示其他选项也可以使用。)
--remap-column也可用于更新同一表的多个列。可以组合多个表和列。不同的偏移值也可以用于同一表的不同列,如下所示:$> ndb_restore --restore-data --remap-column=hr.employee.salary:offset:10000 \ --remap-column=hr.employee.hours:offset:-10当源备份包含不应合并的重复表时,您可以通过使用
--exclude-tables,--exclude-databases,或者通过应用程序中的其他方式来处理这个问题。可以使用
SHOW CREATE TABLE;ndb_desc工具;以及MAX(),MIN(),LAST_INSERT_ID()和其他 MySQL 函数来获取要合并的表的结构和其他特征的信息。不支持在 NDB Cluster 的不同实例之间从合并到未合并表或从未合并到合并表的更改复制。
-
-
--restore-data,-r命令行格式 --restore-data输出
NDB表数据和日志。 -
--restore-epoch,-e命令行格式 --restore-epoch向集群复制状态表添加(或恢复)时代信息。这对于在 NDB Cluster 副本上启动复制非常有用。当使用此选项时,如果
mysql.ndb_apply_status中具有id列中的0已经存在,则更新该行;如果尚不存在,则插入这样的行。(参见第 25.7.9 节,“带有 NDB Cluster 复制的 NDB Cluster 备份”。) -
--restore-meta,-m命令行格式 --restore-meta此选项导致ndb_restore打印
NDB表元数据。第一次运行ndb_restore恢复程序时,您还需要恢复元数据。换句话说,您必须重新创建数据库表 - 这可以通过使用
--restore-meta(-m)选项来完成。只需要在单个数据节点上恢复元数据;这就足以将其恢复到整个集群。在旧版本的 NDB 集群中,使用此选项恢复模式的表使用与新集群中的数据节点数量不同的情况下,仍然使用与原始集群相同数量的分区。在 NDB 8.0 中,当恢复元数据时,这不再是一个问题;ndb_restore现在使用目标集群的默认分区数,除非本地数据管理器线程的数量也与原始集群中的数据节点不同。
在 NDB 8.0 中使用此选项时,建议通过设置
ndb_metadata_check=OFF来禁用自动同步,直到ndb_restore完成恢复元数据,然后可以再次打开以同步在 NDB 字典中新创建的对象。注意
在开始恢复备份时,集群应该有一个空数据库。(换句话说,在执行恢复操作之前,应该使用
--initial启动数据节点。) -
--restore-privilege-tables命令行格式 --restore-privilege-tables已弃用 8.0.16-ndb-8.0.16 ndb_restore默认情况下不会恢复在 NDB 集群版本 8.0 之前创建的分布式 MySQL 权限表,该版本不支持 NDB 7.6 及更早版本中实现的分布式权限。此选项导致ndb_restore恢复这些表。
在 NDB 8.0 中,这些表不用于访问控制;作为 MySQL 服务器升级过程的一部分,服务器在本地创建
InnoDB表的副本。有关更多信息,请参阅 Section 25.3.7, “Upgrading and Downgrading NDB Cluster”以及 Section 8.2.3, “Grant Tables”。 -
--rewrite-database=olddb,newdb命令行格式 --rewrite-database=string类型 字符串 默认值 none此选项使得可以将数据恢复到与备份中使用的名称不同的数据库。例如,如果备份的数据库名为
products,则可以将其包含的数据恢复到名为inventory的数据库中,使用如下所示的选项(省略可能需要的其他选项):$> ndb_restore --rewrite-database=product,inventory可以在单个ndb_restore调用中多次使用该选项。因此,可以同时从名为
db1的数据库恢复到名为db2的数据库,以及从名为db3的数据库恢复到名为db4的数据库,使用--rewrite-database=db1,db2 --rewrite-database=db3,db4。在多次出现--rewrite-database之间可以使用其他ndb_restore选项。在多个
--rewrite-database选项之间发生冲突时,从左到右读取的最后一个--rewrite-database选项生效。例如,如果使用--rewrite-database=db1,db2 --rewrite-database=db1,db3,只有--rewrite-database=db1,db3会被采纳,而--rewrite-database=db1,db2会被忽略。也可以从多个数据库恢复到单个数据库,因此--rewrite-database=db1,db3 --rewrite-database=db2,db3会将数据库db1和db2的所有表和数据恢复到数据库db3中。重要
使用
--rewrite-database从多个备份数据库恢复到单个目标数据库时,不会检查表或其他对象名称之间的冲突,并且不保证恢复行的顺序。这意味着在这种情况下,可能会覆盖行并丢失更新。 -
--skip-broken-objects命令行格式 --skip-broken-objects此选项导致ndb_restore在读取本地
NDB备份时忽略损坏的表,并继续恢复任何剩余的表(未损坏的)。目前,--skip-broken-objects选项仅在缺少 blob 部分表的情况下有效。 -
--skip-table-check,-s命令行格式 --skip-table-check可以在不恢复表元数据的情况下恢复数据。默认情况下,当这样做时,ndb_restore在表数据和表模式之间发现不匹配时会失败并显示错误;此选项覆盖了该行为。
在使用ndb_restore还原数据时,对列定义不匹配的限制有所放宽;当遇到这些类型的不匹配时,ndb_restore不像以前那样停止并报错,而是接受数据并将其插入目标表中,同时向用户发出警告,说明正在执行此操作。无论是否使用选项
--skip-table-check或--promote-attributes,这种列定义的差异都是以下类型:-
不同的
COLUMN_FORMAT设置(FIXED,DYNAMIC,DEFAULT) -
不同的
STORAGE设置(MEMORY,DISK) -
不同的默认值
-
不同的分发键设置
-
-
--skip-unknown-objects命令行格式 --skip-unknown-objects此选项导致ndb_restore在读取本地
NDB备份时忽略任何它不认识的模式对象。这可用于将从运行(例如)NDB 7.6 的集群制作的备份还原到运行 NDB Cluster 7.5 的集群。 -
--slice-id=#命令行格式 --slice-id=#引入版本 8.0.20-ndb-8.0.20 类型 整数 默认值 0最小值 0最大值 1023在按片还原时,这是要还原的片的 ID。此选项始终与
--num-slices一起使用,其值必须始终小于--num-slices的值。更多信息,请参阅本节其他地方的
--num-slices的描述。 -
--tab=dir_name,-Tdir_name命令行格式 --tab=path类型 目录名称 导致
--print-data创建转储文件,每个表一个文件,每个文件名为*tbl_name*.txt。它需要作为参数的是文件应该保存的目录路径;对于当前目录使用.。 -
--timestamp-printouts命令行格式 --timestamp-printouts{=true|false}引入版本 8.0.33-ndb-8.0.33 类型 布尔值 默认值 true导致信息、错误和调试日志消息以时间戳为前缀。
在 NDB 8.0 中默认启用此选项。使用
--timestamp-printouts=false禁用它。 -
--usage命令行格式 --usage显示帮助文本并退出;与
--help相同。 -
--verbose=#命令行格式 --verbose=#类型 数值 默认值 1最小值 0最大值 255设置输出的详细程度级别。最小值为 0;最大值为 255。默认值为 1。
-
--version命令行格式 --version显示版本信息并退出。
-
--with-apply-status命令行格式 --with-apply-status引入版本 8.0.29-ndb-8.0.29 从备份的
ndb_apply_status表中恢复所有行(除了具有server_id = 0的行,该行是使用--restore-epoch生成的)。此选项要求还必须使用--restore-data。如果备份中的
ndb_apply_status表已经包含server_id = 0的行,ndb_restore--with-apply-status将其删除。因此,我们建议在使用--with-apply-status选项调用ndb_restore后使用ndb_restore--restore-epoch。您还可以在最后一次调用ndb_restore--with-apply-status用于恢复集群时同时使用--restore-epoch。有关更多信息,请参阅 ndb_apply_status Table。
此实用程序的典型选项如下所示:
ndb_restore [-c *connection_string*] -n *node_id* -b *backup_id* \
[-m] -r --backup-path=*/path/to/backup/files*
通常,在从 NDB 集群备份恢复时,ndb_restore 至少需要--nodeid(简写:-n)、--backupid(简写:-b)和--backup-path选项。
-c 选项用于指定连接字符串,告诉 ndb_restore 在哪里找到集群管理服务器(参见第 25.4.3.3 节,“NDB 集群连接字符串”)。如果不使用此选项,则ndb_restore 将尝试连接到 localhost:1186 上的管理服务器。此实用程序充当集群 API 节点,因此需要一个可用的连接“槽”来连接到集群管理服务器。这意味着在集群 config.ini 文件中必须至少有一个可供其使用的 [api] 或 [mysqld] 部分。出于这个原因,最好保留至少一个未被用于 MySQL 服务器或其他应用程序的空的 [api] 或 [mysqld] 部分(请参阅第 25.4.3.7 节,“在 NDB 集群中定义 SQL 和其他 API 节点”)。
在 NDB 8.0.22 及更高版本中,ndb_restore 可以使用 --decrypt 和 --backup-password 解密加密备份。必须同时指定这两个选项才能执行解密操作。有关创建加密备份的信息,请参阅START BACKUP管理客户端命令的文档。
您可以通过在ndb_mgm管理客户端中使用SHOW命令来验证ndb_restore是否连接到集群。您也可以从系统 shell 中执行此操作,如下所示:
$> ndb_mgm -e "SHOW"
错误报告。 ndb_restore 报告临时和永久错误。在临时错误的情况下,它可能能够从中恢复,并在这种情况下报告恢复成功,但遇到临时错误,请查看配置。
重要
使用ndb_restore来初始化用于循环复制的 NDB 集群后,作为副本的 SQL 节点上不会自动创建二进制日志,您必须手动创建。要创建二进制日志,请在运行START SLAVE之前在该 SQL 节点上发出一个SHOW TABLES语句。这是 NDB 集群中已知的问题。
译文:
dev.mysql.com/doc/refman/8.0/en/ndb-restore-to-different-version.html
25.5.23.1 将 NDB 备份还原到不同版本的 NDB 集群
以下两个部分提供了有关将本机 NDB 备份还原到与备份所在版本不同的 NDB 集群版本的信息。
此外,您应该参考第 25.3.7 节,“升级和降级 NDB 集群”,了解尝试将 NDB 备份还原到运行不同版本 NDB 软件的集群时可能遇到的其他问题。
此外,建议查看 What is New in NDB Cluster 8.0 以及第 3.5 节,“MySQL 8.0 中的更改”,了解 NDB 8.0 与 NDB 集群以前版本之间的其他变化,这些变化可能与您的特定情况相关。
25.5.23.1.1 将 NDB 备份还原到较旧版本的 NDB 集群
当尝试将从较新版本的 NDB 集群中获取的备份还原到较旧版本时,可能会遇到问题,原因是使用了在较早版本中不存在的功能。以下列出了一些问题:
-
utf8mb4_ai_ci 字符集。 NDB 8.0 中默认使用
utf8mb4_ai_ci字符集创建的表,在 NDB 7.6 及更早版本中不可用,因此无法被这些较早版本中的ndb_restore二进制文件读取。在这种情况下,必须修改任何使用utf8mb4_ai_ci的表,以便它们使用较旧版本支持的字符集进行备份前的操作。 -
表元数据格式。 由于 MySQL 服务器和 NDB 处理表元数据的方式发生了变化,使用 NDB 8.0 中包含的 MySQL 服务器二进制文件创建或更改的表无法使用ndb_restore还原到 NDB 7.6 或更早版本的 NDB 集群。这些表使用
.sdi文件,较旧版本的mysqld无法理解。一个在 NDB 8.0 中备份的表,该表在 NDB 7.6 或更早版本中创建,并且自升级到 NDB 8.0 以来未被修改,应该可以恢复到较旧版本的 NDB 集群。
由于可以分别恢复元数据和表数据,因此在这种情况下,您可以使用mysqldump制作的转储文件恢复表模式,或者手动执行必要的
CREATE TABLE语句,然后仅使用ndb_restore和--restore-data选项导入表数据。 -
多线程备份。 在 NDB 8.0 中进行的多线程备份可以通过以下两种方式之一还原到运行较早版本
NDB的集群中:-
使用 NDB 8.0 中的ndb_restore二进制文件执行并行还原。参见第 25.5.23.3.1 节,“并行还原并行备份”。
-
串行还原备份;在这种情况下,不需要较新版本的ndb_restore。请参见第 25.5.23.3.2 节,“串行还原并行备份”。
-
-
加密备份。 在 NDB 8.0.22 及更高版本中创建的加密备份无法使用 NDB 8.0.21 或更早版本的ndb_restore进行还原。
-
NDB_STORED_USER 权限。
NDB_STORED_USER权限仅在 NDB 8.0 中受支持。 -
数据节点的最大数量。 NDB Cluster 8.0 支持最多 144 个数据节点,而较早版本仅支持最多 48 个数据节点。有关此不兼容性引起问题的情况,请参见第 25.5.23.2.1 节,“还原到少于原始节点数”。
25.5.23.1.2 将 NDB 备份还原到较新版本的 NDB Cluster
一般来说,应该可以将使用 ndb_mgm 客户端的 START BACKUP 命令创建的备份从旧版本的 NDB 恢复到新版本,只要你使用新版本附带的 ndb_restore 二进制文件即可。(可能可以使用旧版本的 ndb_restore,但不建议这样做。)其他潜在问题列在这里:
-
在从备份中恢复元数据时(
--restore-meta选项),ndb_restore 通常会尝试精确复制备份时的表模式。在 NDB 8.0 之前的版本中创建的表使用
.frm文件存储它们的元数据。这些文件可以被 mysqld 在 NDB 8.0 中读取,mysqld 可以使用其中包含的信息来创建后续版本中 MySQL 数据字典使用的.sdi文件。 -
在将旧备份恢复到新版本的 NDB 时,可能无法利用新功能,如 hashmap 分区、更多的 hashmap 桶、读取备份和不同的分区布局。因此,最好使用 mysqldump 和 mysql 客户端来恢复旧模式,这样 NDB 就可以利用新的模式功能。
-
使用旧的时间类型且不支持小数秒(用于 MySQL 5.6.4 之前和 NDB 7.3.31 之前)的表无法使用 ndb_restore 恢复到 NDB 8.0。您可以使用
CHECK TABLE检查这样的表,然后在 mysql 客户端中使用REPAIR TABLE必要时将其升级到新的时间列格式;这必须在进行备份之前完成。有关更多信息,请参见 Section 3.6, “Preparing Your Installation for Upgrade”。您还可以使用使用 mysqldump 创建的转储来恢复这样的表。
-
在 NDB 7.6 及更早版本中创建的分布式授权表在 NDB 8.0 中不受支持。这些表可以恢复到 NDB 8.0 集群,但对访问控制没有影响。
译文:
dev.mysql.com/doc/refman/8.0/en/ndb-restore-different-number-nodes.html
25.5.23.2 还原到不同数量的数据节点
可以将从 NDB 备份还原到具有不同数量数据节点的集群,与备份来源的原始集群数量不同。以下两个部分分别讨论了目标集群比备份源具有更少或更多数据节点的情况。
25.5.23.2.1 还原到比原始节点少的节点
您可以将备份还原到比原始数据节点少的集群,只要较大数量的节点是较小数量的节点的偶数倍。在以下示例中,我们使用在具有四个数据节点的集群上进行的备份还原到具有两个数据节点的集群。
-
原始集群的管理服务器位于主机
host10上。原始集群有四个数据节点,节点 ID 和主机名如下所示,来自管理服务器的config.ini文件的摘录:[ndbd] NodeId=2 HostName=host2 [ndbd] NodeId=4 HostName=host4 [ndbd] NodeId=6 HostName=host6 [ndbd] NodeId=8 HostName=host8我们假设每个数据节点最初都是使用ndbmtd")
--ndb-connectstring=host10或等效方式启动的。 -
以正常方式执行备份。有关如何执行此操作的信息,请参见 Section 25.6.8.2, “Using The NDB Cluster Management Client to Create a Backup”。
-
每个数据节点备份创建的文件在这里列出,其中*
N是节点 ID,B*是备份 ID。-
BACKUP-*B*-0.*N*.Data -
BACKUP-*B*.*N*.ctl -
BACKUP-*B*.*N*.log
这些文件位于每个数据节点的
BackupDataDir``/BACKUP/BACKUP-*B*下,在本示例的其余部分中,我们假设备份 ID 为 1。将所有这些文件保存以备将来复制到新数据节点(可以通过ndb_restore在数据节点的本地文件系统上访问)。将它们全部复制到一个位置最简单;我们假设您已经这样做了。
-
-
目标集群的管理服务器位于主机
host20上,目标集群有两个数据节点,节点 ID 和主机名如下所示,来自主机host20上的管理服务器config.ini文件:[ndbd] NodeId=3 hostname=host3 [ndbd] NodeId=5 hostname=host5host3和host5上的每个数据节点进程应该使用ndbmtd")-c host20--initial或等效方式启动,以便新(目标)集群以干净的数据节点文件系统启动。 -
将两组不同的两个备份文件复制到目标数据节点中的每一个。例如,将原始集群中节点 2 和 4 的备份文件复制到目标集群中的节点 3。这些文件如下所示:
-
BACKUP-1-0.2.Data -
BACKUP-1.2.ctl -
BACKUP-1.2.log -
BACKUP-1-0.4.Data -
BACKUP-1.4.ctl -
BACKUP-1.4.log
然后将节点 6 和 8 的备份文件复制到节点 5;这些文件如下列表所示:
-
BACKUP-1-0.6.Data -
BACKUP-1.6.ctl -
BACKUP-1.6.log -
BACKUP-1-0.8.Data -
BACKUP-1.8.ctl -
BACKUP-1.8.log
在本示例的其余部分中,我们假设相应的备份文件已保存在节点 3 和 5 上的目录
/BACKUP-1中。 -
-
在两个目标数据节点上,您必须从两组备份中恢复。首先,通过在
host3上调用ndb_restore将节点 2 和 4 的备份还原到节点 3,如下所示:$> ndb_restore -c host20 --nodeid=2 --backupid=1 --restore-data --backup-path=/BACKUP-1 $> ndb_restore -c host20 --nodeid=4 --backupid=1 --restore-data --backup-path=/BACKUP-1然后通过在
host5上调用ndb_restore将节点 6 和 8 的备份还原到节点 5,如下所示:$> ndb_restore -c host20 --nodeid=6 --backupid=1 --restore-data --backup-path=/BACKUP-1 $> ndb_restore -c host20 --nodeid=8 --backupid=1 --restore-data --backup-path=/BACKUP-1
25.5.23.2.2 恢复到比原始节点更多的节点
给定ndb_restore命令指定的节点 ID 是原始备份中的节点 ID,而不是要将其恢复到的数据节点的节点 ID。当使用本节描述的方法执行备份时,ndb_restore连接到管理服务器并获取正在将备份恢复到的集群中的数据节点列表。恢复的数据相应地分布,因此在执行备份时不需要知道或计算目标集群中的节点数。
注意
当更改每个节点组的 LCP 线程或 LQH 线程的总数时,应重新创建使用mysqldump创建的备份的模式。
-
创建数据备份。您可以通过从系统 shell 调用ndb_mgm客户端的
START BACKUP命令来执行此操作,如下所示:$> ndb_mgm -e "START BACKUP 1"这假定所需的备份 ID 为 1。
-
创建模式备份。只有在更改每个节点组的 LCP 线程或 LQH 线程的总数时才需要执行此步骤。
$> mysqldump --no-data --routines --events --triggers --databases > myschema.sql重要
一旦使用ndb_mgm创建了
NDB本地备份,您在创建模式备份之前不得进行任何模式更改,如果这样做。 -
将备份目录复制到新集群。例如,如果要恢复的备份具有 ID 1 和
BackupDataDir=/backups/node_*nodeid*,则此节点上备份的路径为/backups/node_1/BACKUP/BACKUP-1。在此目录中有三个文件,列在此处:-
BACKUP-1-0.1.Data -
BACKUP-1.1.ctl -
BACKUP-1.1.log
您应该将整个目录复制到新节点。
如果您需要创建模式文件,请将其复制到 SQL 节点上的位置,以便mysqld可以读取。
-
没有要求必须从特定节点或节点恢复备份。
要从刚刚创建的备份中恢复,请执行以下步骤:
-
恢复模式。
-
如果您使用mysqldump创建了单独的模式备份文件,请使用mysql客户端导入此文件,类似于以下内容:
$> mysql < myschema.sql在导入模式文件时,您可能需要指定
--user和--password选项(可能还有其他选项),以便mysql客户端能够连接到 MySQL 服务器。 -
如果您不需要创建模式文件,可以使用ndb_restore
--restore-meta(简写为-m)重新创建模式,类似于以下内容:$> ndb_restore --nodeid=1 --backupid=1 --restore-meta --backup-path=/backups/node_1/BACKUP/BACKUP-1ndb_restore 必须能够联系管理服务器;根据需要添加
--ndb-connectstring选项以实现这一点。
-
-
恢复数据。这需要针对原始集群中的每个数据节点执行一次,每次使用该数据节点的节点 ID。假设原始有 4 个数据节点,则所需的命令集将类似于以下内容:
ndb_restore --nodeid=1 --backupid=1 --restore-data --backup-path=/backups/node_1/BACKUP/BACKUP-1 --disable-indexes ndb_restore --nodeid=2 --backupid=1 --restore-data --backup-path=/backups/node_2/BACKUP/BACKUP-1 --disable-indexes ndb_restore --nodeid=3 --backupid=1 --restore-data --backup-path=/backups/node_3/BACKUP/BACKUP-1 --disable-indexes ndb_restore --nodeid=4 --backupid=1 --restore-data --backup-path=/backups/node_4/BACKUP/BACKUP-1 --disable-indexes这些可以并行运行。
请务必根据需要添加
--ndb-connectstring选项。 -
重建索引。这些索引已被禁用,因为在刚刚显示的命令中使用了
--disable-indexes选项。重新创建索引可以避免由于恢复在所有点上不一致而导致的错误。重建索引在某些情况下还可以提高性能。要重建索引,请在单个节点上执行以下命令一次:$> ndb_restore --nodeid=1 --backupid=1 --backup-path=/backups/node_1/BACKUP/BACKUP-1 --rebuild-indexes正如之前提到的,您可能需要添加
--ndb-connectstring选项,以便ndb_restore可以联系管理服务器。
原文:
dev.mysql.com/doc/refman/8.0/en/ndb-restore-parallel-data-node-backup.html
25.5.23.3 从并行进行的备份中恢复
NDB Cluster 8.0 支持在每个数据节点上使用ndbmtd进行并行备份,具有多个 LDMs(参见第 25.6.8.5 节,“使用并行数据节点进行 NDB 备份”)。接下来的两节描述了如何恢复以这种方式进行的备份。
25.5.23.3.1 并行恢复并行备份
并行恢复并行备份需要来自 NDB 8.0 发行版的ndb_restore二进制文件。该过程与在ndb_restore程序描述下的一般用法部分中概述的过程没有实质性区别,并且包括执行两次ndb_restore,类似于以下所示:
$> ndb_restore -n 1 -b 1 -m --backup-path=*path/to/backup_dir*/BACKUP/BACKUP-*backup_id*
$> ndb_restore -n 1 -b 1 -r --backup-path=*path/to/backup_dir*/BACKUP/BACKUP-*backup_id*
*backup_id*是要恢复的备份的 ID。在一般情况下,不需要额外的特殊参数;ndb_restore始终检查由--backup-path选项指示的目录下是否存在并行子目录,并恢复元数据(串行)然后表数据(并行)。
25.5.23.3.2 串行恢复并行备份
可以以串行方式恢复在数据节点上使用并行方式创建的备份。为此,请调用ndb_restore,并使用--backup-path指向每个 LDM 在主备份目录下创建的子目录,首先恢复任何一个子目录以恢复元数据(由于每个子目录包含元数据的完整副本,因此无论选择哪一个都可以),然后依次恢复每个子目录中的数据。假设我们想要恢复备份 ID 为 100 的备份,该备份使用四个 LDMs,并且BackupDataDir为/opt。在这种情况下,我们可以像这样调用ndb_restore来恢复元数据:
$> ndb_restore -n 1 -b 1 -m --backup-path=opt/BACKUP/BACKUP-100/BACKUP-100-PART-1-OF-4
要恢复表数据,请依次执行ndb_restore 四次,每次使用一个子目录,如下所示:
$> ndb_restore -n 1 -b 1 -r --backup-path=opt/BACKUP/BACKUP-100/BACKUP-100-PART-1-OF-4
$> ndb_restore -n 1 -b 1 -r --backup-path=opt/BACKUP/BACKUP-100/BACKUP-100-PART-2-OF-4
$> ndb_restore -n 1 -b 1 -r --backup-path=opt/BACKUP/BACKUP-100/BACKUP-100-PART-3-OF-4
$> ndb_restore -n 1 -b 1 -r --backup-path=opt/BACKUP/BACKUP-100/BACKUP-100-PART-4-OF-4
您可以使用相同的技术将并行备份恢复到不支持并行备份的较旧版本的 NDB 集群(7.6 或更早版本),使用较旧版本 NDB 集群软件提供的ndb_restore二进制文件。
25.5.24 ndb_secretsfile_reader — 从加密的 NDB 数据文件中获取密钥信息
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-secretsfile-reader.html
ndb_secretsfile_reader 从 NDB 加密秘密文件中获取加密密钥,给定密码。
用法
ndb_secretsfile_reader *options* *file*
选项 必须包括 --filesystem-password 或 --filesystem-password-from-stdin 之一,并且必须提供加密密码,如下所示:
> ndb_secretsfile_reader --filesystem-password=54kl14 ndb_5_fs/D1/NDBCNTR/S0.sysfile
ndb_secretsfile_reader: [Warning] Using a password on the command line interface can be insecure.
cac256e18b2ddf6b5ef82d99a72f18e864b78453cc7fa40bfaf0c40b91122d18
可与 ndb_secretsfile_reader 一起使用的其他选项显示在下表中。表后面有附加描述。
表 25.45 与程序 ndb_secretsfile_reader 一起使用的命令行选项
| 格式 | 描述 | 添加、弃用或移除 |
|---|---|---|
--defaults-extra-file=path | 在读取全局文件后读取给定文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-file=path | 仅从给定文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-group-suffix=string | 还读取具有 concat(group, suffix) 的组 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--filesystem-password=password | 节点文件系统加密的密码;可以从 stdin、tty 或 my.cnf 文件传递 | 添加: 8.0.31 |
--filesystem-password-from-stdin={TRUE|FALSE} | 从 stdin 获取加密密码 | 添加: 8.0.31 |
--help,-? | 显示帮助文本并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--login-path=path | 从登录文件中读取���定路径 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--no-defaults | 不从登录文件以外的任何选项文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--print-defaults | 打印程序参数列表并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--usage,-? | 显示帮助文本并退出;与 --help 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--version,-V | 显示版本信息并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
| 格式 | 描述 | 添加、弃用或移除 |
-
--defaults-extra-file命令行格式 --defaults-extra-file=path类型 字符串 默认值 [none]在读取全局文件后读取给定文件。
-
--defaults-file命令行格式 --defaults-file=path类型 字符串 默认值 [none]仅从给定文件中读取默认选项。
-
--defaults-group-suffix命令行格式 --defaults-group-suffix=string类型 字符串 默认值 [none]还读取带有 concat(group, suffix) 的组。
-
--filesystem-password命令行格式 --filesystem-password=password引入版本 8.0.31 通过
stdin、tty或my.cnf文件将文件系统加密和解密密码传递给ndb_secretsfile_reader。 -
--filesystem-password-from-stdin命令行格式 --filesystem-password-from-stdin={TRUE|FALSE}引入版本 8.0.31 从
stdin(仅限)向 ndb_secretsfile_reader 传递文件系统加密和解密密码。 -
--help命令行格式 --help显示帮助文本并退出。
-
--login-path命令行格式 --login-path=path类型 字符串 默认值 [none]从登录文件中读取给定路径。
-
--no-defaults命令行格式 --no-defaults不要从除登录文件之外的任何选项文件中读取默认选项。
-
--print-defaults命令行格式 --print-defaults打印程序参数列表并退出。
-
--usage命令行格式 --usage显示帮助文本并退出;与 --help 相同。
-
--version命令行格式 --version显示版本信息并退出。
ndb_secretsfile_reader是在 NDB 8.0.31 中添加的。
25.5.25 ndb_select_all — 从 NDB 表中打印行
原文:
dev.mysql.com/doc/refman/8.0/en/mysql-cluster-programs-ndb-select-all.html
ndb_select_all 将所有行从 NDB 表打印到 stdout。
用法
ndb_select_all -c *connection_string* *tbl_name* -d *db_name* [> *file_name*]
可与 ndb_select_all 一起使用的选项显示��下表中。表后面还有附加描述。
表 25.46 与程序 ndb_select_all 一起使用的命令行选项
| 格式 | 描述 | 添加、弃用或移除 |
|---|---|---|
--character-sets-dir=path | 包含字符集的目录 | 移除:8.0.31 |
--connect-retries=# | 放弃之前重试连接的次数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-retry-delay=# | 重试联系管理服务器之间等待的秒数 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--connect-string=connection_string,-c connection_string | 与 --ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--core-file | 在错误时写入核心文件;用于调试 | 移除:8.0.31 |
--database=name,-d name | 表所在数据库的名称 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-extra-file=path | 读取全局文件后读取给定文件 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-file=path | 仅从给定文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--defaults-group-suffix=string | 也读取 concat(group, suffix) 组 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--delimiter=char,-D char | 设置列分隔符 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--descending,-z | 按降序对结果集进行排序(需要--order) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--disk | 打印磁盘引用(仅对具有未索引列的磁盘数据表有用) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--gci | 在输出中包含 GCI | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--gci64 | 在输出中包含 GCI 和行时代 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
[--header[=value]](mysql-cluster-programs-ndb-select-all.html#option_ndb_select_all_header),-h | 打印标题(设置为 0 或 FALSE 以禁用输出中的标题) | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--lock=#,-l # | 锁类型 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--login-path=path | 从登录文件中读取给定路径 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--help,-? | 显示帮助文本并退出 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-connectstring=connection_string,-c connection_string | 设置连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-mgmd-host=connection_string,-c connection_string | 与--ndb-connectstring 相同 | (在基于 MySQL 8.0 的所有 NDB 版本中支持) |
--ndb-nodeid=# | 为此节点设置节点 ID,覆盖任何由 --ndb-connectstring 设置的 ID | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--ndb-optimized-node-selection | 启用用于事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 禁用 | 移除: 8.0.31 |
--no-defaults | 不从除登录文件之外的任何选项文件中读取默认选项 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--nodata | 不打印表列数据 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--order=index,-o index | 根据具有此名称的索引对结果集进行排序 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--parallelism=#,-p # | 并行度 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--print-defaults | 打印程序参数列表并退出 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--rowid | 打印行 ID | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--tupscan,-t | 按照 tup 顺序扫描 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--usage,-? | 显示帮助文本并退出;与 --help 相同 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--useHexFormat,-x | 以十六进制格式输出数字 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
--version,-V | 显示版本信息并退出 | (在基于 MySQL 8.0 的所有 NDB 发行版中支持) |
| 格式 | 描述 | 添加、弃用或移除 |
-
--character-sets-dir命令行格式 --character-sets-dir=path移除 8.0.31 包含字符集的目录。
-
--connect-retries命令行格式 --connect-retries=#类型 整数 默认值 12最小值 0最大值 12放弃之前重试连接的次数。
-
--connect-retry-delay命令行格式 --connect-retry-delay=#类型 整数 默认值 5最小值 0最大值 5尝试联系管理服务器之间等待的秒数。
-
--connect-string命令行格式 --connect-string=connection_string类型 字符串 默认值 [none]与
--ndb-connectstring相同。 -
--core-file命令行格式 --core-file移除 8.0.31 在错误时写入核心文件;用于调试。
-
--database=*dbname*,-ddbname表所在的数据库名称。默认值为
TEST_DB。 -
--descending,-z将输出按降序排序。此选项只能与
-o(--order) 选项一起使用。 -
--defaults-extra-file命令行格式 --defaults-extra-file=path类型 字符串 默认值 [none]在读取全局文件后读取给定文件。
-
--defaults-file命令行格式 --defaults-file=path类型 字符串 默认值 [none]仅从给定文件中读取默认选项。
-
--defaults-group-suffix命令行格式 --defaults-group-suffix=string类型 字符串 默认值 [none]还可以读取使用 concat(group, suffix)的组。
-
--delimiter=*character*,-D *character*导致*
character*被用作列分隔符。只有表数据列才会被此分隔符分隔。默认分隔符是制表符。
-
--disk向输出中添加一个磁盘引用列。该列仅对具有非索引列的磁盘数据表非空。
-
--gci向输出中添加一个
GCI列,显示每行最后更新时的全局检查点。有关检查点的更多信息,请参见第 25.2 节,“NDB 集群概述”和第 25.6.3.2 节,“NDB 集群日志事件”。 -
--gci64向输出中添加一个
ROW$GCI64列,显示每行最后更新时的全局检查点,以及此更新发生的时代编号。 -
--help命令行格式 --help显示帮助文本并退出。
-
--lock=*lock_type*,-l *lock_type*在读取表时使用锁定。
lock_type的可能值为:-
0: 读取锁定 -
1: 读取锁定并保持 -
2: 独占读取锁定
此选项没有默认值。
-
-
--login-path命令行格式 --login-path=path类型 字符串 默认值 [none]从登录文件中读取给定路径。
-
--header=FALSE从输出中排除列标题。
-
--nodata导致任何表数据被省略。
-
--ndb-connectstring命令行格式 --ndb-connectstring=connection_string类型 字符串 默认值 [none]设置用于连接到 ndb_mgmd 的连接字符串。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目。
-
--ndb-mgmd-host命令行格式 --ndb-mgmd-host=connection_string类型 字符串 默认值 [none]与
--ndb-connectstring相同。 -
--ndb-nodeid命令行格式 --ndb-nodeid=#类型 整数 默认值 [none]设置此节点的节点 ID,覆盖由
--ndb-connectstring设置的任何 ID。 -
--ndb-optimized-node-selection命令行格式 --ndb-optimized-node-selection已移除 8.0.31 启用用于事务节点选择的优化。默认启用;使用
--skip-ndb-optimized-node-selection来禁用。 -
--no-defaults命令行格式 --no-defaults不要从登录文件以外的任何选项文件中读取默认选项。
-
--order=*index_name*,-o *index_name*根据名为*
index_name*的索引对输出进行排序。注意
这是一个索引的名称,而不是列的名称;在创建时必须显式命名索引。
-
parallelism=*#*,-p#指定并行度。
-
--print-defaults命令行格式 --print-defaults打印程序参数列表并退出。
-
--rowid添加一个
ROWID列,提供有关存储行的片段的信息。 -
--tupscan,-t按元组的顺序扫描表。
-
--usage命令行格式 --usage显示帮助文本并退出;与
--help相同。 -
--useHexFormat-x导致所有数字值以十六进制格式显示。这不会影响包含在字符串或日期时间值中的数字的输出。
-
--version命令行格式 --version显示版本信息并退出。
示例输出
来自 MySQL SELECT 语句的输出:
mysql> SELECT * FROM ctest1.fish;
+----+-----------+
| id | name |
+----+-----------+
| 3 | shark |
| 6 | puffer |
| 2 | tuna |
| 4 | manta ray |
| 5 | grouper |
| 1 | guppy |
+----+-----------+
6 rows in set (0.04 sec)
与等效调用ndb_select_all的输出:
$> ./ndb_select_all -c localhost fish -d ctest1
id name
3 [shark]
6 [puffer]
2 [tuna]
4 [manta ray]
5 [grouper]
1 [guppy]
6 rows returned
所有字符串值在ndb_select_all的输出中都用方括号([...])括起来。另一个示例,请考虑在此处创建和填充的表:
CREATE TABLE dogs (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
breed VARCHAR(50) NOT NULL,
PRIMARY KEY pk (id),
KEY ix (name)
)
TABLESPACE ts STORAGE DISK
ENGINE=NDBCLUSTER;
INSERT INTO dogs VALUES
('', 'Lassie', 'collie'),
('', 'Scooby-Doo', 'Great Dane'),
('', 'Rin-Tin-Tin', 'Alsatian'),
('', 'Rosscoe', 'Mutt');
这演示了几个额外的ndb_select_all选项的使用:
$> ./ndb_select_all -d ctest1 dogs -o ix -z --gci --disk
GCI id name breed DISK_REF
834461 2 [Scooby-Doo] [Great Dane] [ m_file_no: 0 m_page: 98 m_page_idx: 0 ]
834878 4 [Rosscoe] [Mutt] [ m_file_no: 0 m_page: 98 m_page_idx: 16 ]
834463 3 [Rin-Tin-Tin] [Alsatian] [ m_file_no: 0 m_page: 34 m_page_idx: 0 ]
835657 1 [Lassie] [Collie] [ m_file_no: 0 m_page: 66 m_page_idx: 0 ]
4 rows returned