Compartilhar via


Comandos do 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 do Apache Cassandra apenas de código aberto. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho, permitindo o máximo de flexibilidade e controle quando necessário. Este artigo descreve como executar os comandos de DBA manualmente quando necessário.

Importante

Os comandos nodetool e sstable estão em versão prévia pública. Esse recurso é fornecido sem um Contrato de Nível de Serviço e não é recomendado 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

A Instância Gerenciada do Azure para Apache Cassandra permite que você execute os comandos nodetool e sstable por meio da CLI do Azure para a administração de rotina do DBA. Nem todos os comandos têm suporte e há algumas limitações. Para comandos com suporte, confira as seções abaixo.

Aviso

Alguns desses comandos podem desestabilizar o cluster Cassandra e só devem ser executados com cuidado e depois de serem testados em ambientes de não produção. Sempre que possível, uma opção --dry-run deve ser implantada primeiro. A Microsoft não pode oferecer nenhum SLA ou suporte para problemas com a execução de comandos que alteram a configuração padrão de banco de dados e/ou tabelas.

Como 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 específico precisa estar na seção --arguments com um valor vazio. Nodetool sinalizadores sem um valor estão no formato: "<flag>"="". Se o sinalizador tiver um valor, ele estará no formato: "<flag>"="value".

Veja um exemplo de como executar um comando nodetool sem sinalizadores, nesse caso, o comando nodetool status:

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

Veja um exemplo de como executar um comando nodetool com um sinalizador, nesse caso, o comando nodetool compact:

    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 retornarão um json do seguinte formato:

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

Na maioria dos casos, talvez você precise apenas do commandOutput ou do exitCode. Este é um exemplo da obtenção apenas do commandOutput:

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

Como 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 conseguir isso, dois parâmetros extras, --cassandra-stop-start true e --readwrite true, precisam ser fornecidos:

    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
    }

Como executar outros comandos

O comando cassandra-reset-password permite que um usuário altere sua senha para o usuário 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>"

Importante

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

  • The alphanumeric characters "a" through "z", "A" through "Z" and "0" through "9" remain the same.
  • The special characters ".", "-", "*", and "_" remain the same.
  • The space character " " is converted into a plus sign "+".
  • All other characters are unsafe and are first converted into one or more bytes using some encoding scheme. Then each byte is represented by the 3-character string "%xy", where xy is the two-digit hexadecimal representation of the 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>"

Importante

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

  • The alphanumeric characters "a" through "z", "A" through "Z" and "0" through "9" remain the same.
  • The special characters ".", "-", "*", and "_" remain the same.
  • The space character " " is converted into a plus sign "+".
  • All other characters are unsafe and are first converted into one or more bytes using some encoding scheme. Then each byte is represented by the 3-character string "%xy", where xy is the two-digit hexadecimal representation of the byte.

O comando sstable-tree permite que um usuário veja 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 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 argumento datetime deve ser formatado conforme mostrado acima. Você também pode adicionar --dry-run="" como um argumento para ver quais arquivos serão excluídos.

Lista de comandos sstable com suporte

Para obter mais informações sobre cada comando, confira https://cassandra.apache.org/doc/latest/cassandra/tools/sstable/index.html.

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

Lista de comandos nodetool com suporte

Para obter mais informações sobre cada comando, confira https://cassandra.apache.org/doc/latest/cassandra/tools/nodetool/nodetool.html.

  • 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

Próximas etapas