Compartilhar via


Comandos DBA para a Instância Gerenciada do Azure para Apache Cassandra

A Instância Gerenciada do Azure para Apache Cassandra é um serviço totalmente gerenciado para clusters puros de código aberto do Apache Cassandra. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho. Esse recurso permite a máxima flexibilidade e controle quando necessário. Este artigo descreve como executar comandos DBA (administrador de banco de dados) manualmente quando necessário.

Importante

Os nodetool comandos e os sstable comandos estão em versão prévia pública.

Esse recurso é fornecido sem um SLA (contrato de nível de serviço). Não recomendamos esse recurso para cargas de trabalho de produção. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Suporte a comandos DBA

Com a Instância Gerenciada do Azure para Apache Cassandra, você pode executar nodetool e sstable comandos usando a CLI do Azure para administração de rotina do DBA. Nem todos os comandos têm suporte e há algumas limitações. Para obter comandos com suporte, consulte as seções a seguir.

Aviso

Alguns desses comandos podem desestabilizar o cluster cassandra. Use apenas esses comandos com cuidado e após o teste em ambientes de não produção. Sempre que possível, implante uma --dry-run opção primeiro. A Microsoft não oferece nenhum SLA ou suporte a problemas que surgem da execução de comandos que alteram a configuração ou tabelas de banco de dados padrão.

Executar um comando nodetool

A Instância Gerenciada do Azure para Apache Cassandra oferece o seguinte comando da CLI do Azure para executar comandos DBA:

az managed-cassandra cluster invoke-command --resource-group <rg> \
  --cluster-name <cluster> --host <ip of data node> --command-name nodetool \
  --arguments "<nodetool-subcommand>"="" "paramerter1"="" 

O subcomando precisa estar na --arguments seção com um valor vazio. Os nodetool flags sem um valor estão no formato <flag>"=". Se o sinalizador tiver um valor, ele é no formato <flag>"="value.

Este exemplo mostra como executar um nodetool comando sem sinalizadores. Nesse caso, é o nodetool status comando:

az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> \
  --host <ip of data node> --command-name nodetool --arguments "status"="" 

Este exemplo mostra como executar um nodetool comando com um sinalizador. Nesse caso, é o nodetool compact comando:

az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> \
  --host <ip of data node> --command-name nodetool --arguments "compact"="" "-st"="65678794" 

Ambos retornam JSON no seguinte formato:

{
    "commandErrorOutput": "",
    "commandOutput": "<result>",
    "exitCode": 0
}

Na maioria dos casos, você precisa apenas commandOutput ou exitCode. Este exemplo mostra como obter apenas commandOutput:

az managed-cassandra cluster invoke-command --query "commandOutput" --resource-group $resourceGroupName \
  --cluster-name $clusterName --host $host --command-name nodetool --arguments getstreamthroughput=""

Executar um comando sstable

Os comandos sstable exigem acesso de leitura/gravação ao diretório de dados do Cassandra e que o banco de dados do Cassandra seja interrompido. Para acomodar esse requisito, especifique estes dois parâmetros: --cassandra-stop-start true e --readwrite true.

az managed-cassandra cluster invoke-command --resource-group <test-rg> \
  --cluster-name <test-cluster> --host <ip> --cassandra-stop-start true --readwrite true \
  --command-name sstableutil --arguments "system"="peers"
{
"commandErrorOutput": "",
"commandOutput": "Listing files...\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-CompressionInfo.db\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-Data.db\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-Digest.crc32\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-Filter.db\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-Index.db\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-Statistics.db\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-Summary.db\n/var/lib/cassandra/data/system/peers-37f71aca7dc2383ba70672528af04d4f/me-1-big-TOC.txt\n",
"exitCode": 0
}

Executar outros comandos

O cassandra-reset-password comando permite que um usuário altere a senha do Cassandra.

az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> \
  --host <ip of data node> --command-name cassandra-reset-password --arguments password="<password>"

A senha é codificada em URL (UTF-8) neste comando, o que significa que as seguintes regras se aplicam:

  • Os caracteres alfanuméricos de a até z, de A até Z, e de 0 até 9 permanecem os mesmos.
  • Os caracteres .especiais, -*e _ permanecem os mesmos.
  • O caractere de espaço é convertido em um sinal de mais (+).
  • Todos os outros caracteres não são seguros e são convertidos primeiro em um ou mais bytes usando algum esquema de codificação. A cadeia %xy de caracteres de três caracteres representa cada byte, onde xy está a representação hexadecimal de dois dígitos do byte.

O comando cassandra-reset-auth-replication permite que um usuário altere seu esquema para o usuário do Cassandra. Separe os nomes dos datacenters por espaço.

az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> \
  --host <ip of data node> --command-name cassandra-reset-auth-replication \
  --arguments password="<datacenters>"

Os datacenters são codificados em URL (UTF-8) quando são passados para esse comando, o que significa que as seguintes regras se aplicam:

  • Os caracteres alfanuméricos de a até z, de A até Z, e de 0 até 9 permanecem os mesmos.
  • Os caracteres .especiais, -*e _ permanecem os mesmos.
  • O caractere de espaço é convertido em um sinal de adição (+).
  • Todos os outros caracteres não são seguros e são convertidos primeiro em um ou mais bytes usando algum esquema de codificação. A cadeia %xy de caracteres de três caracteres representa cada byte, onde xy está a representação hexadecimal de dois dígitos do byte.

O sstable-tree comando deixa um usuário ver suas SSTables.

az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> \
  --host <ip of data node> --command-name sstable-tree

O comando sstable-delete permite que um usuário exclua suas SSTables que foram feitas antes de um determinado tempo.

az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> \
  --host <ip of data node> --command-name sstable-delete --arguments datetime="<YYYY-MM-DD hh:mm:ss>"

O datetime argumento deve ser formatado conforme mostrado no exemplo. Você também pode adicionar --dry-run="" como um argumento para ver quais arquivos o comando exclui.

Lista de comandos com suporte para sstable

Para obter mais informações sobre cada comando, consulte as ferramentas do SSTable.

  • sstableverify
  • sstablescrub
  • sstablemetadata
  • sstablelevelreset
  • sstableutil
  • sstablesplit
  • sstablerepairedset
  • sstableofflinerelevel
  • sstableexpiredblockers

Lista de comandos nodetool com suporte

Para obter mais informações sobre cada comando, consulte Usar nodetool.

  • status
  • cleanup
  • clearsnapshot
  • compact
  • compactionhistory
  • compactionstats
  • describecluster
  • describering
  • disableautocompaction
  • disablehandoff
  • disablehintsfordc
  • drain
  • enableautocompaction
  • enablehandoff
  • enablehintsfordc
  • failuredetector
  • flush
  • garbagecollect
  • gcstats
  • getcompactionthreshold
  • getcompactionthroughput
  • getconcurrentcompactors
  • getendpoints
  • getinterdcstreamthroughput
  • getlogginglevels
  • getsstables
  • getstreamthroughput
  • gettimeout
  • gettraceprobability
  • gossipinfo
  • info
  • invalidatecountercache
  • invalidatekeycache
  • invalidaterowcache
  • listsnapshots
  • netstats
  • pausehandoff
  • proxyhistograms
  • rangekeysample
  • rebuild
  • rebuild_index: para argumentos, use "keyspace"="table indexname...".
  • refresh
  • refreshsizeestimates
  • reloadlocalschema
  • replaybatchlog
  • resetlocalschema
  • resumehandoff
  • ring
  • scrub
  • setcachecapacity: para argumentos, use "key-cache-capacity" = "<row-cache-capacity> <counter-cache-capacity>".
  • setcachekeystosave: para argumentos, use "key-cache-keys-to-save":"<row-cache-keys-to-save> <counter-cache-keys-to-save>".
  • setcompactionthreshold: para argumentos, use "<keyspace>"="<table> <minthreshold> <maxthreshold>.
  • setcompactionthroughput
  • setconcurrentcompactors
  • sethintedhandoffthrottlekb
  • setinterdcstreamthroughput
  • setstreamthroughput
  • settimeout
  • settraceprobability
  • statusbackup
  • statusbinary
  • statusgossip
  • statushandoff
  • stop
  • tablehistograms
  • tablestats
  • toppartitions
  • tpstats
  • truncatehints
  • verify
  • version
  • viewbuildstatus