Share via


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 nodetooly 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

Pasos siguientes