CockroachDB-备份与恢复(6)RESTORE命令
admin
2024-03-05 16:40:27
0

RESTORE语句从存储在AWS S3、谷歌云存储或NFS等服务上的备份中恢复集群的模式和数据。
因为cockachdb设计了高容错性,恢复主要是为灾难恢复设计的,也就是说,如果集群丢失了大部分节点,则重新启动集群。孤立的问题(如小规模节点中断)不需要任何干预。
您可以恢复:

  • 一个完整的集群
  • 数据库

考虑因素

RESTORE不能恢复由新版本的cockachdb所做的备份。
RESTORE是一个阻塞语句。要异步运行恢复作业,请使用DETACHED选项。
恢复之前目标集群上的区域配置将在使用备份集群中的区域配置进行集群恢复时被覆盖。如果在进行备份时集群上没有定制的分区配置,那么在恢复之后,目标集群将使用RANGE DEFAULT配置中的分区配置。
当在表上设置exclude_data_from_backup参数时,该表在恢复时将不包含行数据。

参数

参数描述
table_pattern要恢复的表或视图。
database_name您想要恢复的数据库的名称(即,恢复数据库中的所有表和视图)。只有备份了整个数据库,才能恢复整个数据库。
collectionURI存储完全备份(以及附加的增量备份,如果适用)的集合URI。
LATEST恢复给定集合URI中最近的备份。
subdirectory从给定集合URI中的特定子目录恢复。
localityURI存储位置感知备份的URI。从增量的位置感知备份进行恢复时,需要包括曾经使用过的每个位置,即使它只使用过一次。
AS OF SYSTEM TIME timestamp恢复数据到一个存在的时间戳。只有在使用修订历史进行了完整备份或增量备份时,才能恢复某个时间点的数据
restore_options_list使用这些选项控制备份的行为

其他选项

您可以使用restore_options_list中的以下任何选项来控制RESTORE行为。要设置多个RESTORE选项,请使用逗号分隔的列表:

参数描述
into_dbDatabase name用于更改表恢复的目标数据库。在使用into_db进行恢复之前,目标数据库必须存在。(不适用于数据库或集群恢复。)示例:WITH into_db = ‘newdb’
new_db_nameDatabase name在恢复期间重命名数据库。当使用不同的名称恢复相同的数据库时,现有的备份数据库可以保持活动状态。示例:RESTORE DATABASE move…WITH new_db_name = ‘new_movr’
skip_missing_foreign_keysN/A用于在恢复之前删除缺失的外键约束。例如:WITH skip_missing_foreign_keys
skip_missing_sequencesN/A用于忽略序列相关性(例如,使用序列的DEFAULT表达式)。示例:WITH skip_missing_sequences
skip_missing_sequence_ownersN/A在恢复以前是序列所有者的表或以前由表拥有的序列时,必须使用。例如:WITH skip_missing_sequence_owners
skip_missing_viewsN/A用于跳过恢复无法恢复的视图,因为它们的依赖关系没有同时被恢复。例如:WITH skip_missing_views
skip_localities_checkN/A当备份的集群和目标集群之间存在不匹配的集群区域时,用于在恢复之前跳过检查集群的位置。例如:WITH skip_localities_check
encryption_passphrasePassphrase used to create theencrypted backup用于解密由BACKUP语句加密的文件的口令。
DETACHEDN/A当RESTORE与DETACHED一起运行时,作业将异步执行。恢复作业创建完成后返回作业ID。注意,如果指定了DETACHED,则不会返回进一步的作业信息和作业完成状态。有关返回作业数据之间差异的更多信息,请参见下面的示例。要检查作业状态,请使用SHOW JOBS语句。要在事务中运行恢复,请使用DETACHED选项。
debug_pause_on“error”用于使RESTORE作业在遇到错误时自我暂停。然后,可以在修复错误或取消错误后恢复RESTORE作业,以回滚作业。示例:WITH debug_pause_on=‘error’
incremental_locationSTRING从备份最初使用的备用集合URI恢复增量备份。

功能细节

RESTORE将只恢复对象(表、数据库、集群)中的最新数据,或者根据as OF SYSTEM TIME恢复最新数据。也就是说,即使使用revision_history运行备份,还原也不包括历史数据。这意味着,如果对恢复的对象发出AS OF SYSTEM TIME查询,查询将失败或响应将不正确,因为没有可查询的历史数据。例如,如果您恢复了在2022-07-13 10:38:00的表,那么就不可能读取或备份在2022-07-13 10:37:00或更早的表。对于带有revision_history的备份也是如此,它可能会尝试在早于2022-07-13 10:38:00之前启动修订开始时间。

完整集群

全集群恢复只能在没有用户创建的数据库或表的目标集群上运行。恢复全集群包括:
所有用户表
相关系统表
所有数据库
所有表(自动包含它们的索引)
所有视图
v22.1新版功能:此外,全集群恢复将:
在全集群恢复期间将临时表恢复到它们的原始数据库。
在恢复开始之前,删除集群的defaultdb和postgres预加载数据库。如果defaultdb和postgres在原始备份中存在,则只能恢复它们。

数据库

恢复数据库将创建一个新数据库并恢复其所有表和视图。创建的数据库将在备份中具有数据库的名称。
RESTORE DATABASE backup_database_name FROM LATEST in ‘your_backup_collection_URI’;
v22.1新增功能:要恢复集群中已经存在的数据库,使用new_db_name选项和restore一起为数据库提供新名称。

还可以从备份中恢复单个表(自动包含其索引)或视图。该过程使用备份中存储的数据在目标数据库中创建全新的表或视图。
默认情况下,将表和视图恢复到与备份它们的数据库名称匹配的目标数据库中。如果目标数据库不存在,则必须创建它。您可以使用into_db选项来选择更改目标数据库。
目标数据库的表或视图不能与要恢复的表或视图同名。如果正在使用任何恢复目标的名称,您可以:
删除表,删除视图,或删除序列,然后恢复它们。注意,在列的DEFAULT表达式中使用序列时,序列不能被删除,因此这些表达式必须在序列被删除之前删除,并在序列被重新创建之后重新创建。setval函数可用于将序列的值设置为之前的值。
将表或视图恢复到不同的数据库中。

性能

RESTORE过程通过将工作分配到所有节点,将其对集群性能的影响降到最低。恢复数据的子集(称为范围)均匀分布在随机选择的节点中,每个范围最初只恢复到一个节点。一旦范围恢复,节点开始复制它其他。
当执行RESTORE操作失败或取消时,将正确清理恢复的部分数据。这可能会对集群性能产生轻微的、暂时的影响。
v22.1新增功能:如果集群中的某个节点耗尽磁盘空间,则恢复任务将暂停。有关恢复和显示恢复作业进度的信息,请参见查看和控制恢复作业。
v22.1新增功能:如果恢复作业在重试次数达到最大次数后继续遇到瞬时错误,则恢复作业将暂停,而不是进入失败状态。一旦恢复暂停,您可以恢复或取消它。

示例

恢复最近备份

RESTORE FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}';

恢复指定备份

RESTORE FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}';

恢复集群

RESTORE FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}';

恢复数据库

RESTORE DATABASE bank FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}';

恢复表

RESTORE TABLE bank.customers FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}';

从增量恢复
从增量备份恢复时,将恢复整个表、数据库或集群。在此过程中,cockachdb同时使用最新的(或特定的)增量备份和完全备份。如果没有完全备份,则不能恢复增量备份。此外,不可能使用现有数据对表、数据库或集群进行恢复。

RESTORE DATABASE bank FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}';

异步恢复

RESTORE FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}'
WITH DETACHED;

恢复到不同的database

RESTORE bank.customers FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}'
WITH into_db = 'newdb';

恢复重命名db

RESTORE bank.customers FROM LATEST IN 's3://{bucket_name}?AWS_ACCESS_KEY_ID={key_id}&AWS_SECRET_ACCESS_KEY={access_key}'
WITH into_db = 'newdb';

相关内容

热门资讯

西安四天旅游攻略和费用是多少,... 嘿,宝子们!如果你打算来一场历史文化与美食交织的旅行,那西安绝对是你的不二之选。这座城市就像一部活的...
原创 暴... 2025年上半年,泰国旅游业面临严峻挑战,特别是中国游客数量大幅减少,对行业造成沉重打击。据统计,今...
如果这个世界上有八号当铺,你愿... 如果这个世界上有八号当铺,你愿意进去典当吗?我愿意进去典当,因为我觉得用自己不是那么在意的东西去换取...
能不能推荐几本校园青春小说,不... 能不能推荐几本校园青春小说,不要连载的,要有大结局的,求你啦!拽丫头与校草同居左耳,离歌,沙漏,会有...
电影《穿靴子的猫》十四分钟半左... 电影《穿靴子的猫》十四分钟半左右那段音乐,好像是小号吹的吧是americano
“贞子”是什么? “贞子”是什么?山上长得一种植物.果实外边有一层硬皮砸开之后瓤可以吃1998年,由松岛菜菜子、真田广...
海贼王火影死神哪部好看 海贼王火影死神哪部好看这三部动画都很出名,我想问下大家他们各自的含义,还有听听看大家的意见火影胜在剧...
求穿越搞笑的小说 求穿越搞笑的小说俏皮小妞之天下无双极品家丁......
胃镜检查需要全麻吗,大约需要多... 胃镜检查需要全麻吗,大约需要多长时间胃镜根本不用麻醉。。。
《我为歌狂》续集的顺序是什么? 《我为歌狂》续集的顺序是什么?《我为歌狂》有两部互相无关的续集,一部是《我为歌狂终结本8848》,另...
彼岸花开,花开彼岸。花开不见叶... 彼岸花开,花开彼岸。花开不见叶,叶生不见花,相念相惜不相见。传说种的花和叶永不相见,就这样吗?彼岸花...
参天小银瓶好不好? 参天小银瓶好不好?建议买小样试试,每个人肤质都不同。
大耳朵图图简介? 大耳朵图图简介?该剧讲述了小朋友图图和他的父母一家三日的生活琐事,其中图图是个小捣蛋儿,脑瓜里充满了...
狱血魔神觉醒流程 狱血魔神觉醒流程觉醒任务:  达到48级后,找G.S.D接取觉醒任务任务名称 完成条件 觉醒-狂暴...
红莲是怎么死的? 红莲是怎么死的?谁能给我讲一下从红莲和三尾斗,昏迷后被幽鬼丸叫醒一直到红莲死有关红莲的事?先谢谢了,...
中级口译? 中级口译?想考中级口译,不太了解这个考试,有2个问题1,中口先考笔译然后才能口译,中间可以间隔多长时...
实体书是什么意思 实体书是什么意思实体书是什么意思顾名思义,就是指已经出版发行了,并且印刷完成推向市场,读者能够在书店...
求男主角回到过去,又遇上了以前... 求男主角回到过去,又遇上了以前的自己,然后和以前的自己在一起的小说你是的这 是小说?自己爱上自己.那...
治疗肺癌的名老中医 治疗肺癌的名老中医你好,我最近老是觉得腹胀的厉害,经常咳嗽的上不来气,老是觉得嗓子跟有东西似的,开始...
肉唐僧为什么不在嫣牛博上写博客... 肉唐僧为什么不在嫣牛博上写博客了?他可能去西天取经路上到了没有wifi的地方,过两天有网了他就写了~...