Faça backup dos dados de índice para o OSS e restaure-os sob demanda com snapshots manuais do Elasticsearch. Utilize esse recurso para migração de dados, recuperação pontual (point-in-time), configuração de ambientes de desenvolvimento/teste ou backups prévios a operações.
O backup e a restauração exigem o plugin elasticsearch-repository-oss, pré-instalado em todas as instâncias do Alibaba Cloud Elasticsearch e que não pode ser desinstalado.
Os snapshots armazenam apenas dados de índice, excluindo índices de monitoramento (.monitoring,.security_audit), metadados, translog, configurações, pacotes, plugins e logs. Execute todos os comandos no Kibana Dev Tools. Log on to the Kibana console .
Crie um repositório de snapshots
Um repositório de snapshots armazena os snapshots em um bucket do OSS. Prepare um bucket do OSS da classe Standard na mesma região da sua instância do Elasticsearch (Create a bucket). O usuário RAM precisa ter a política AliyunOSSFullAccess (Grant permissions to a RAM user).
Exemplo: crie um repositório chamado my_backup.
Clusters do Alibaba Cloud
PUT _snapshot/my_backup/
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
Clusters autogerenciados 8.x
Clusters autogerenciados exigem a instalação manual do plugin elasticsearch-repository-oss. Adicione o prefixo oss.client. a todos os nomes de parâmetros.
PUT /_snapshot/my_backup
{
"type": "oss",
"settings": {
"oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
"oss.client.access_key_id": "xxx",
"oss.client.secret_access_key": "xxx",
"oss.client.bucket": "xxxxxx",
"oss.client.base_path":"snapshot/",
"oss.client.compress": true
}
}
Parâmetros
|
Parâmetro |
Descrição |
|
endpoint |
Endpoint interno do bucket do OSS. Regions and endpoints. |
|
access_key_id |
AccessKey ID do usuário RAM. Obtain an AccessKey pair. |
|
secret_access_key |
AccessKey Secret do usuário RAM. Obtain an AccessKey pair. |
|
bucket |
Nome de um bucket do OSS existente. |
|
compress |
Comprime os metadados do snapshot (mapeamentos e configurações de índice). Não afeta arquivos de dados. Padrão: |
|
chunk_size |
Tamanho máximo do bloco para uploads no OSS. Arquivos que excedem esse limite são divididos em vários blocos. |
|
base_path |
Caminho de armazenamento dentro do bucket. O padrão é a raiz. Use subdiretórios para isolar snapshots por cluster ou ambiente, como |
Verifique a conectividade do repositório
POST _snapshot/my_backup/_verify
Uma resposta bem-sucedida lista todos os nós conectados ao repositório. Em caso de falha, verifique o endpoint, o nome do bucket e as permissões do usuário RAM.
Obtenha informações do repositório
# Get information about all repositories
GET _snapshot
# Get information about a specific repository
GET _snapshot/my_backup
Crie um snapshot
Snapshot de todos os índices
PUT _snapshot/my_backup/snapshot_1
Esse comando cria um snapshot chamado snapshot_1 para todos os índices abertos. A execução ocorre de forma assíncrona. Para aguardar a conclusão, adicione wait_for_completion=true:
PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
Caso não utilize esse parâmetro, execute GET _snapshot/my_backup/snapshot_1/_status para verificar o status do snapshot. Um state com valor SUCCESS indica que o snapshot foi concluído.
Antes de liberar a instância do Elasticsearch, confirme se o snapshot está completo. Caso contrário, poderá ocorrer perda de dados.
Um repositório pode conter vários snapshots. O primeiro é um backup completo; os subsequentes são incrementais e armazenam apenas os dados alterados.
Snapshot de índices específicos
PUT _snapshot/my_backup/snapshot_2
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false
}
|
Parâmetro |
Descrição |
|
indices |
Lista separada por vírgulas dos índices para backup. Aceita curingas, como |
|
ignore_unavailable |
Se definido como |
|
include_global_state |
Quando configurado como |
Informações do snapshot
# View all snapshots
GET _snapshot/my_backup/_all
# View a specific snapshot
GET _snapshot/my_backup/snapshot_1
# View the detailed status of a snapshot, including statistics for each index and shard
GET _snapshot/my_backup/snapshot_1/_status
Exclua um snapshot
DELETE _snapshot/my_backup/snapshot_1
Se houver um snapshot em andamento, esse comando interrompe o processo e remove quaisquer dados parciais criados.
Ao excluir um snapshot usando o Kibana Dev Tools ou a API DELETE _snapshot, o plugin limpa automaticamente os arquivos correspondentes no bucket do OSS. Não é necessário excluí-los manualmente pelo console do OSS.
Sempre exclua snapshots com o comando DELETE _snapshot. Não apague arquivos de snapshot diretamente pelo console do OSS ou outras ferramentas. Essa ação quebra a cadeia de backup incremental e pode corromper todos os snapshots subsequentes, tornando-os irrecuperáveis.
Restaure a partir de um snapshot
Antes de restaurar dados:
Evite restaurar índices de sistema (com prefixo
.), pois isso pode quebrar o acesso ao Kibana.Feche ou exclua qualquer índice existente com o mesmo nome no cluster de destino antes da restauração. Caso contrário, a operação falhará.
-
Para restauração entre regiões, primeiro migre os dados do snapshot no OSS para a região de destino e depois restaure-os no cluster alvo. Se a lista suspensa de instâncias estiver vazia ao criar um snapshot manual no console, o service de backup pode não estar ativado para sua conta ou estar mal configurado. Para migração de dados entre regiões, use o backup manual com replicação entre regiões do OSS:
Na região de source, como Hangzhou, crie um bucket do OSS e configure snapshots manuais do Elasticsearch para fazer backup nesse bucket.
Configure uma regra de replicação entre regiões do OSS para sincronizar os dados com um bucket na região de destino, como Shanghai. Para migração de dados do OSS, consulte Migration implementation.
Crie uma nova instância do Elasticsearch na região de destino.
Na instância do Elasticsearch de destino, registre um repositório de snapshots apontando para o bucket do OSS nessa região e restaure o snapshot.
Crie um repositório no cluster de destino
Crie um repositório no cluster de destino apontando para o local de backup no OSS. Utilize os mesmos parâmetros descritos em Create a snapshot repository.
PUT _snapshot/my_backup_restore/
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
Restaure um índice específico
Restaure e renomeie um índice para evitar conflitos de nomes:
POST /_snapshot/my_backup_restore/snapshot_1/_restore
{
"indices": "index_1",
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
|
Parâmetro |
Descrição |
|
indices |
Índice a ser restaurado do snapshot. Todos os outros índices serão ignorados. |
|
rename_pattern |
Padrão regex correspondente aos nomes dos índices a serem restaurados. |
|
rename_replacement |
Padrão de substituição para índices renomeados. Suporta referências a grupos de captura. |
Restaure índices que não sejam de sistema
POST _snapshot/my_backup_restore/snapshot_1/_restore
{"indices": "*,-.monitoring*,-.security*,-.kibana*,-.internal.alerts*,-.alerts*","ignore_unavailable": true}
Esse padrão de exclusão cobre índices de sistema comuns. Outras versões podem incluir adicionais, como.ds-ilm-history-*e.slo-*. Ajuste conforme seu cluster. Para a versão 8.x, exclua também índices de suporte a data streams adicionando-.ds*.
Restaure todos os índices
POST _snapshot/my_backup_restore/snapshot_1/_restore
A API _restore executa de forma assíncrona. Para aguardar a conclusão, adicione wait_for_completion=true:
POST _snapshot/my_backup_restore/snapshot_1/_restore?wait_for_completion=true
Restaure para o Indexing Service
Ao restaurar para uma instância do Indexing Service, use ignore_index_settings para ignorar configurações incompatíveis:
POST /_snapshot/my_backup_restore/snapshot_1/_restore
{
"indices": "index_1",
"ignore_index_settings": [
"index.apack.cube.following_index"
]
}
Status da restauração do snapshot
Monitore o progresso da restauração com a API _recovery.
# Check the restoration status of a specific index
GET restored_index_1/_recovery
# Check restoration status for all indexes (may include unrelated shards)
GET /_recovery/
Principais campos de saída:
|
Campo |
Descrição |
|
type |
Tipo de recuperação. O valor |
|
source |
Repositório e snapshot de source. |
|
percent |
Porcentagem de progresso da restauração. |
Cancele a restauração
Cancele uma restauração excluindo o índice de destino:
DELETE /restored_index_3
Essa ação interrompe a restauração e exclui todos os dados já restaurados para esse índice.
Perguntas frequentes
Quanto tempo leva para fazer backup de uma grande quantidade de dados no OSS e qual é o custo?
Estimativa de tempo: Como referência, o backup de aproximadamente 80 GB de dados leva cerca de 30 minutos. O tempo real depende do volume de dados e da largura de banda da instância. Para acelerar o processo, aumente o parâmetro
chunk_sizeao criar o repositório de snapshots ou faça upgrade da largura de banda da instância.Estimativa de custo: Armazenar dados de backup no OSS gera taxas de armazenamento e tráfego do OSS. O custo efetivo varia conforme o volume de dados e o tipo de armazenamento escolhido.
O que fazer se um snapshot falhar ou um índice não puder ser excluído?
-
Solucione falhas de snapshot:
Se o snapshot falhar com
QpsLimitExceeded, o limitador de QPS do OSS foi acionado. Reiniciar o nó não resolve esse problema. Reagende o backup para horários de baixa demanda, como entre 03:00 e 04:00, ou contate o suporte do OSS para aumentar o limite.Caso a falha ocorra devido à pressão de memória do nó ou coleta de lixo (GC), reinicie o nó para liberar memória em cache e tente criar o snapshot novamente.
-
Excluir um índice envolvido em um snapshot: Não é possível excluir diretamente um índice que esteja sendo processado em um snapshot. Antes da exclusão, execute o comando abaixo para visualizar o status:
GET _snapshot/_statusNa resposta, verifique a lista
indicesde cada snapshot cujostatesejaSTARTED. Os índices listados estão em processo de backup. Aguarde a conclusão do snapshot ou cancele-o antes de excluir o índice. É seguro excluir um índice que não aparece na listaindicesde nenhum snapshot comstateigual aSTARTED.