Показаны сообщения с ярлыком VoltDB. Показать все сообщения
Показаны сообщения с ярлыком VoltDB. Показать все сообщения

Репликация VoltDB

1 Как работает репликация

replica - "живая" и постоянно обновляемая копия БД.

K-safety обеспечивает резервные копии партиций, что защищает кластер от сбоев отдельных его узлов.

replica может использоваться:
  • для разгрузки (Offloading) read-only объемов работ, подлежащих выполнению (workloads), таких как отчётность (reporting);
  • как оперативный резерв (hot standby) в случае аварии master-а.
DR agent работает следующим образом:
  1. запрашивает у master-а завершенные транзакции и применяет их на replica;
  2. отслеживает процесс репликации и сообщает о возможных ошибках.

DR agent лучше разместить на том же сервере что и replica, это снизит тормоза. Но лучше всего разместить DR agent на отдельном сервере, но в непосредственной близости от replica.

replica создается путем запуска БД действием create и флагом --replica.

Алгоритм активации (promoting) replica в качестве master:
  1. убедиться в том что master не доступен (мы же не хотим две живые копии одной БД), а если master доступен, но не работает должным образом, то нужно его выключить (shut it down);
  2. остановить DR agent, если он еще не остановлен;
  3. активировать режим master на replica командой voltadmin promote
  4. сделать redirect клиентских приложений на новый master.
Не гарантируется что содержимое master и replica идентичны в любой момент времени. Некоторые завершенные транзакции на master могут не быть воспроизведены на replica. Придется выбирать из двух зол: либо потерять одну или несколько транзакций и активировать режим master на replica или простаивать ожидая восстановления master-а с помощью command log-a .

VoltDB FAQ – часто задаваемые вопросы по VoltDB

Настройка durability в VoltDB

1) Запускаем Enterprise Manager
/opt/voltdb/management/enterprise_manager.sh

Сервер с которого запускается Enterprise Manager называется management server-ом. В домашней папке пользователя создается папка ~/.voltdb/ в которой хранятся в том числе автоматические snapshot-ы (~/.voltdb/snapshots/), при условии что включена опция их копирования на управляющий сервер.

2) Переходим по адресу:
http://###.###.###.###:9000
admin:voltdb

3) В списке Database выбираем свою БД и на панели Configuration нажимаем Edit. Должно открыться такое окно:
Edit Database

Изменения можно делать на работающей БД, все настройки сразу же активируются.

Прописываем пути:
Snapshot Directory: /mnt/snapshots/
Command Log Directory: /mnt/commandlog
Command Log Snapshot Directory: /mnt/commandlogsnapshot

Отметим checkbox "Synchronous logging" и размер "Log Size (MB)" поставим 2048.

4) Snapshots | Edit
Edit Snapshot

Устанавливаем делать snapshot-ы каждый час и хранить их 3 суток.
Frequency (seconds): 3600
Snapshots retained: 72
Т.е. в папке Snapshot Directory будет находится всегда 72 snapshot-a. Вручную чистить эту папку не нужно. Даже если потом поставить например, 3 snapshot-a папка очиститься самостоятельно и в ней будет храниться всего 3 snapshot-a.

Также можно отметить checkbox "Copy snapshots to management server" потому что только так Enterprise Manager сможет их использовать в случае восстановления БД из snapshot-ов (подробнее о том как правильно накатывать snapshot). Но в этом случае все snapshot-ы будут копироваться на управляющий сервер, поэтому там под них должно быть место. Копирование выполняет Enterprise Manager поэтому если он будет остановлен то копирования не будет.
Подробнее Snapshot Settings расписаны в руководстве.

Командой:
curl http://voltdbmgr:9000/man/api/1.0/mgmt/snapshots/
можно получить список всех snapshot-ов на management server-е .
Подробнее...

5) Остановить Enterprise Manager можно следующей командой:
/opt/voltdb/management/stop_enterprise_manager.sh