Инcтрукция по установке Couchbase 2.1.1 Community и основы работы с ним
Жизнь системного администратора подкинула нового зверя на и без того тернистый путь. Потребовалось клиенту под проект в обязательном порядке использовать 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 Восстанавливает отдельные ключи.