Инcтрукция по установке Couchbase 2.1.1 Community и основы работы с ним

в 8:22, , рубрики: couchbase, nosql, Блог компании centos-admin.ru, Песочница, метки:

image

Жизнь системного администратора подкинула нового зверя на и без того тернистый путь. Потребовалось клиенту под проект в обязательном порядке использовать Couchbase.

Под катом инструкция по его установке, добавлению в кластер и балансировке данных. А вдруг кому будет полезно.

Установка Couchbase.

Устанавливаем openssl098e.

Скачиваем и устанавливаем couchbase 2.1.1

wget http://packages.couchbase.com/releases/2.1.1/couchbase-server-community_x86_64_2.1.1.rpm
rpm -Uhv couchbase-server-community_x86_64_2.1.1.rpm

В нашей компании активно используется виртуализация OpenVZ, а для нормальной работы couchbase в контейнере openvz необходим файл memsup из пакета erlang-os-mon версии не ниже 2.2.10.

Что делаем:
Останавливаем couchbase:

service couchbase-server stop

Для начала нужно скачать сам erlang, например, с официального сайта www.erlang.org/download.html
И скомпилировать нужную библиотеку, которая находится по пути lib/os_mon/priv

Затем, из lib/os_mon/priv/bin берем memsup и помещаем в каталог /opt/couchbase/lib/erlang/lib/os_mon-2.2.7/priv/bin/
Выставляем на него права:

chown bin:bin /opt/couchbase/lib/erlang/lib/os_mon-2.2.7/priv/bin/memsup
chmod a+x /opt/couchbase/lib/erlang/lib/os_mon-2.2.7/priv/bin/memsup

Запускаем сервер couchbase-server и пользуемся.
Админка по умолчанию доступна по hostname:8091/

Добавление нового сервера в кластер и балансировка данных.

Внимание!!! Перед добавлением нового сервера в кластер необходимо снять бэкап БД.

Например, так:

/opt/couchbase/bin/cbbackup -u Administrator -p PASSWORD http://localhost:8091/ /tmp/cbbackup/

Или, если нужен бэкап только одного бакета, остальные не важны:

/opt/couchbase/bin/cbbackup -u Administrator -p PASSWORD http://localhost:8091/ /tmp/cbbackup/ -b SRC_BUCKET

При добавлении нового сервера в кластер couchbase, необходимо сделать ребалансировку данных и может случиться так, что ребалансировка не проходит и в логе будет ошибка примерно такого содержания:

<0.20769.2129> exited with {unexpected_exit,
{'EXIT',<0.20785.2129>,
{badmatch,
[{'EXIT',
{{badmatch,{error,closed}},
{gen_server,call,
[<19210.18145.6>,had_backfill,30000]}}}]}}}

Вариант 1.
На hw ноде можно попробовать изменить vm.swappiness на время балансировки данных и повторно запустить ребалансировку:

sysctl -w vm.swappiness=0

Если балансировка не прошла:
Вариант 2. (Очищаем, либо удаляем бакет)

1. Смотрим через админку couchbase host:8091/ на каком бакете валится балансировка (вкладка Server Nodes и открываем сами сервера)
2. Идем на вкладку Data Bucket, открываем нужный бакет, а в нём кнопку (Edit)
3. Ищем в самом низу, рядом с кнопкой DELETE кнопку FLUSH. (Если её нет, чуть выше ставим галочку Flush-Enable.) И нажимаем FLUSH, тем самым очищаем содержимое бакета (Бэкап же у нас есть)
4. Если бакет очистился нормально, делаем снова ребалансировку. Если прошла то заливаем бакет назад.

/opt/couchbase/bin/cbrestore -u Administrator -p PASSWORD /tmp/cbbackup/ http://host:8091/ -b <_имя_бакета_>

5. Если бакет не очищается, либо если после очистки балансировка также не проходит на нем, то
6. В меню редактирования бакета (Edit) запоминаем (записываем) о нем всю информацию и удаляем его. После этого создаем новый с такими же параметрами и заливаем бэкап.
И так по каждому бакету.

И очень полезная команда, чаще всего приходится пользоваться:

/opt/couchbase/bin/cbrestore -u Administrator -p PASSWORD -b SRC_BUCKET -B DST_BUCKET -k "key1|key2|key3|key...|KeyN" /tmp/cbbackup/ http://localhost:8091

Восстанавливает отдельные ключи.

Автор: akhaustov

Источник

Поделиться

* - обязательные к заполнению поля