Поделиться через


Команды DBA для Azure Управляемый экземпляр для Apache Cassandra

Azure Управляемый экземпляр для Apache Cassandra — это полностью управляемая служба для чистых кластеров Apache Cassandra с открытым кодом. Служба также позволяет переопределить конфигурации в зависимости от конкретных потребностей каждой рабочей нагрузки. Эта функция обеспечивает максимальную гибкость и контроль, где это необходимо. В этой статье описывается, как запускать команды администратора базы данных (DBA) вручную при необходимости.

Внимание

Команды nodetool и sstable находятся в общедоступном предварительном просмотре.

Эта функция предоставляется без соглашения об уровне обслуживания (SLA). Мы не рекомендуем использовать эту возможность для производственных рабочих нагрузок. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Поддержка команд DBA

С помощью Управляемого экземпляра Azure для Apache Cassandra можно выполнять команды nodetool и sstable с помощью Azure CLI для обычного администрирования DBA. Не все команды поддерживаются и существуют некоторые ограничения. Поддерживаемые команды см. в следующих разделах.

Предупреждение

Некоторые из этих команд могут дестабилизировать кластер Cassandra. Используйте эти команды тщательно и после тестирования в непроизводственных средах. По возможности сначала разверните --dry-run опцию. Корпорация Майкрософт не предлагает соглашения об уровне обслуживания или поддержку по проблемам, возникающим при выполнении команд, которые изменяют конфигурацию базы данных по умолчанию или таблицы.

Выполнение команды nodetool

Azure Управляемый экземпляр для Apache Cassandra предоставляет следующую команду Azure CLI для выполнения команд 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"="" 

Подкоманда должна находиться в --arguments разделе с пустым значением. Флаги nodetool без значения находятся в форме <flag>"=". Если флаг имеет значение, он находится в форме <flag>"="value.

В этом примере показано, как выполнить nodetool команду без флагов. В этом случае это nodetool status команда:

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

В этом примере показано, как выполнить nodetool команду с флагом. В этом случае это 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" 

Оба возвращают JSON в следующей форме:

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

В большинстве случаев требуется только commandOutput или exitCode. В этом примере показано, как получить только commandOutput:

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

Выполнение команды sstable

Для sstable команд требуется доступ на чтение и запись к каталогу данных Cassandra и базе данных Cassandra. Чтобы обеспечить это требование, укажите следующие два параметра: --cassandra-stop-start true и --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
}

Выполнение других команд

Команда cassandra-reset-password позволяет пользователю изменить пароль для 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>"

Пароль закодирован (UTF-8) в этой команде, что означает, что применяются следующие правила:

  • Буквенно-цифровые символы a через z, A через Z, и 0 через 9 остаются неизменными.
  • Специальные символы ., -*и _ остаются неизменными.
  • Символ пробела преобразуется в знак плюса (+).
  • Все остальные символы небезопасны и сначала преобразуются в одну или несколько байт с помощью некоторой схемы кодирования. Строка %xy с тремя символами представляет каждый байт, где xy представляет собой шестнадцатеричное двухзначное представление байта.

Эта cassandra-reset-auth-replication команда позволяет пользователю изменять схему для пользователя Cassandra. Разделите имена центров обработки данных по пробелам.

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

Центры обработки данных кодируются URL-адресом (UTF-8) при передаче в эту команду, что означает, что применяются следующие правила:

  • Буквенно-цифровые символы с a по z, с A по Z и с 0 по 9 остаются одинаковыми.
  • Специальные символы ., -*и _ остаются неизменными.
  • Символ пробела преобразуется в знак плюса (+).
  • Все остальные символы небезопасны и сначала преобразуются в одну или несколько байт с помощью некоторой схемы кодирования. Строка %xy с тремя символами представляет каждый байт, где xy представляет собой шестнадцатеричное двухзначное представление байта.

Команда sstable-tree позволяет пользователю просматривать свои SSTables.

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

Команда sstable-delete позволяет пользователю удалять SSTables, созданные до определенного времени.

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

Аргумент datetime должен быть отформатирован, как показано в примере. Вы также можете добавить --dry-run="" в качестве аргумента, чтобы увидеть, какие файлы команда удаляет.

Список поддерживаемых команд sstable

Дополнительные сведения о каждой команде см. в средствах SSTable.

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

Список поддерживаемых команд nodetool

Дополнительные сведения о каждой команде см. в разделе "Использование 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: для аргументов используйте "keyspace"="table indexname...".
  • refresh
  • refreshsizeestimates
  • reloadlocalschema
  • replaybatchlog
  • resetlocalschema
  • resumehandoff
  • ring
  • scrub
  • setcachecapacity: для аргументов используйте "key-cache-capacity" = "<row-cache-capacity> <counter-cache-capacity>".
  • setcachekeystosave: для аргументов используйте "key-cache-keys-to-save":"<row-cache-keys-to-save> <counter-cache-keys-to-save>".
  • setcompactionthreshold: для аргументов используйте "<keyspace>"="<table> <minthreshold> <maxthreshold>.
  • setcompactionthroughput
  • setconcurrentcompactors
  • sethintedhandoffthrottlekb
  • setinterdcstreamthroughput
  • setstreamthroughput
  • settimeout
  • settraceprobability
  • statusbackup
  • statusbinary
  • statusgossip
  • statushandoff
  • stop
  • tablehistograms
  • tablestats
  • toppartitions
  • tpstats
  • truncatehints
  • verify
  • version
  • viewbuildstatus