- PVSM.RU - https://www.pvsm.ru -
Жизнь системного администратора подкинула нового зверя на и без того тернистый путь. Потребовалось клиенту под проект в обязательном порядке использовать 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
В нашей компании [1] активно используется виртуализация OpenVZ, а для нормальной работы couchbase в контейнере openvz необходим файл memsup из пакета erlang-os-mon версии не ниже 2.2.10.
Что делаем:
Останавливаем couchbase:
service couchbase-server stop
Для начала нужно скачать сам erlang, например, с официального сайта www.erlang.org/download.html [2]
И скомпилировать нужную библиотеку, которая находится по пути 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 [3]: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 [4]: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
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nosql/81669
Ссылки в тексте:
[1] нашей компании: http://centos-admin.ru
[2] www.erlang.org/download.html: http://www.erlang.org/download.html
[3] hostname: http://hostname
[4] host: http://host
[5] Источник: http://habrahabr.ru/post/249679/
Нажмите здесь для печати.