Инструменты администрирования
RethinkDB предоставляет веб-интерфейс, который позволяет управлять вашим полным серверным кластером, от управления фрагментацией и репликацией до запуска запросов ReQL (на JavaScript) с поддержкой редактирования и истории. Кроме того, вы можете выполнять задачи администрирования с помощью управляемых скриптами команд ReQL.
Веб-интерфейс
После запуска RethinkDB вы можете подключиться к нему по адресу http://localhost:8080, предполагая, что вы сохранили порт по умолчанию (8080) и он работает на вашем локальном компьютере.
По умолчанию RethinkDB привязывает веб-интерфейс к localhost по соображениям безопасности. Если вам необходимо получить к нему доступ с другого сервера, используйте параметр --bind all при запуске RethinkDB. Прочитайте, как Запустить сервер RethinkDB и Запустить RethinkDB при запуске системы.
Команды администрирования ReQL
После установки соответствующего драйвера клиента вы можете использовать поддерживаемый язык для выполнения всех задач администрирования, либо из REPL языка, либо в качестве скрипта. Существуют команды ReQL для настройки фрагментации и репликации, перебалансировки фрагментов и многое другое. Кроме того, вы можете запросить системные таблицы, чтобы получить информацию о вашем кластере и изменить многие из его операционных характеристик.
Эти примеры используют Python, но аналогичная функциональность есть в Ruby и любом другом языке сценариев с драйвером RethinkDB, обновленным до версии 1.16 или более поздней. Прочитайте документацию API для получения дополнительной информации о конкретных командах вместе с описаниями их возвращаемых значений.
Использование REPL
Загрузите python (или ipython) и настройте соединение с вашей базой данных:
from rethinkdb import RethinkDB
r = RethinkDB()
r.connect('localhost', 28015).repl()
Теперь вы можете использовать команды ReQL для запроса системных таблиц и выполнения команд переконфигурации. Для возврата статуса сервера вы можете запросить таблицу server_status в специальной базе данных rethinkdb.
list(r.db('rethinkdb').table('server_status').run())
[{u'network': { u'canonical_addresses': [{u'host': u'127.0.0.1', u'port':
29015}, {u'host': u'::1', u'port': 29015}], u'http_admin_port': 8080,
u'hostname': u'companion-cube', u'cluster_port': 29015, u'reql_port': 28015,
u'time_connected': datetime.datetime(2015, 06, 12, 22, 43, 56, 651000,
tzinfo=<rethinkdb.ast.RqlTzinfo object at 0x10c13d1d0>)}, u'process': {
u'version': u'rethinkdb 2.1.0-xxx (CLANG 3.4 (tags/RELEASE_34/final))',
u'pid': 69596, u'cache_size_mb': 100, u'argv': [u'/usr/bin/rethinkdb'],
u'time_started': datetime.datetime(2015, 06, 12, 22, 43, 56, 651000,
tzinfo=<rethinkdb.ast.RqlTzinfo object at 0x10c13d1d0>)}, u'id':
u'6dbc31fe-8f78-4128-af76-cdac43bcc195', u'name': u'rethinkdb'}]
Для возврата состояния определенной таблицы вы можете использовать команду status.
r.table('superheroes').status().run()
А переконфигурация таблицы может быть выполнена с помощью команды reconfigure.
r.table('a').reconfigure(shards=2, replicas=2).run()
r.table('b').reconfigure(shards=2, replicas={'us_east':2, 'us_west':2,
'london':2}, primary_replica_tag='us_east').run()
Data Explorer в веб-интерфейсе администрирования сам по себе является JavaScript REPL с подсветкой синтаксиса и историей. (Статья о исследовании данных ReQL более подробно описывает, как использовать Data Explorer.) Преимущество языков сценариев с ReQL проявляется при написании административных скриптов.
Скриптинг ReQL
Используя ReQL с языком, таким как Python, становится легко создавать скрипты для задач администрирования и конфигурации с помощью RethinkDB. Если у вас есть сложные конфигурации таблиц, которые могут потребоваться повторять для новых таблиц или изменять для всей базы данных, вы можете сохранить их в скрипте.
from rethinkdb import RethinkDB
r = RethinkDB()
conn = r.connect('localhost', 28015)
# Configure the entire database
r.db('database').reconfigure(shards=2, replicas=3).run(conn)
# Configure a set of specific tables
tables = ['users', 'posts', 'comments']
for table in tables:
r.table(table).reconfigure(shards=3, replicas=2).run(conn)
# Configure all tables that are not related to logging
tables = [t for t in r.table_list().run() if 'log_' not in t]
for table in tables:
r.table(table).reconfigure(shards=2, replicas=3).run(conn)
# Retrieve the current configuration of all the tables
# This uses the table_config system table
configs = r.db('rethinkdb').table('table_config').run()
# Restore the configuration of tables saved in 'configs'
for config in configs:
r.db('rethinkdb').table('table_config').get(
config['id']).update(config).run(conn)
Скриптинг также является единственным способом доступа к некоторым расширенным функциям, таким как теги сервера, которые позволяют группировать серверы вместе для целей репликации (например, связывание их с физическими центрами данных). Для получения дополнительной информации прочитайте раздел «Расширенная настройка» в Фрагментация и репликация.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/docs/administration-tools/