<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 快照和還原 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html) 譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=9405386](http://www.apache.wiki/pages/viewpage.action?pageId=9405386) 貢獻者 : [阿叩](/display/~luanqing),[ApacheCN](/display/~apachecn),[Apache中文網](/display/~apachechina) MarkDown文件:[Snapshot And Restore.md](https://github.com/aqlu/elasticsearch-reference-cn/blob/master/Modules/Snapshot_And_Restore.md) ## 快照和還原 **`快照`**和**`還原`**模塊支持創建單獨索引或整個集群的快照到遠程倉庫,像共享文件系統、S3或HDFS等。你可以非常方便地進行快照備份以及比較迅速地進行快照還原,但快照的還原需要Elasticsearch的版本能正確的讀取索引文件。這意味著: * 在2.x版本中創建的索引的快照可以恢復到5.x * 在1.x版本中創建的索引的快照可以恢復到2.x * 在1.x版本中創建的索引的快照不可以恢復到5.x 要恢復在1.x版本中創建的索引快照到5.x,你可以先將其恢復到2.x版本的集群,然后[重建索引](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html#reindex-from-remote)到5.x集群。因為是從原始數據存檔的副本恢復, 這會比較耗時。 ## 倉庫 在執行任何快照或還原操作之前,應在先在Elasticsearch創建一個快照倉庫。指定倉庫的類型等,詳情請參閱下文。 ``` PUT /_snapshot/my_backup { "type": "fs", "settings": { ... repository specific settings ... } } ``` 一旦存儲倉庫被創建好,可使用下面的命令來查詢其信息: ``` GET /_snapshot/my_backup ``` 將返回: ``` { "my_backup": { "type": "fs", "settings": { "compress": true, "location": "/mount/backups/my_backup" } } } ``` 可以用逗號分隔庫名來一次獲取多個快照倉庫的信息,支持通配符`*`。例如,獲取以repo開頭以及包含backup的所有倉庫信息 可以使用下面的命令來獲得: ``` GET /_snapshot/repo*,*backup* ``` 如果沒有指定倉庫名稱,或使用`_all`用作倉庫名來查詢,Elasticsearch將返回當前集群中注冊的所有倉庫信息: ``` GET /_snapshot ``` ``` 或者? ``` ``` GET /_snapshot/_all ``` ### 共享文件系統倉庫 共享文件系統倉庫("type": "fs")使用共享文件系統來存儲快照。如果要創建一個共享文件系統類型的快照倉庫,你需要在Elasticsearch集群的所有主節點與數據節點上掛載同一個共享文件系統到同一路徑下。這個路徑(或它的父目錄中的一個)必須在集群所有主節點和數據節點上的`path.repo`設置項中進行配置。 如果共享文件系統被掛載到`/mount/backups/my_backup`,下面的配置應被添加到`elasticsearch.yml`文件中: ``` path.repo: ["/mount/backups", "/mount/longterm_backups"] ``` `path.repo`的配置支持微軟的Windows UNC路徑格式,但需要將服務器名與指定的共享路徑前綴采用斜杠正確轉義: ``` path.repo: ["\\\\MY_SERVER\\Snapshots"] ``` 所有節點重新啟動后,下面的命令可以被用于創建一個名為`my_backup`的共享文件系統倉庫: ``` $ curl -XPUT 'http://localhost:9200/_snapshot/my_backup' -H 'Content-Type: application/json' -d '{ "type": "fs", "settings": { "location": "/mount/backups/my_backup", "compress": true } }' ``` 如果存儲倉庫的`location`被設置為一個相對路徑,那么倉庫存儲路徑將基于`path.repo`設置的路徑開始解析: ``` $ curl -XPUT 'http://localhost:9200/_snapshot/my_backup' -H 'Content-Type: application/json' -d '{ "type": "fs", "settings": { "location": "my_backup", "compress": true } }' ``` 下面的一些配置將被支持: | 參數名 | 描述 | | --- | --- | | location | 快照的位置。必須設置,不能為空。 | | compress | 是否開啟快照文件的壓縮。壓縮僅處理元數據文件(索引的映射與設置)。數據文件不被壓縮。默認為true。 | | chunk_size | 大文件可以根據需要在快照過程中被分解成塊。塊大小可以以字節為單位,或直接指定大小單位,例如:1g,10m,5k。默認為null(不限制塊大小)。 | | max_restore_bytes_per_sec | 每個節點在恢復時的速率。默認為40mb每秒。 | | max_snapshot_bytes_per_sec | 每個節點在快照時的速率。默認為40mb每秒。 | | readonly | 標記倉庫只讀。默認為false。 | ### 只讀URL倉庫 URL倉庫("type": "url")可以被用作另一種只讀方式去訪問共享文件系統倉庫的數據。需要指定`url`參數為共享文件系統倉庫的根路徑。下面的一些設置將被支持: | 參數名 | 描述 | | --- | --- | | url | 快照的位置。必須設置,不能為空。 | URL倉庫支持以下協議: “HTTP”, “HTTPS”, “FTP”, “file”和“jar”。URL倉庫在使用`http:`,?`https:`和`ftp:`協議的路徑時,必須指定允許的URL被列入白名單`repositories.url.allowed_urls`,此設置在主機、路徑、查詢參數和片段的地方支持通配符。例如: ``` repositories.url.allowed_urls: ["http://www.example.org/root/*", "https://*.mydomain.com/*?*#*"] ``` URL倉庫在使用`file:`協議的路徑時,路徑只能指向配置在`path.repo`中的設置,配置方式類似于共享文件系統倉庫。? ### 倉庫插件 官方可用的其他倉庫插件: * [repository-s3](https://www.elastic.co/guide/en/elasticsearch/plugins/5.3/repository-s3.html)支持S3倉庫 * [repository-hdfs](https://www.elastic.co/guide/en/elasticsearch/plugins/5.3/repository-hdfs.html)支持Hadoop環境的的HDFS倉庫 * [repository-azure](https://www.elastic.co/guide/en/elasticsearch/plugins/5.3/repository-azure.html)支持Azure的倉庫 * [repository-gcs](https://www.elastic.co/guide/en/elasticsearch/plugins/5.3/repository-gcs.html)支持谷歌云存儲倉庫? ### 倉庫驗證 當倉庫創建完成后,會立即核實所有主節點與數據節點,以確保集群上所有節點上的功能。該`verify`參數可用于在創建或更新倉庫時顯式地禁用倉庫驗證: ``` PUT /_snapshot/s3_repository?verify=false { "type": "s3", "settings": { "bucket": "my_s3_bucket", "region": "eu-west-1" } } ``` ?驗證過程也可通過運行下面的命令手動執行: ``` POST /_snapshot/s3_repository/_verify ``` ?它將返回驗證成功的所有節點,或者是驗證失敗的消息。 ## 快照 一個倉庫可以包含相同的集群的多個快照。快照需要在集群內標記成一個唯一的名稱。以下是在`my_backup`的倉庫中創建一個名為`snapshot_1`的快照指令: ``` PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true ``` `wait_for_completion`參數標識此請求是否需要等待快照創建完成,默認立即返回,不等待快照創建結束。在快照創建開始時,所有之前的快照信息都將被加載到內存,這意味著一個大倉庫執行此命令可能需要幾秒鐘(或甚至幾分鐘)才能返回,即使該命令的`wait_for_completion`參數設置為false。 創建快照時,默認會將集群中所有打開和已開始的索引全部備份,也可以通過設置創建快照的參數體來為指定為哪些索引創建快照。 ``` PUT /_snapshot/my_backup/snapshot_1 { "indices": "index_1,index_2", "ignore_unavailable": true, "include_global_state": false } ``` 快照包含的索引列表可以通過`indices`參數設置,支持[多索引語法](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html#search-multi-index-type)。快照請求還支持`ignore_unavailable`選項,設置它`true`會在快照創建過程中忽略不存在的索引錯誤,默認情況下`ignore_unavailable`參數未設置,在創建快照時如果缺少一個索引將會失敗。通過設置`include_global_state`為`false`,可以在創建的快照中不存儲集群的全局狀態信息。默認情況下,如果參與快照的一個或多個索引沒有可用的主分片,則整個快照將失敗,這種行為可以通過設置`partial`為`true`來改變。 索引創建快照時是增量的處理時。在創建索引快照時,Elasticsearch會分析創庫中已存儲的快照信息,只復制上一次快照后發生的新增、或發生變化的文件。它允許多個快照保存在一個倉庫中。創建快照過程采用非阻塞方式執行。正在執行創建快照的索引可以繼續執行索引和搜索操作。但快照是表示在創建快照那一瞬間點的索引視圖,所以在快照開始執行之后添加到索引將不存在于快照中。快照在主分片上會立即開始執行,快照開始后這個集群分片將不會遷移。1.2.0版本之前,在創建快照時如果群集有參與快照的索引的任何主分片搬遷或初始化動作,創建快照都將會失敗。從1.2.0版本開始,Elasticsearch將等待分片搬遷或初始化完成之后再執行快照。 除了創建每個索引的備份外,快照也可以存儲全局集群的元數據,其中包括群集的持久化設置和模板信息,臨時設置和已創建的快照倉庫將不會作為快照的一部分存儲。 在一個集群中,同一時間只能有一個創建快照的進程被執行。雖然已經開始創建快照的分片不能移動到另一個節點,但可能會干擾集群的再平衡處理和分配過濾。Elasticsearch將只能在快照結束時,根據當前分配過濾設置和再平衡算法將一個分片移動到另一個節點。 一旦開始創建快照,可以通過如下命令來查詢此快照的有關信息: ``` GET /_snapshot/my_backup/snapshot_1? ``` 此命令返回的快照相關信息包括起始和結束時間、創建快照的elasticsearch版本、包含的索引列表、快照的當前狀態、以及在快照創建過程中發生故障的索引列表。快照狀態如下: | 狀態碼 | 描述 | | --- | --- | | IN_PROGRESS | 快照當前正在運行。 | | SUCCESS | 快照創建完成并且所有分片都存儲成功。 | | FAILED | 快照創建失敗,沒有存儲任何數據。 | | PARTIAL | 集狀態全局狀態已儲存,但至少有一個分片的數據沒有存儲成功。在返回的`failure`字段中包含了相關未正確處理分片的詳細信息。 | | INCOMPATIBLE | 快照是有一個老版本的elasticsearch創建,因此與集群的當前版本不兼容。 | 跟倉庫類似,多個快照可以在一個請求查詢,還支持通配符: ``` GET /_snapshot/my_backup/snapshot_*,some_other_snapshot? ``` ``` 下面指令介紹了如何獲取倉庫中的所有快照: ``` ``` GET /_snapshot/my_backup/_all? ``` ``` 如果一些快照不可用導致命令失敗,可以通過設置布爾參數ignore_unavailable來返回當前可用的所有快照。 ``` 正在運行中的快照可以使用下面的命令來查詢: ``` $ curl -XGET "localhost:9200/_snapshot/my_backup/_current" ``` 快照可以使用下面的命令來從倉庫中刪除: ``` DELETE /_snapshot/my_backup/snapshot_1? ``` 當一個快照從版本庫中刪除,Elasticsearch將刪除此快照關聯的但不被其它快照引用的所有文件。一旦刪除快照動作執行,此快照當前正在創建的進程將被終止并且已創建的文件都將被清理。因此,刪除快照操作可以用于取消錯誤啟動的長時間運行的快照操作。 可以使用下面的命令刪除整個倉庫: ``` DELETE /_snapshot/my_backup? ``` 當倉庫被刪除時,Elasticsearch只是刪除快照的倉庫位置引用信息。快照本身沒有刪除,并在原來的位置。 ## 還原 快照可以使用下面的命令被還原: ``` POST /_snapshot/my_backup/snapshot_1/_restore ``` 默認情況下,快照中的所有索引都會被還原,集群的全局設置不會被還原。這可能是最好的還原選擇,允許通過設置`indices`與`include_global_state`參數來控制還原集群的全局設置與索引。索引列表支持[多索引語法](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html#search-multi-index-type)。`rename_pattern`與`rename_replacement`選項可以在還原時通過正則表達式來重命名索引,如何匹配可參見[這里](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#appendReplacement(java.lang.StringBuffer,%20java.lang.String))。設置`include_aliases`為`false`可以防止別名和關聯的索引一起被還原。 ``` POST /_snapshot/my_backup/snapshot_1/_restore { "indices": "index_1,index_2", "ignore_unavailable": true, "include_global_state": true, "rename_pattern": "index_(.+)", "rename_replacement": "restored_index_$1" } ``` 還原操作可以在正常工作的集群上執行。但是,已存在的索引需要先[關閉](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-open-close.html)后才能還原,并要跟快照中的索引具有相同數目的分片。還原操作將自動打開已存在的關閉的索引,如果被還原的索引在集群中不存在,將創建新的索引。如果需要還原群集狀態`include_global_state`(默認false),所有不存在的模板都會新增、已存在的會使用快照中的同名模板替換,持久化設置也將被添加到現有的持久化設置中。 ### 部分還原 默認情況下,如果參與操作的一個或多個索引沒有可用的快照分片,整個還原操作都將失敗。這可能是創建快照時一些分片備份失敗,你依然可以通過設置`partial`參數為`true`來盡可能的去還原。請注意,只有備份成功的分片才會在這種情況還原,所有丟失的分片將被創建成一個空的分片。 ### 還原過程中更改索引設置 大多數的索引設置可以在還原過程中被重寫。例如,下面的指令將在還原索引`index_1`時,不創建任何副本以及采用默認的索引刷新間隔: ``` POST /_snapshot/my_backup/snapshot_1/_restore { "indices": "index_1", "index_settings": { "index.number_of_replicas": 0 }, "ignore_index_settings": [ "index.refresh_interval" ] } ``` 請注意,有一些設置不能在還原時修改,如`index.number_of_shards`。 ### 還原到不同集群 存儲在快照中的信息是不依賴于特定的群集或群集名稱的,因此有可能從一個集群還原另一個群集創建的快照。在開始還原前,需要在新的集群中創建一個包含了原快照文件的倉庫,新的群集不必具有相同的大小或拓撲。然而,新集群的版本應該比用于創建快照的群集的版本更高或者相同(但只能跨1個重大更新的版本)。例如,你可以還原1.x版本的快照到2.x版本的集群,而不是1.x版本的快照到5.x版本的集群。 如果新的集群節點比原集群少,需要做一些額外的考慮。首先,必須確保新的集群有足夠的容量來存儲所有索引的快照。你可以在還原時配置減少副本的數量,這能幫助我們將快照還原到更小集群,也可以指定`indices`參數為快照中的索引的子集。在elasticsearch 1.5.0版本之前,還原持久設置是沒有檢查`discovery.zen.minimum_master_nodes`的設置,可能導致還原到一個小的集群時不兼容,因此可以在較小的集群中禁用此設置直到達到加入所需的主節點資格數。從1.5.0版本開始不兼容的設置將會被忽略。 如果原來的集群中的索引分配了特定節點的[分片分配過濾](https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html),相同的規則將在新的集群中執行。因此,如果新的群集不包含與被還原的索引可以匹配的屬性節點,這樣的索引將不會被成功還原,除非在還原時修改這些索引的分配配置。 ## 快照狀態 可以使用下面的命令來查詢當前正在運行的快照列表的詳細狀態信息: ``` GET /_snapshot/_status ``` ``` 在這種格式,此命令將返回當前運行的所有快照的信息。通過指定倉庫的名字可以限制返回特定倉庫的快照信息: ``` ``` GET /_snapshot/my_backup/_status ``` ``` 如果同時指定倉庫名稱和快照ID,此命令將返回指定快照的狀態信息,即使它當前不是正在運行: ``` ``` GET /_snapshot/my_backup/snapshot_1/_status ``` ``` 多個ID也被支持: ``` ``` GET /_snapshot/my_backup/snapshot_1,snapshot_2/_status ``` ## 監控快照/還原進度 有幾種方法可以用來監測快照創建與還原正在運行時的執行進度。在創建快照與還原時指定`wait_for_completion`參數來阻塞客戶端,直到操作完成,這是一個可以用來收到操作完成通知的最簡單方法。 快照操作還可以通過定期獲取快照信息來監測: ``` GET /_snapshot/my_backup/snapshot_1 ``` 請注意,獲取快照信息操作與創建快照操作使用相同的資源和線程池,因此在執行獲取快照信息時如果創建快照的線程正在備份大的分片,可能導致在返回結果前等待可用的資源。在非常大的分片備份情況中等待的時間更明顯。 為了獲得更多的直接和完整的信息,可以用快照的status命令來查看: ``` GET /_snapshot/my_backup/snapshot_1/_status ``` ``` 快照信息指令僅返回正在進行的快照的基本信息,快照狀態指令將返回當前參與備份的每個分片的完成狀態。 ``` 還原過程是基于Elasticsearch標準恢復機制,因此標準的恢復監控服務可以用來監視還原的狀態。當執行集群還原操作時通常會進入`red`狀態,這是因為還原操作是從“恢復”被還原的索引的主片開始的。在此操作期間主片變得不可用,這表現在集群狀態為`red`。一旦Elasticsearch主片被切換到恢復完成時,這時整個集群的狀態將被切換成`yellow`并且開始創建所需數量的副本。一旦創建了所有必需的副本,集群切換到`green`狀態。 集群的健康情況只是在還原過程中提供了一個比較粗的狀態,你還可以通過使用[indices recovery](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-recovery.html)與[cat recovery](https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-recovery.html)?的API來獲得更詳細的恢復過程信息與索引的當前狀態信息。 ## 停止當前正在運行的快照和還原操作 快照和還原框架只允許在同一個時間點只運行一個快照或一個還原操作。如果當前正在運行的快照被錯誤執行,或執行時間特別長,可以使用刪除快照操作來終止它。刪除快照操作將檢查當前快照是否正在運行,如果確實如此,刪除操作將停止該快照并從倉庫中刪除之前的快照數據 ``` DELETE /_snapshot/my_backup/snapshot_1 ``` ``` 還原操作使用標準分片恢復機制。因此,任何當前正在運行的還原操作都可以通過刪除正在還原的索引來取消。請注意,所有被刪除的索引數據都將從集群中通過這一操作全部刪除。 ``` ## 快照和還原操作對集群阻塞的影響 許多快照與還原操作都會給集群和索引的阻塞帶來影響。例如,創建和刪除倉庫需要寫全局元數據。創建快照操作要求所有索引及其元數據、以及全局元數據是可讀的。還原操作需要全局元數據可寫。但索引級別的阻塞在還原過程中可以忽略,因為索引的還原本質上是新建索引。請注意,倉庫內容不是群集的一部分,因此集群阻塞不會影響倉庫內部的操作,譬如在一個已創建的倉庫中獲取快照列表或刪除快照。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看