Spec-Zone.ru › RethinkDB python

Инструменты администрирования

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API