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