Comandos DBA para Azure Managed Instance for Apache Cassandra
Azure Managed Instance para Apache Cassandra es un servicio totalmente administrado para clústeres de Apache Cassandra de código abierto puros. El servicio también permite invalidar las configuraciones, en función de las necesidades específicas de cada carga de trabajo, lo que permite la máxima flexibilidad y control cuando sea necesario. En este artículo se describe cómo ejecutar comandos DBA manualmente cuando surge la necesidad.
Importante
Los comandos nodetool y sstable están en versión preliminar pública. Esta característica se ofrece sin contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
Compatibilidad con comandos DBA
Azure Managed Instance for Apache Cassandra permite ejecutar los comandos nodetool
y sstable
mediante la CLI de Azure para la administración rutinaria de DBA. No se admiten todos los comandos y hay algunas limitaciones. Para ver los comandos admitidos, consulte las secciones siguientes.
Advertencia
Algunos de estos comandos pueden desestabilizar el clúster de Cassandra y solo deben ejecutarse cuidadosamente y después de probarse en entornos que no son de producción. Siempre que sea posible, primero se debe implementar una opción --dry-run
. Microsoft no puede ofrecer ningún Acuerdo de nivel de servicio ni soporte técnico en los problemas con la ejecución de comandos que modifican la configuración predeterminada de la base de datos y/o las tablas.
Procedimiento para ejecutar un comando nodetool
Azure Managed Instance for Apache Cassandra proporciona el siguiente comando de CLI de Azure para ejecutar 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"=""
El subcomando concreto debe estar en la sección --arguments
con un valor vacío. Nodetool
las marcas sin valor tienen el formato: "<flag>"=""
. Si la marca tiene un valor, tiene el formato : "<flag>"="value"
.
Este es un ejemplo de cómo ejecutar un comando nodetool
sin marcas, en este caso el 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"=""
Este es un ejemplo de cómo ejecutar un comando nodetool
sin marcas, en este caso el 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 devolverán un json con el siguiente formato:
{
"commandErrorOutput": "",
"commandOutput": "<result>",
"exitCode": 0
}
En la mayoría de los casos, es posible que solo necesites commandOutput o exitCode. Este es un ejemplo para obtener solo el commandOutput:
az managed-cassandra cluster invoke-command --query "commandOutput" --resource-group $resourceGroupName --cluster-name $clusterName --host $host --command-name nodetool --arguments getstreamthroughput=""
Procedimiento para ejecutar un comando sstable
Los comandos sstable
requieren acceso de lectura y escritura al directorio de datos de Cassandra y a la base de datos de Cassandra que se va a detener. Para adaptarse a esto, deben proporcionarse dos parámetros --cassandra-stop-start true
y --readwrite true
adicionales:
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
}
Ejecución de otros comandos
El comando cassandra-reset-password
permite al usuario cambiar su contraseña para el usuario de 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
La contraseña tiene codificación URL (UTF-8) cuando se pasa a este comando, lo que significa que se aplican las siguientes reglas:
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.
El comando cassandra-reset-auth-replication
permite al usuario cambiar su esquema para el usuario de Cassandra. Separe los nombres del centro de datos por espacio.
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
Los centros de datos tienen codificación URL (UTF-8) cuando se pasan a este comando, lo que significa que se aplican las reglas siguientes:
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.
El comando sstable-tree
permite a un usuario ver sus inestables.
az managed-cassandra cluster invoke-command --resource-group <rg> --cluster-name <cluster> --host <ip of data node> --command-name sstable-tree
El comando sstable-delete
permite que un usuario elimine sus inestables realizados antes de un tiempo determinado.
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>"
El argumento Datetime debe tener el formato como se muestra anteriormente. También puede agregar --dry-run="" como argumento para ver qué archivos se eliminarán.
Lista de comandos sstable
admitidos
Para obtener más información acerca de cada comando, consulte https://cassandra.apache.org/doc/latest/cassandra/tools/sstable/index.html
sstableverify
sstablescrub
sstablemetadata
sstablelevelreset
sstableutil
sstablesplit
sstablerepairedset
sstableofflinerelevel
sstableexpiredblockers
Lista de comandos nodetool
admitidos
Para obtener más información acerca de cada comando, consulte 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 el uso de argumentos"keyspace"="table indexname..."
refresh
refreshsizeestimates
reloadlocalschema
replaybatchlog
resetlocalschema
resumehandoff
ring
scrub
setcachecapacity
- para el uso de argumentos"key-cache-capacity" = "<row-cache-capacity> <counter-cache-capacity>"
setcachekeystosave
- para el uso de argumentos"key-cache-keys-to-save":"<row-cache-keys-to-save> <counter-cache-keys-to-save>"
setcompactionthreshold
- para el uso de argumentos"<keyspace>"="<table> <minthreshold> <maxthreshold>
setcompactionthroughput
setconcurrentcompactors
sethintedhandoffthrottlekb
setinterdcstreamthroughput
setstreamthroughput
settimeout
settraceprobability
statusbackup
statusbinary
statusgossip
statushandoff
stop
tablehistograms
tablestats
toppartitions
tpstats
truncatehints
verify
version
viewbuildstatus