NDB集群恢复程序是作为一个单独的命令行实用程序实现的ndb_restore,通常可以在MySQL . exe中找到箱子
目录中。该程序读取作为备份结果创建的文件,并将存储的信息插入到数据库中。
从NDB 7.3.25和7.4.24开始,该程序不再打印NDBT_ProgramExit:…
当它运行结束时。从早期版本升级时,依赖于此行为的应用程序应相应修改。
ndb_restore方法创建的每个备份文件必须执行一次开始备份
命令用于创建备份(请参见18.6.8.2节“使用NDB集群管理客户端创建备份”).这等于创建备份时集群中的数据节点数量。
使用前ndb_restore,建议集群运行在单用户模式下,除非您正在并行恢复多个数据节点。看到章节18.6.6,“NDB集群单用户模式”,以获取更多资料。
可用于的选项ndb_restore如下表所示。其他描述见下表。
表18.31 ndb_restore程序使用的命令行选项
格式 | 描述 | 添加、弃用或删除 |
---|---|---|
将数据追加到以制表符分隔的文件 | (所有基于MySQL 5.6的NDB版本都支持) |
|
备份文件路径 | (所有基于MySQL 5.6的NDB版本都支持) |
|
使用此ID从备份中恢复 | (所有基于MySQL 5.6的NDB版本都支持) |
|
包含字符集的目录 | (所有基于MySQL 5.6的NDB版本都支持) |
|
——connectstring的别名 | (所有基于MySQL 5.6的NDB版本都支持) |
|
在放弃连接之前重试连接的次数 | 新增:NDB 7.4.9 |
|
尝试联系管理服务器之间等待的秒数 | 新增:NDB 7.4.9 |
|
与——ndb-connectstring相同 | (所有基于MySQL 5.6的NDB版本都支持) |
|
写入内核文件错误;用于调试 | (所有基于MySQL 5.6的NDB版本都支持) |
|
读取全局文件后读取给定文件 | (所有基于MySQL 5.6的NDB版本都支持) |
|
仅从给定文件读取默认选项 | (所有基于MySQL 5.6的NDB版本都支持) |
|
也可以用concat读取组(group,后缀) | (所有基于MySQL 5.6的NDB版本都支持) |
|
导致忽略备份中的索引;可能会减少恢复数据所需的时间 | (所有基于MySQL 5.6的NDB版本都支持) |
|
在恢复期间不要忽略系统表;实验;不用于生产 | (所有基于MySQL 5.6的NDB版本都支持) |
|
要排除的一个或多个数据库的列表(包括未命名的数据库) | (所有基于MySQL 5.6的NDB版本都支持) |
|
不要恢复复制ALTER TABLE操作后留下的任何中间表(名称前缀为'#sql-');指定FALSE来恢复这样的表 | 新增:NDB 7.3.6 |
|
导致数据库中表的版本中缺少的表的备份版本中的列被忽略 | (所有基于MySQL 5.6的NDB版本都支持) |
|
导致数据库中缺失的备份表被忽略 | 新增:NDB 7.3.7 |
|
要排除的一个或多个表的列表(包括同一数据库中未命名的表);每个表引用必须包含数据库名称 | (所有基于MySQL 5.6的NDB版本都支持) |
|
字段由这个字符括起来 | (所有基于MySQL 5.6的NDB版本都支持) |
|
字段可选择由此字符括起来 | (所有基于MySQL 5.6的NDB版本都支持) |
|
字段以此字符结束 | (所有基于MySQL 5.6的NDB版本都支持) |
|
|
显示帮助文本并退出 | (所有基于MySQL 5.6的NDB版本都支持) |
以十六进制格式打印二进制类型 | (所有基于MySQL 5.6的NDB版本都支持) |
|
要恢复的一个或多个数据库的列表(不包括未命名的数据库) | (所有基于MySQL 5.6的NDB版本都支持) |
|
要恢复的一个或多个表的列表(不包括同一数据库中未命名的表);每个表引用必须包含数据库名称 | (所有基于MySQL 5.6的NDB版本都支持) |
|
行以此字符结束 | (所有基于MySQL 5.6的NDB版本都支持) |
|
从登录文件读取给定路径 | (所有基于MySQL 5.6的NDB版本都支持) |
|
当从备份中恢复数据时,允许对列值进行有损转换(类型降级或符号更改) | (所有基于MySQL 5.6的NDB版本都支持) |
|
如果mysqld已连接并使用二进制日志记录,则不要记录恢复的数据 | (所有基于MySQL 5.6的NDB版本都支持) |
|
不读取默认选项从任何选项文件除了登录文件 | (所有基于MySQL 5.6的NDB版本都支持) |
|
不恢复与“磁盘数据”相关的对象 | (所有基于MySQL 5.6的NDB版本都支持) |
|
|
不升级数组类型的变量大小属性还没有调整VAR数据,不改变列属性 | (所有基于MySQL 5.6的NDB版本都支持) |
设置连接ndb_mgmd的连接字符串。语法:“[nodeid = id;][主机=]主机名(港口):”。覆盖NDB_CONNECTSTRING和my.cnf中的条目 | (所有基于MySQL 5.6的NDB版本都支持) |
|
与——ndb-connectstring相同 | (所有基于MySQL 5.6的NDB版本都支持) |
|
指定节点组映射;未使用的,不支持的 | (所有基于MySQL 5.6的NDB版本都支持) |
|
为该节点设置节点ID,覆盖由——ndb-connectstring设置的任何ID | (所有基于MySQL 5.6的NDB版本都支持) |
|
为事务的节点选择启用优化。默认启用;使用——skip-ndb-optimized-node-selection禁用 | (所有基于MySQL 5.6的NDB版本都支持) |
|
执行备份的节点ID | (所有基于MySQL 5.6的NDB版本都支持) |
|
恢复数据时使用的并行事务数 | (所有基于MySQL 5.6的NDB版本都支持) |
|
当将定宽字符串类型提升为变宽类型时,允许保留尾随空格(包括填充) | (所有基于MySQL 5.6的NDB版本都支持) |
|
将元数据、数据和日志打印到标准输出(相当于——Print -meta——Print -data——Print -log) | (所有基于MySQL 5.6的NDB版本都支持) |
|
打印数据到标准输出 | (所有基于MySQL 5.6的NDB版本都支持) |
|
打印程序参数列表并退出 | (所有基于MySQL 5.6的NDB版本都支持) |
|
打印日志到标准输出 | (所有基于MySQL 5.6的NDB版本都支持) |
|
将元数据打印到标准输出 | (所有基于MySQL 5.6的NDB版本都支持) |
|
打印每个给定秒数的恢复状态 | (所有基于MySQL 5.6的NDB版本都支持) |
|
允许从备份中恢复数据时提升属性 | (所有基于MySQL 5.6的NDB版本都支持) |
|
导致在备份中发现的有序索引的多线程重建;使用的线程数通过设置BuildIndexThreads来确定 | (所有基于MySQL 5.6的NDB版本都支持) |
|
使用NDB API将表数据和日志恢复到NDB集群 | (所有基于MySQL 5.6的NDB版本都支持) |
|
恢复纪元信息到状态表;在复制集群上用于启动复制;更新或插入mysql中的行。ID为0的ndb_apply_status | (所有基于MySQL 5.6的NDB版本都支持) |
|
使用NDB API将元数据恢复到NDB集群 | (所有基于MySQL 5.6的NDB版本都支持) |
|
恢复以前移动到NDB的MySQL特权表 | (所有基于MySQL 5.6的NDB版本都支持) |
|
恢复到不同名称的数据库;格式为olddb,newdb | (所有基于MySQL 5.6的NDB版本都支持) |
|
忽略备份文件中缺失的blob表 | (所有基于MySQL 5.6的NDB版本都支持) |
|
在恢复期间跳过表结构检查 | (所有基于MySQL 5.6的NDB版本都支持) |
|
导致在将新版本的NDB备份恢复到旧版本时忽略ndb_restore无法识别的模式对象 | (所有基于MySQL 5.6的NDB版本都支持) |
|
在提供的路径中为每个表创建一个以制表符分隔的.txt文件 | (所有基于MySQL 5.6的NDB版本都支持) |
|
|
显示帮助文本并退出;和——help一样 | (所有基于MySQL 5.6的NDB版本都支持) |
输出的详细程度 | (所有基于MySQL 5.6的NDB版本都支持) |
|
|
显示版本信息并退出 | (所有基于MySQL 5.6的NDB版本都支持) |
-
命令行格式 ——附加
-
命令行格式 ——backup-path =路径
类型 目录名称 默认值 ./
备份目录的路径是必需的;这是提供给ndb_restore使用
——backup-path
选项,且必须包含待恢复备份的ID backup对应的子目录。例如,如果数据节点为DataDir
是/var/lib/mysql-cluster
,则备份目录为/var/lib/mysql-cluster /备份
, ID为3的备份文件在/var/lib/mysql-cluster /备份/ BACKUP-3
.对象所在目录的绝对路径或相对路径ndb_restore可执行文件的位置,并可选地加上前缀backup-path =
.可以将备份恢复到与创建备份时配置不同的数据库。例如,假设备份具有备份ID
12
,在两个存储节点的集群中创建2
而且3.
,将恢复为四节点集群。然后ndb_restore必须运行两次—在进行备份的集群中的每个存储节点上运行一次。然而,ndb_restore不能总是将运行一个MySQL版本的集群中的备份恢复到运行不同MySQL版本的集群中。看到18.3.7节“NDB集群升级降级”,以获取更多资料。重要的的旧版本,无法恢复从较新版本的NDB集群生成的备份ndb_restore.您可以将新版本的MySQL备份恢复到旧集群,但必须使用的副本ndb_restore从更新的NDB集群版本执行此操作。
例如,要将运行NDB集群7.4.35的集群备份恢复到运行NDB集群7.3.34的集群,必须使用ndb_restore这是NDB集群7.4.35发行版附带的。
为了更快速的恢复,可以并行地恢复数据,前提是有足够数量的可用集群连接。也就是说,当并行地恢复到多个节点时,必须使用
(api)
或(mysqld)
集群中的部分。config.ini
文件可用于每个并发ndb_restore的过程。但是,必须始终在日志之前应用数据文件。 -
命令行格式 ——backupid = #
类型 数字 默认值 没有一个
该选项用于指定备份的ID或序列号,与管理客户端中显示的数字相同
备份
备份完成时显示的信息。(见18.6.8.2节“使用NDB集群管理客户端创建备份”.)backup_id
完成重要的恢复集群备份时,必须确保从具有相同备份ID的备份中恢复所有数据节点。使用来自不同备份的文件最多只能将集群恢复到不一致的状态,并且可能会完全失败。
-
命令行格式 ——character-sets-dir =路径
包含字符集的目录。
-
命令行格式 ——连接= connection_string
类型 字符串 默认值 localhost: 1186
-
命令行格式 ——connect-retries = #
介绍了 5.6.28-ndb-7.4.9 类型 整数 默认值 12
最小值 0
最大值 12
在放弃连接之前重试连接的次数。
-
命令行格式 ——connect-retry-delay = #
介绍了 5.6.28-ndb-7.4.9 类型 整数 默认值 5
最小值 0
最大值 5
尝试联系管理服务器之间等待的秒数。
-
命令行格式 ——连接字符串= connection_string
类型 字符串 默认值 (没有)
-
命令行格式 ——核心文件
写入内核文件错误;用于调试。
-
命令行格式 ——defaults-extra-file =路径
类型 字符串 默认值 (没有)
读取全局文件后读取给定文件。
-
命令行格式 ——defaults-file =路径
类型 字符串 默认值 (没有)
仅从给定文件读取默认选项。
-
命令行格式 ——defaults-group-suffix =字符串
类型 字符串 默认值 (没有)
也可以用concat(group,后缀)读取组。
-
命令行格式 ——disable-indexes
在从本机恢复数据时禁用索引恢复
NDB
备份。然后,您可以通过使用多线程构建索引,一次性恢复所有表的索引——rebuild-indexes
,这应该比为非常大的表并发地重建索引要快。在NDB 7.4.34及以后版本中,这个选项也会删除备份中指定的任何外键。
-
命令行格式 ——dont-ignore-systab-0
通常,在恢复表数据和元数据时,ndb_restore的副本
NDB
备份中存在的系统表。——dont-ignore-systab-0
恢复系统表。此选项仅供实验和开发使用,不建议在生产环境中使用. -
命令行格式 ——exclude-databases =列表
类型 字符串 默认值 一个或多个不应恢复的数据库的逗号分隔列表。
此选项通常与
——排除表
;有关更多信息和示例,请参阅该选项的描述。 ——exclude-intermediate-sql-tables [
=真|假)
命令行格式 ——exclude-intermediate-sql-tables(=真|假)
介绍了 5.6.17-ndb-7.3.6 类型 布尔 默认值 真正的
执行复制时
ALTER TABLE
操作,mysqld创建中间表(其名称前缀为# sql -
).当真正的
,——exclude-intermediate-sql-tables
选择使ndb_restore从恢复这些操作遗留下来的这些表。这个选项是真正的
默认情况下。此选项在NDB 7.3.6中引入。(错误# 17882305)
-
命令行格式 ——exclude-missing-columns
可以使用此选项仅恢复选定的表列,这将导致ndb_restore与备份中找到的表的版本相比,忽略正在恢复的表中缺少的任何列。此选项适用于正在恢复的所有表。如果希望仅将此选项应用于选定的表或数据库,则可以将其与一个或多个属性组合使用
——包括:- *
或——排除- *
本节其他地方描述的选项,然后使用这些选项的补充集将数据恢复到其余表。 -
命令行格式 ——exclude-missing-tables
介绍了 5.6.21-ndb-7.3.7 可以使用此选项仅恢复选定的表,这将导致ndb_restore忽略备份中没有在目标数据库中找到的任何表。
该选项在NDB 7.3.7中引入。
-
命令行格式 ——排除表=列表
类型 字符串 默认值 要排除的一个或多个表的列表;每个表引用必须包含数据库名称。常与
——exclude-databases
.当
——exclude-databases
或——排除表
时,仅排除由该选项命名的数据库或表;恢复所有其他数据库和表ndb_restore.的几个调用ndb_restoreusng
——排除- *
选项(为了清晰起见,省略了其他可能需要的选项),以及这些选项对从NDB集群备份恢复的影响:表18.32使用——exclude-*选项调用ndb_restore的几种方法,以及这些选项对从NDB集群备份恢复的影响。
选项 结果 ——exclude-databases = db1
所有数据库中的所有表 db1
恢复;没有表格db1
恢复——exclude-databases = db1、db2
(或——exclude-databases = db1
——exclude-databases = db2
)所有数据库中的所有表 db1
而且db2
恢复;没有表格db1
或db2
恢复——排除表= db1.t1
除了所有的桌子 t1
在数据库db1
恢复;中所有其他表db1
恢复;恢复所有其他数据库中的所有表——排除表= db1.t2 db2.t1
(或——排除表= db1.t2
——排除表= db2.t1)
数据库中的所有表 db1
除了t2
和数据库中的所有表db2
除了桌子t1
恢复;没有其他表格db1
或db2
恢复;恢复所有其他数据库中的所有表您可以同时使用这两个选项。例如,下面的命令会导致所有数据库中的所有表除了数据库
db1
而且db2
,和表格t1
而且t2
在数据库db4
,进行修复:$> ndb_restore[…]——exclude-databases=db1,db2——exclude-tables=db3.t1,db3.t2
(同样,为了清晰扼要,我们省略了刚才示例中其他可能必要的选项。)
你可以使用
——包括:- *
而且——排除- *
选项一起,但须遵守以下规则:所有人的行动
——包括:- *
而且——排除- *
选项是累积的。所有
——包括:- *
而且——排除- *
选项按照传递给ndb_restore的顺序计算,从右到左。在选项冲突的情况下,第一个(最右边)选项优先。换句话说,与给定数据库或表匹配的第一个选项(从右到左)”赢了”.
例如,下面一组选项的原因ndb_restore从数据库中恢复所有表
db1
除了db1.t1
,同时不从任何其他数据库恢复其他表:——包括数据库= db1排除表= db1.t1
然而,颠倒刚刚给出的选项的顺序只会导致所有表从数据库
db1
恢复(包括。db1.t1
,但没有来自任何其他数据库的表),因为——包括数据库
最右边的选项是与数据库的第一个匹配db1
因此优先于任何其他匹配的选项db1
或任何表格db1
:——排除表= db1.t1——包括数据库= db1
-
命令行格式 ——fields-enclosed-by =字符
类型 字符串 默认值 每个列值都包含在传递给该选项的字符串中(无论数据类型如何;参见
——fields-optionally-enclosed-by
). ——fields-optionally-enclosed-by
命令行格式 ——fields-optionally-enclosed-by
类型 字符串 默认值 -
命令行格式 ——fields-terminated-by =字符
类型 字符串 默认值 \ t(选项卡)
传递给此选项的字符串用于分隔列值。默认值为制表符(
\ t
). -
命令行格式 ——帮助
显示帮助文本并退出。
-
命令行格式 ——十六进制
如果使用此选项,所有二进制值将以十六进制格式输出。
-
命令行格式 ——包括数据库=列表
类型 字符串 默认值 要还原的一个或多个数据库的逗号分隔列表。常与
——包括表格
;有关进一步信息和示例,请参阅该选项的描述。 -
命令行格式 ——包括表格=列表
类型 字符串 默认值 要恢复的以逗号分隔的表列表;每个表引用必须包含数据库名称。
当
——包括数据库
或——包括表格
时,仅恢复由该选项命名的数据库或表;排除所有其他数据库和表ndb_restore,并且不会恢复。下表显示了对ndb_restore使用
——包括:- *
选项(为了清晰起见,省略了其他可能需要的选项),以及这些选项对从NDB集群备份恢复的影响:表18.33使用——include-*选项调用ndb_restore的几种方法,以及它们对从NDB集群备份恢复的影响。
选项 结果 ——包括数据库= db1
只有数据库中的表 db1
恢复;忽略所有其他数据库中的所有表——包括数据库= db1、db2
(或——包括数据库= db1
——包括数据库= db2
)只有数据库中的表 db1
而且db2
恢复;忽略所有其他数据库中的所有表——包括表格= db1.t1
只有表 t1
在数据库db1
恢复;没有其他表格db1
或在任何其他数据库中进行恢复——包括表格= db1.t2 db2.t1
(或——包括表格= db1.t2
——包括表格= db2.t1
)只有桌子 t2
在数据库db1
还有桌子t1
在数据库db2
恢复;没有其他表格db1
,db2
,或恢复任何其他数据库您也可以同时使用这两个选项。例如,下面将导致数据库中的所有表
db1
而且db2
,连同桌子t1
而且t2
在数据库db4
,进行恢复(没有其他数据库或表):$> ndb_restore[…]——include-databases=db1,db2——include-tables=db3.t1,db3.t2
(在刚才的例子中,我们再次省略了其他可能是必需的选项。)
也可以只恢复选定的数据库,或从单个数据库中恢复选定的表
——包括:- *
(或——排除- *
)选项,使用如下所示的语法:ndb_restoreother_optionsdb_name, (db_name[,……) |tbl_name(,tbl_name][…]]
换句话说,您可以指定以下任何一个要恢复:
来自一个或多个数据库的所有表
一个数据库中的一个或多个表
-
命令行格式 ——lines-terminated-by =字符
类型 字符串 默认值 \ n (linebreak)
指定用于结束每一行输出的字符串。默认为换行字符(
\ n
). -
命令行格式 ——登录路径=路径
类型 字符串 默认值 (没有)
从登录文件读取给定路径。
-
命令行格式 ——lossy-conversions
此选项旨在补充
——promote-attributes
选择。使用——lossy-conversions
当从备份恢复数据时,允许对列值进行有损转换(类型降级或符号更改)。除了一些例外,管理降级的规则与MySQL复制相同;看到17.4.1.9.2节“具有不同数据类型的列的复制”,以获取有关属性降级当前支持的特定类型转换的信息。ndb_restore对每个属性和列报告在有损转换期间执行的任何数据截断。
-
命令行格式 ——no-binlog
此选项可阻止任何已连接的SQL节点写入由ndb_restore到二进制对数上。
-
命令行格式 ——已
不要从除登录文件外的任何选项文件中读取默认选项。
-
命令行格式 ——no-restore-disk-objects
此选项停止ndb_restore从恢复任何NDB集群磁盘数据对象,如表空间和日志文件组;看到18.6.10节“NDB集群磁盘数据表”,以了解更多有关这些项目的资料。
-
命令行格式 ——没有
当使用ndb_restore要恢复备份,请
VARCHAR
使用旧的固定格式创建的列可以调整大小,并使用现在使用的可变宽度格式重新创建。可以通过指定重写此行为——没有
. -
命令行格式 ——ndb-connectstring = connection_string
类型 字符串 默认值 (没有)
设置连接ndb_mgmd的连接字符串。语法:“[nodeid = id;][主机=]主机名(港口):”。覆盖NDB_CONNECTSTRING和my.cnf中的条目。
-
命令行格式 ——ndb-mgmd-host = connection_string
类型 字符串 默认值 (没有)
-
命令行格式 ——ndb-nodegroup-map =地图
用于将备份从一个节点组恢复到另一个节点组,但从未完全实现;不受支持的。
-
命令行格式 ——ndb-nodeid = #
类型 整数 默认值 (没有)
为该节点设置节点ID,覆盖由设置的任何ID
——ndb-connectstring
. ——ndb-optimized-node-selection
命令行格式 ——ndb-optimized-node-selection
为事务的节点选择启用优化。默认启用;使用
——skip-ndb-optimized-node-selection
禁用。-
命令行格式 ——nodeid = #
类型 数字 默认值 没有一个
指定执行备份的数据节点的节点ID。
当恢复到数据节点数量与备份位置不同的集群时,此信息有助于识别要恢复到给定节点的正确文件集或文件集。(在这种情况下,通常需要将多个文件恢复到单个数据节点。)看到第18.5.22.2节,“恢复到不同数量的数据节点”,以了解更多资料及例子。
-
命令行格式 ——并行= #
类型 数字 默认值 128
最小值 1
最大值 1024
ndb_restore使用单行事务并发应用多行。此参数确定实例的并行事务(并发行)的数量ndb_restore尝试使用。默认情况下,这是128;最小值为1,最大值为1024。
执行插入的工作在相关数据节点中的线程之间并行化。此机制用于从
. data
文件——即数据的模糊快照;它不用于构建或重建索引。更改日志是连续应用的;索引删除和构建是DDL操作,分别处理。在恢复的客户端上没有线程级并行。 ——preserve-trailing-spaces
,- p
命令行格式 ——preserve-trailing-spaces
将固定宽度的字符数据类型提升为其可变宽度的等价物时,导致保留尾随空格
字符
列值为VARCHAR
,或二进制
列值为VARBINARY
.否则,在将这些列值插入到新列中时,将从这些列值中删除任何尾随空格。-
命令行格式 ——打印
原因ndb_restore将所有数据、元数据和日志打印到
stdout
.相当于使用——打印数据的
,——print-meta
,——print-log
选择在一起。请注意使用
——打印
或者任何——print_ *
Options实际上是在进行预演。包括其中一个或多个选项将导致将任何输出重定向到stdout
;在这种情况下,ndb_restore不尝试将数据或元数据恢复到NDB集群。 -
命令行格式 ——打印数据的
导致ndb_restore将其输出导向
stdout
.常与一个或多个的连用——选项卡
,——fields-enclosed-by
,——fields-optionally-enclosed-by
,——fields-terminated-by
,——十六进制
,——附加
.文本
而且团
列值总是被截断。在NDB 7.3.7和更早的版本中,这些值被截断到输出中的前240字节;在NDB 7.3.8及以后版本中,它们被截断为256字节。(Bug #14571512, Bug #65467)当使用——打印数据的
. -
命令行格式 ——print-defaults
打印程序参数列表并退出。
-
命令行格式 ——print-log
导致ndb_restore将其日志输出到
stdout
. -
命令行格式 ——print-meta
将所有元数据打印到
stdout
. -
命令行格式 ——progress-frequency = #
类型 数字 默认值 0
最小值 0
最大值 65535
每人打印一份状态报告
N
恢复正在进行。0(默认值)导致不打印状态报告。最大值为65535。 -
命令行格式 ——promote-attributes
ndb_restore支持有限属性提升与MySQL复制的支持方式大致相同;也就是说,从给定类型的列备份的数据通常可以使用”大,类似”类型。例如,来自a的数据
CHAR (20)
列可以恢复为声明为的列VARCHAR (20)
,VARCHAR (30)
,或CHAR (30)
;数据来自MEDIUMINT
列可以恢复为类型的列INT
或长整型数字
.看到17.4.1.9.2节“具有不同数据类型的列的复制”,用于当前属性提升支持的类型转换表。属性提升ndb_restore必须显式启用,如下所示:
准备备份要恢复到的表。ndb_restore不能用于重新创建与原始定义不同的表;这意味着您必须手动创建表,或者更改希望使用的列
ALTER TABLE
在恢复表元数据之后,在恢复数据之前。调用ndb_restore与
——promote-attributes
期权(简写形式)——一个
)时恢复表数据。如果不使用此选项,则不会发生属性提升;相反,恢复操作失败并报错。
在NDB 7.3.3之前,字符数据类型和
文本
或团
没有正确处理(Bug #17325051)。在NDB 7.3.7之前,降级为
文本
来非常小的文本串
没有正确处理(Bug #18875137)。在字符数据类型和之间转换时
文本
或团
,只在字符类型之间转换(字符
而且VARCHAR
)和二进制类型(二进制
而且VARBINARY
)可同时进行。例如,您不能提升INT
列长整型数字
在推广VARCHAR
列文本
在同样的祈求中ndb_restore.之间的转换
文本
不支持使用不同字符集的列。从NDB 7.3.7开始,它被明确禁止(Bug #18875137)。当将字符或二进制类型转换为
文本
或团
与ndb_restore,您可能会注意到它创建并使用一个或多个名为
.这些表之后就不需要了,通常由ndb_restore在成功恢复之后。table_name
圣元node_id
-
命令行格式 ——rebuild-indexes
在恢复本机数据时,启用多线程重建有序索引
NDB
备份。用于构建有序索引的线程数ndb_restore控件控制此选项BuildIndexThreads
数据节点配置参数和ldm个数。的第一次运行时必须使用此选项ndb_restore;这将导致在不使用索引的情况下重新构建所有有序索引
——rebuild-indexes
在恢复后续节点时再次执行。您应该在将新行插入数据库之前使用此选项;否则,有可能插入的一行后来在尝试重新构建索引时违反了唯一的约束。默认情况下,有序索引的构建与ldm的数量并行。在节点和系统重新启动期间执行的脱机索引构建可以使用
BuildIndexThreads
数据节点配置参数;此参数对索引的删除和重建没有影响ndb_restore,在线执行。重建唯一索引使用磁盘写带宽进行重做日志和本地检查点。带宽不足会导致重做缓冲区过载或日志过载错误。在这种情况下,你可以逃跑ndb_restore
——rebuild-indexes
再一次;流程将在发生错误的地方恢复。当遇到临时错误时,也可以这样做。你可以重复执行ndb_restore——rebuild-indexes
无限期的;的值可以阻止此类错误——并行性
.如果问题是空间不足,您可以增加重做日志的大小(FragmentLogFileSize
节点配置参数),或者您可以提高lcp执行的速度(MaxDiskWriteSpeed
以及相关参数),以便更快地释放空间。 -
命令行格式 ——恢复数据
输出
NDB
表数据和日志。 -
命令行格式 ——restore-epoch
向集群复制状态表添加(或恢复)纪元信息。这对于在NDB集群副本上启动复制非常有用。属性中的行
mysql.ndb_apply_status
有0
在id
如果列已经存在,则更新它;如果该行不存在,则插入该行。(见18.7.9节,“使用NDB集群复制进行NDB集群备份”.) -
命令行格式 ——restore-meta
此选项导致ndb_restore打印
NDB
表的元数据。第一次运行ndb_restore恢复程序中,还需要恢复元数据。换句话说,您必须重新创建数据库表—这可以通过使用
——restore-meta
(- m
)选项。恢复元数据只需要在单个数据节点上完成;这足以将其恢复到整个集群。请注意在开始恢复备份时,集群应该有一个空数据库。(换句话说,您应该从
——初始
在执行恢复之前。) -
命令行格式 ——restore-privilege-tables
ndb_restore默认情况下不恢复分布式MySQL特权表。此选项导致ndb_restore恢复特权表。
只有当特权表被转换为时,这才有效
NDB
在备份之前。有关更多信息,请参见第18.6.12节,“使用共享授权表的分布式权限”. ——rewrite-database
=olddb, newdb
命令行格式 ——rewrite-database =字符串
类型 字符串 默认值 没有一个
此选项使恢复到具有与备份中使用的名称不同的数据库成为可能。例如,如果备份的数据库名为
产品
,可以将其中包含的数据恢复到名为库存
,使用如下所示的选项(省略任何其他可能需要的选项):$> ndb_restore—重写数据库=产品,库存
的一次调用中可以多次使用该选项ndb_restore.因此,可以同时从一个名为
db1
到一个名为db2
并从一个名为db4
给一个叫db4
使用——db2 rewrite-database = db1——rewrite-database = db4 db4
.其他ndb_restore选项可以在多个事件之间使用——rewrite-database
.在多重冲突的情况下
——rewrite-database
选项,最后一个——rewrite-database
所使用的选项,从左到右读取,是生效的选项。例如,如果——db2 rewrite-database = db1——rewrite-database = db1 db4
仅使用——rewrite-database = db1 db4
很荣幸,而且——rewrite-database = db1、db2
将被忽略。也可以从多个数据库恢复到单个数据库,这样——db4 rewrite-database = db1——rewrite-database = db2 db4
从数据库中恢复所有表和数据db1
而且db2
到数据库db4
.重要的从多个备份数据库恢复到单个目标数据库时使用
——rewrite-database
,不检查表名或其他对象名之间的冲突,也不保证行恢复的顺序。这意味着在这种情况下,行可能被覆盖,更新可能丢失。-
命令行格式 ——skip-broken-objects
此选项导致ndb_restore在读取本机文件时忽略损坏的表
NDB
备份,并继续恢复任何剩余的表(没有损坏的表)。目前,——skip-broken-objects
选项仅在缺少blob部件表的情况下有效。 -
命令行格式 ——skip-table-check
可以在不恢复表元数据的情况下恢复数据。默认情况下,ndb_restore如果在表数据和表模式之间发现不匹配,则失败并报错;该选项将覆盖该行为。
恢复数据时使用列定义中不匹配的一些限制ndb_restore放松;当遇到其中一种不匹配时,ndb_restore不像以前那样因出现错误而停止,而是接受数据并将其插入到目标表中,同时向用户发出正在执行此操作的警告。无论是否使用这两个选项,都会发生此行为
——skip-table-check
或——promote-attributes
正在使用。列定义中的这些差异属于以下类型:不同的
COLUMN_FORMAT
设置(固定
,动态
,默认的
)不同的
存储
设置(内存
,磁盘
)不同的默认值
不同的分布键设置
-
命令行格式 ——skip-unknown-objects
此选项导致ndb_restore在读取本机时忽略它不识别的任何模式对象
NDB
备份。这可以用于将运行NDB 7.4的集群的备份恢复到运行NDB 7.3的集群。 -
命令行格式 ——选项卡=路径
类型 目录名称 原因
——打印数据的
要创建转储文件,每个表一个,每个都有名称
.它需要文件保存的目录路径作为参数;使用tbl_name
. txt.
用于当前目录。 -
命令行格式 ——使用
显示帮助文本并退出;一样
——帮助
. -
命令行格式 ——verbose = #
类型 数字 默认值 1
最小值 0
最大值 255
设置输出的详细程度。最小值为0;最大长度为255。缺省值为1。
-
命令行格式 ——版本
显示版本信息并退出。
此实用程序的典型选项如下所示:
ndb_restore [- cconnection_string) - nnode_id- bbackup_id\ [-m] -r——backup-path=/ /备份/文件/路径
通常,从NDB集群备份恢复时,ndb_restore至少需要——nodeid
(简式:- n
),——backupid
(简式:- b
),——backup-path
选项。此外,当ndb_restore用于恢复任何包含唯一索引的表,必须包含——disable-indexes
或——rebuild-indexes
.(Bug #57782, Bug #11764893)
的- c
选项用于指定一个连接字符串ndb_restore
在哪里定位集群管理服务器(请参见章节18.4.3.3,“NDB集群连接字符串”).如果不使用此选项,则ndb_restore上试图连接到管理服务器localhost: 1186
.这个实用程序充当集群API节点,因此需要一个空闲连接”槽”连接集群管理服务器。这意味着至少有一个(api)
或(mysqld)
可以在集群中由它使用的部分config.ini
文件。最好至少留一个空的(api)
或(mysqld)
部分config.ini
没有被用于MySQL服务器或其他应用程序的原因(见18.4.3.7节“在NDB集群中定义SQL和其他API节点”).
你可以验证一下ndb_restore已通过显示
命令ndb_mgm管理客户端。你也可以通过一个系统shell来完成,如下所示:
$> ndb_mgm -e "SHOW"
在NDB 7.3.11和7.4.8中只有,当ndb_restore用于恢复任何包含唯一索引的表,必须包含——disable-indexes
或——rebuild-indexes
.(Bug #57782, Bug #11764893)这不是后续版本的要求。(错误# 22345748)
错误报告。ndb_restore报告临时错误和永久错误。在临时错误的情况下,它可能能够从中恢复,并报告恢复成功,但遇到临时错误,请查看配置
在这种情况下。
在使用ndb_restore初始化NDB集群用于循环复制时,作为副本的SQL节点上的二进制日志不会自动创建,必须手动创建。要创建二进制日志,请执行命令a显示表
语句在SQL节点上运行开始的奴隶
.这是NDB集群中的一个已知问题。