Привет читатели Techblog. С большой вероятностью вы читали о новых функциях в Blackbirds Release 2.0. К большим билетам относятся геораспределение , автоматизация и хранимые процедуры Java . В дополнение к этим удивительным новым функциям мы отказались от поддержки ZFS, в частности Native ZFS в Linux . Ты говоришь, черт возьми, да! Ну, вы должны быть, и вот почему.
Поддержка ZFS была запрошена несколькими людьми, желающими использовать функцию моментальных снимков в своей стратегии резервного копирования. ZFS может предоставить комплексную стратегию резервного копирования для хранения базы данных NuoDB по доступной цене. ZFS очень бдительно относится к защите ваших данных и имеет длинный список функций для их резервного копирования, таких как; целостность данных (контрольные суммы, зеркалирование, raid-z, scrub, снимки), пулы хранения, кэш (ARC, L2ARC, ZIL), транзакционная модель копирования при записи, дедупликация, сжатие и многое другое.
Возможно, вы помните, что наш технический директор Сет прокурор опубликовал блог под названием « Наш подход к резервному копированию баз данных» . Сет описывает запуск второго диспетчера хранилища (SM), позволяет ему синхронизировать базу данных, затем завершает работу второго SM и сохраняет архив в резервном каталоге. В случае ZFS снимок ZFS может быть сделан на шаге 3 «Скопировать куда-нибудь локальный архив» вместо того, чтобы делать копию. Возможность запуска NuoDB на ZFS позволяет вам еще больше расширить стратегию резервного копирования. В Blackbirds снимок может быть сделан во время работы базы данных (живой снимок). Как это круто? Хорошо, так в чем же дело? Ограничение для живого снимка заключается в том, что и каталог архива, и каталог журнала должны находиться в одном наборе данных ZFS.
Вот пошаговое руководство по созданию моментальных снимков в Ubuntu с использованием исходного домена Сета и чайной базы данных.
Установите родной ZFSOnLinux
sudo apt-get install software-properties-common sudo add-apt-repository ppa:zfs-native/stable sudo apt-get update sudo apt-get install ubuntu-zfs
Создайте бассейн. ZFS raid-z используется для объединения 3 дисков.
cat /proc/partitions major minor #blocks name 11 0 1048575 sr0 8 0 16777216 sda 8 1 12581888 sda1 8 2 1 sda2 8 5 4192256 sda5 8 16 4194304 sdb 8 17 4184064 sdb1 8 25 8192 sdb9 8 32 4194304 sdc 8 33 4184064 sdc1 8 41 8192 sdc9 8 48 4194304 sdd 8 49 4184064 sdd1 8 57 8192 sdd9 sudo zpool list no pools available sudo zpool create tank raidz sdb sdc sdd sudo zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 11.9G 231K 11.9G 0% 1.00x ONLINE - sudo zpool status pool: tank state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0
Теперь создайте набор данных ZFS и установите несколько свойств для повышения производительности. Наиболее заметная настройка — это настройка размера записи, которая должна соответствовать размеру IO. Для NuoDB это должно быть установлено в 64 КБ, что является размером атома (50 КБ), округленным до степени 2.
sudo zfs create tank/db sudo zfs create tank/db/tea sudo zfs set primarycache=metadata tank/db/tea sudo zfs set recordsize=64k tank/db/tea sudo zfs set compression=gzip tank/db/tea sudo zfs set atime=off tank sudo zfs set quota=6G tank/db sudo zfs set quota=4G tank/db/tea sudo zfs list NAME USED AVAIL REFER MOUNTPOINT tank 782K 7.83G 40.0K /tank tank/db 78.6K 6.00G 40.0K /tank/db tank/db/tea 38.6K 4.00G 38.6K /tank/db/tea
Вы заметили свойство сжатия? Архив и журнал NuoDB могут быть сжаты через ZFS. Мы видели где-то от 1,52x до 2,24x коэффициентов сжатия с алгоритмом сжатия gzip. Помимо экономии места, включение сжатия может привести к повышению производительности! К вашему сведению, ZFSOnLinux имеет множество поддерживаемых алгоритмов сжатия, таких как; LZJB, ZLE, LZ4, GZIP и GZIP- [1-9].
Итак, на данный момент ZFS настроен. Давайте запустим базу данных.
nuodbmgr --broker localhost --password bird nuodb [domain] > start process sm Database: tea Host: localhost Process command-line options: --commit remote --journal enable --journal-dir /tank/db/tea/journal Archive directory: /tank/db/tea/archive Initialize archive: true Started: [SM] ubuntu-zfs/192.168.240.189:48005 [ pid = 16862 ] ACTIVE nuodb [domain/tea] > start process te Host: 192.168.240.1 Process command-line options: --commit remote --dba-user dba --dba-password oolong Started: [TE] macbook/192.168.240.1:48005 [ pid = 34230 ] ACTIVE nuodb [domain/tea] > start process te Host: 192.168.240.1 Process command-line options: --commit remote --dba-user dba --dba-password oolong Started: [TE] macbook/192.168.240.1:48006 [ pid = 34236 ] ACTIVE nuodb [domain/tea] > show domain summary Hosts: [agent] macbook/192.168.240.1:48004 [broker] ubuntu-zfs/192.168.240.189:48004 Database: tea [TE] macbook/192.168.240.1:48005 [ pid = 34230 ] RUNNING [TE] macbook/192.168.240.1:48006 [ pid = 34236 ] RUNNING [SM] ubuntu-zfs/192.168.240.189:48005 [ pid = 16933 ] RUNNING
Отлично. База данных чая теперь работает с ZFS. Следующим шагом является демонстрация снимков ZFS путем создания некоторых данных и создания снимка с работающим NuoDB. Затем мы отбросим таблицу и восстановим ее, используя снимок ZFS.
nuosql tea@localhost --user dba --password oolong SQL> create table great_teas (name string, style string); SQL> insert into great_teas (name,style) values ('tieguanyin', 'oolong'); SQL> insert into great_teas (name,style) values ('biluochun', 'green'); SQL> insert into great_teas (name,style) values ('longjing', 'green'); SQL> select * from great_teas; NAME STYLE ---------- ------ tieguanyin oolong biluochun green longjing green
Сделайте снимок работающей базы данных.
sudo zfs snapshot tank/db/tea@saveTheTeas sudo zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT tank/db/tea@saveTheTeas 0 - 272K -
Тогда бросьте стол.
SQL> drop table great_teas;
Ой! Мы поняли, что сбросить таблицу great_tea — очень плохая идея. Сет больше не сможет искать свои любимые чаи. Это катастрофа!
SQL> select * from great_teas; can't find table "GREAT_TEAS" SQL: select * from great_teas;
К счастью, таблицу great_tea можно восстановить, потому что мы сделали снимок, когда он существовал. Вот шаги по восстановлению таблицы. Во-первых, база данных должна быть закрыта.
nuodb [domain] > shutdown database tea Shutdown database tea nuodb [domain] > show domain summary Hosts: [agent] macbook/192.168.240.1:48004 [broker] ubuntu-zfs/192.168.240.189:48004
Можно использовать другие базы данных, но не те чайные базы, которые мы пытаемся восстановить. Кроме того, брокер и агент могут оставаться в рабочем состоянии. Чтобы выполнить откат из снимка ZFS, набор данных должен быть размонтирован.
sudo zfs unmount tank/db/tea sudo zfs rollback tank/db/tea@saveTheTeas sudo zfs mount tank/db/tea
Затем восстановите базу данных. Поле «initialize» должно быть ложным на этот раз, потому что SM должен восстановить откат архивной директории.
nuodb [domain] > start process sm Database: tea Host: localhost Process command-line options: --commit remote --journal enable --journal-dir /tank/db/tea/journal Archive directory: /tank/db/tea/archive Initialize archive: false Started: [SM] ubuntu-zfs/192.168.240.189:48005 [ pid = 17004 ] ACTIVE nuodb [domain/tea] > start process te Host: 192.168.240.1 Process command-line options: --commit remote --dba-user dba --dba-password oolong Started: [TE] macbook/192.168.240.1:48005 [ pid = 34379 ] ACTIVE nuodb [domain/tea] > start process te Host: 192.168.240.1 Process command-line options: --commit remote --dba-user dba --dba-password oolong Started: [TE] macbook/192.168.240.1:48006 [ pid = 34380 ] ACTIVE nuodb [domain/tea] > show domain summary Hosts: [agent] macbook/192.168.240.1:48004 [broker] ubuntu-zfs/192.168.240.189:48004 Database: tea [TE] macbook/192.168.240.1:48005 [ pid = 34379 ] RUNNING [TE] macbook/192.168.240.1:48006 [ pid = 34380 ] RUNNING [SM] ubuntu-zfs/192.168.240.189:48005 [ pid = 17004 ] RUNNING
Проверьте, была ли восстановлена таблица great_tea.
nuosql tea@localhost --user dba --password oolong SQL> select * from great_teas; NAME STYLE ---------- ------ tieguanyin oolong biluochun green longjing green
Успех! Снимок ZFS сохранил день. Это быстрая и простая демонстрация мощности и гибкости, которые моментальные снимки ZFS предоставляют с NuoDB. Если вы заинтересованы в настройке ZFS, я рекомендую проверить ZFS для баз данных [1] & [2] и ZFS Intent Log для более подробной информации. Я также рекомендую прочитать серию публикаций Аарона Топонсе по администрированию Zpool & ZFS . Следите за моим следующим сообщением в блоге о шифровании архивов!