Backups são recursos incríveis, especialmente quando trabalham com ambientes críticos de dados. No Apache Cassandra, podemos criar backups de dados do banco de dados armazenados como arquivos sstable. Você pode usar os arquivos de backup para restaurar o banco de dados no caso de perda de dados, nó ou falha de partição. Os backups também podem ser usados para replicar o banco de dados em outra máquina, removendo a necessidade de recriar a estrutura do zero.
Cassandra suporta dois tipos principais de backups:
Neste tutorial, nos concentraremos em backups de instantâneos. Primeiro, aprendemos como podemos inicializar e criar os backups do banco de dados armazenados em um cluster Apache Cassandra.
Vamos mergulhar.
O que são instantâneos?
No contexto de um cluster Apache Cassandra, um instantâneo refere -se a uma cópia dos arquivos sstable de uma tabela em um horário específico. A tabela Sstable ou String Strings é um formato de arquivo que Apache Cassandra usa para armazenar os dados da memória em memitáveis para acesso rápido. Os arquivos sstable são imutáveis e são removidos ou mesclados com novos arquivos sstable, à medida que os dados mudam.
Instantâneos em Cassandra podem ser emitidos manualmente pelo usuário ou automatizados, ativando o recurso nos arquivos de configuração.
Configurando uma amostra de dados para ilustrar os instantâneos em Cassandra
Antes de ilustrar como executar os instantâneos em Cassandra, vamos criar alguns dados de amostra para demonstrar como criar instantâneos.
Vamos começar criando um instantâneo.
Cassandra@cqlsh> Criar instantâneo de chaves
… Com replicação = 'classe': 'símersratégio', 'replicação_factor': 1;
A consulta anterior cria um espaço de chave com o fator de replicação do SimpleSTrategy and Replicação de 1.
Podemos então mudar para esse espaço de chave e criar duas tabelas:
Cassandra@cqlsh> Use instantânea;
Em seguida, crie uma tabela de usuários da seguinte maneira:
Cassandra@cqlsh: snapshotting> Criar usuários de tabela (
… eu não fiz,
… Texto do nome de usuário,
… Texto do e -mail,
… Chave primária (ID)
…);
Também podemos criar outra tabela chamada com uma estrutura semelhante:
Cassandra@cqlsh: snapshotting> crie tabela users_copy (
… eu não fiz,
… Texto do nome de usuário,
… Texto do e -mail,
… Chave primária (ID)
…);
Finalmente, podemos adicionar alguns dados de amostra à tabela, como mostrado:
Inserir em usuários (ID, nome de usuário, email) valores (0, 'nome de usuário1', '[email protected] ');
Insira nos usuários (ID, nome de usuário, email) valores (1, 'userName2', '[email protected]');
Inserir em usuários_copy (id, nome de usuário, email) valores (0, 'userName1', '[email protected] ');
Inserir em usuários_copy (id, nome de usuário, email) valores (1, 'userName2', '[email protected]');
Podemos então consultar as mesas da seguinte forma:
Cassandra@cqlsh: snapshotting> selecione * de usuários;
Cassandra@cqlsh: snapshotting> selecione * de usuários_copy;
Saída:
Configure o cluster Cassandra para instantâneos
Antes de criar instantâneos, é bom garantir que a criação automática de instantâneos seja desativada. Edite o Cassandra.Arquivo YML e defina o seguinte valor:
auto_snapshot: false
Também é recomendável desativar a compactação automática antes da criação de instantâneos. No Cassandra.Arquivo YML, defina o seguinte valor:
snapshot_before_compaction: false
Depois que as configurações dadas estiverem prontas, reinicie seu cluster Cassandra para aplicar as alterações.
Tirando instantâneos de todas as teclas
Ao criar instantâneos manualmente em Cassandra, usamos o comando NodeTool. Você pode executar o seguinte comando:
$ NodeTool Help Snapshot
Para visualizar as opções de comando disponíveis.
Para tirar um instantâneo de todas as teclas do cluster Cassandra, podemos executar o seguinte comando:
$ Snapshot Snapshot
O comando deve retornar uma mensagem como mostrado:
Por padrão, Cassandra cria um instantâneo com o nome do registro de data e hora atual.
Para especificar o nome do instantâneo, você pode usar a opção -t, conforme mostrado no seguinte comando:
$ backups de instantâneos de nodetool
Isso cria um instantâneo de todas as teclas do cluster e armazenam -o no diretório de backups.
Tirando um instantâneo de um único espaço de chave
Você também pode fazer um backup de um único espaço de chave no cluster especificando o nome da chave. Por exemplo, para tirar um instantâneo do espaço de tecla instantânea que criamos anteriormente, podemos executar o seguinte comando:
$ Snapshot Snapshot -t Snapshotting_backup Snapshotting
Cassandra cria um diretório de instantâneos para cada tabela no espaço especificado. Por exemplo, como o espaço de "instantâneo" contém duas tabelas, Cassandra cria um diretório de instantâneos para cada.
Por padrão, o Cassandra armazena os instantâneos no/var/lib/cassandra/diretório de dados.
$ ls -la/var/lib/cassandra/data/snapshotting/
Você deve ver os diretórios de cada tabela no espaço.
Dentro de cada arquivo, você encontrará os outros arquivos e diretórios como mostrado:
Tirando um instantâneo de uma única tabela dentro de um espaço de chave
Às vezes, você pode querer tirar um instantâneo de uma tabela específica dentro de um determinado espaço de chave. Para isso, você pode usar a opção -Table seguida pelo nome da tabela que deseja fazer backup.
Por exemplo, para tirar um instantâneo da tabela de usuários_copy no espaço "Snapshotting", podemos executar o seguinte comando:
$ Snapshot Snapshot -Table Users_copy -t UC_SNAP Snapshotting
O comando cria um instantâneo da tabela de usuários_copy e armazená -lo no diretório UC_SNAP.
Listando instantâneos
Para visualizar os instantâneos disponíveis no cluster, use o comando listsnapshot, como mostrado:
$ nodeTool listsnapshots
Você deve obter uma lista de todos os instantâneos e detalhes disponíveis, como o nome do instantâneo, ao qual a chave que eles pertencem, o nome da família da coluna, o tamanho do disco e o tamanho real.
Detalhes do instantâneo:
Nome do nome do instantâneo Nome da coluna Nome da família Tamanho True Tamanho no disco
UC_SNAP Snapshotting Users_copy 0 bytes 5.87 Kib
1661397218984 System_schema colunas 0 bytes 12.51 KIB
1661397218984 System_schema Tipos 0 bytes 15.03 Kib
1661397218984 ÍNDICES SYSTEM_SCHEMA 0 bytes 15.15 Kib
1661397218984 System_schema Keyspaces 0 Bytes 5.81 Kib
1661397218984 System_schema derrubado_columns 0 bytes 15.63 Kib
1661397218984 System_schema agregados 0 bytes 15.4 Kib
1661397218984 System_schema aciona 0 bytes 15.15 Kib
1661397218984 System_schema Tabelas 0 bytes 10.27 Kib
1661397218984 Usuários de instantâneo 0 bytes 5.86 Kib
1661397218984 Snapshotting Users_copy 0 bytes 5.87 Kib
Snapshotting_backup Snapshotting Usuários 0 bytes 5.86 Kib
Snapshotting_backup Snapshotting Users_copy 0 bytes 5.87 Kib
Backups Snapshotting Usuários 0 bytes 5.86 Kib
backups instantâneos users_copy 0 bytes 5.87 Kib
1661397899477 Snapshotting Users_copy 0 bytes 5.87 Kib
Total TruediskSpaceUsed: 0 bytes
Conclusão
Neste artigo, você aprendeu como o instantâneo funciona em Apache Cassandra. Você também aprendeu a tirar instantâneos de teclas, tabelas específicas dentro de um espaço de chave e mais.
Obrigado pela leitura!