PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Преглед на репликацията на ниво обем за PostgreSQL с помощта на DRBD

Репликацията е споделяне на транзакционни данни между множество сървъри, за да се гарантира последователност между излишните възли на базата данни. Главният ще приема вмъквания или актуализации и ги прилага към своя набор от данни, докато подчинените ще променят данните си в съответствие с промените, направени в основния набор от данни. Главният обикновено се нарича основен и записва направените промени в дневник за предсрочно записване (WAL). От друга страна, подчинените се наричат ​​вторични и те репликират своите данни от REDO регистрационните файлове – в този случай WAL.

Има поне 3 подхода за репликация в PostgreSQL:

Вградена репликация или поточно репликация.

При този подход данните се репликират от първичния възел към вторичния възел. Въпреки това, той идва с редица пречки, които са:

  • Трудности при въвеждането на ново средно ниво. Това ще изисква да репликирате цялото състояние, което може да е ресурсоемко.
  • Липса на вграден мониторинг и отказ. Вторичният трябва да бъде повишен в първичен в случай на неуспех на последния. Често тази промоция може да доведе до несъответствие на данните по време на отсъствието на основния.

Реконструкция от WAL

Този подход по някакъв начин използва подхода за стрийминг репликация, тъй като вторичните се реконструират от резервно копие, направено от първичното. Основният предприема пълно архивиране на база данни след всеки ден, освен инкрементално архивиране на всеки 60 секунди. Предимството на този подход е, че не се подлага допълнително натоварване на първичния, докато вторичните не са достатъчно близо до първичния, така че да започнат да предават потока на записа напред (WAL), за да го настигнат. С този подход можете да добавяте или премахвате реплики, без да влияете върху производителността на вашата PostgreSQL база данни.

Репликация на ниво обем за PostgreSQL (Disk Mirroring)

Това е общ подход, който се прилага не само за PostgreSQL, но и за всички релационни бази данни. Ще използваме Distributed Replicated Block Device (DRBD), разпределена репликирана система за съхранение за Linux. Той е предназначен да работи чрез отразяване на съдържанието, съхранявано в хранилището на един сървър, към друго. По-долу е показана проста илюстрация на структурата.

DRBD може да се разглежда като абстракция от дисковото устройство, което хоства базата данни PostgreSQL, но операционната система никога няма да разбере, че нейните данни се намират и на друг сървър. Използвайки този подход, не само можете да споделяте данните, но и файловата система на повече от 1 сървър. Следователно записите към DRBD се разпределят между всички сървъри, при което всеки сървър записва информация на локален физически твърд диск (блоково устройство). Когато операция на запис се прилага към първичния, след това тя се записва в DRBD и след това се разпространява към вторичните DRBD сървъри. От друга страна, ако вторичният получи операциите за запис чрез DRBD, те се записват на локалното физическо устройство. В случай на поддръжка на отказ, DRBD осигурява висока наличност на данни, тъй като информацията се споделя между първичен и много вторични възли, които са подредени синхронно на ниво блок.

Конфигурацията на DRBD ще изисква допълнителен ресурс, известен като Heartbeat, който ще обсъдим в друга статия, за да подобрим поддръжката за автоматично преминаване при отказ. Пакетът основно управлява интерфейса на множеството сървъри и автоматично конфигурира един от вторичните сървъри като първичен в случай на повреда.

Инсталиране и конфигуриране на DRBD

Предпочитаният метод при инсталиране на DRBD е да се използват предварително изградените двоични инсталационни пакети. Уверете се, че версията на ядрото на пакетите съответства на вашето активно текущо ядро.

Конфигурационните файлове за всички възли, които са първични или вторични, трябва да са идентични. Също така, ако е необходимо да надстроите версията на ядрото си, уверете се, че съответният kernel-module-drdb е наличен за новата ви версия на ядрото.

Настройка на DRBD за първичен възел

Това е първата стъпка, в която ще трябва да създадете DRBD блоково устройство и файлова система, с която можете да съхранявате вашите данни. Конфигурационният файл може да бъде намерен в /etc/drbd.conf. Файлът дефинира редица параметри за DRBD конфигурацията, които включват:размери на блокове, дефиниция на информацията за сигурност на DRBD устройствата, които искате да създадете, и честота на актуализации. Конфигурациите могат да бъдат ограничени до глобални или обвързани с определен ресурс. Включените стъпки са:

  1. Скорост на синхронизация, която определя скоростта, с която устройствата се свързват синхронно във фонов режим след смяна на диск, повреда или първоначална настройка. Това може да бъде зададено чрез редактиране на параметъра за скорост в блока за синхронизиране:

    syncer{
    rate 15M
    }
  2. Настройка за удостоверяване, за да се гарантира, че само хостове със същата споделена тайна могат да се присъединят към групата на DRBD възли. Паролата е механизъм за хеш обмен, поддържан в DRBD.

    cram-hmac-alg “sha1”
    shared-secret “hash-password-string”
  3. Конфигуриране на информация за хоста. Информацията за възела като хост може да бъде намерена във всеки файл drbd.conf на всеки възел. Някои от параметрите, които трябва да бъдат конфигурирани, са:

    • Адрес:IP адрес и номер на порта на хоста, който държи DRBD устройството.
    • Устройство:Пътят на логическото блоково устройство, създадено от DRBD.
    • Диск:Отнася се до блоково устройство, съхраняващо данните.
    • Мета-диск:Съхранява метаданните на DRBD устройството. Неговият размер може да бъде до 128MB. Можете да го зададете да бъде вътрешен диск, така че DRBD да използва физическо блоково устройство, за да съхранява тази информация в последните секции на диска.

    Проста конфигурация за основния:

    on drbd-one {
    device /dev/drbd0;
    disk /dev/sdd1;
    address 192.168.103.40:8080;
    meta-disk internal;
    }

    Конфигурацията трябва да се повтори с вторичните, като IP адресът съответства на съответния хост.

    on drbd-two {
    device /dev/drbd0;
    disk /dev/sdd1;
    address 192.168.103.41:8080;
    meta-disk internal;
    }
  4. Създаване на метаданните за устройствата с помощта на тази команда:

    $ drbdadm create create-md all
    Този процес е задължителен, преди да стартирате основния възел.
  5. Стартирайте DRBD с тази команда:
    $ /etc/init.d/drbd start
    Това позволява на DRBD да стартира, инициализира и създава дефинираните от DRBD устройства.
  6. Маркирайте новото устройство като основно и инициализирайте устройството с помощта на тази команда:
    $ drbdadm -- --overwrite-data-of-peer primary all
    Направете файлова система на блоковото устройство, за да направите използваемо стандартно блоково устройство, създадено от DRBD.
  7. Направете основния готов за използване, като монтирате файловата система. Тези команди трябва да го подготвят за вас:
    $ mkdir /mnt/drbd
    $ mount /dev/drbd0 /mnt/drbd
    $ echo “DRBD Device” > /mnt/drbd/example_file

Настройка на DRBD за вторичния възел

Можете да използвате същите стъпки по-горе, освен за създаване на файлова система на вторичен възел, тъй като информацията се прехвърля автоматично от основния възел.

  1. Копирайте файла /etc/drbd.conf от първичния възел във вторичния възел. Този файл съдържа необходимата информация и конфигурация.

  2. На основното дисково устройство създайте метаданните DRBD с помощта на командата:

    $ drbdadm create-md all
  3. Стартирайте DRBD с командата:

    $ /etc/init.d/drbd start
    DRBD ще започне да копира данни от първичния възел към вторичния възел, а времето зависи от размера на данните, които трябва да бъдат прехвърлени. Ако прегледате файла /proc/drbd, можете да видите напредъка.
    $ cat /proc/drbd
    version: 8.0.0 (api:80/proto:80)
      SVN Revision: 2947 build by [email protected], 2018-08-24 16:43:05
       0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
           ns:252284 nr:0 dw:0 dr:257280 al:0 bm:15 lo:0 pe:7 ua:157 ap:0
           [==>.................] sync'ed: 12.3% (1845088/2097152)K
           finish: 0:06:06 speed: 4,972 (4,580) K/sec
           resync: used:1/31 hits:15901 misses:16 starving:0 dirty:0 changed:16
           act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
  4. Наблюдавайте синхронизацията с помощта на командата watch на определени интервали

    $ watch -n 10 ‘cat /proc/drbd‘

Управление на инсталиране на DRBD

За да следим състоянието на DRBD устройството, използваме /proc/drbd.

Можете да зададете състоянието на всички локални устройства да бъде основно, като използвате командата

$ drbdadm primary all

Направете основното устройство вторично

$ drbdadm secondary all

За да изключите DRBD възлите

$ drbdadm disconnect all

Свържете отново DRBD възлите

$ drbd connect all
Изтеглете Бялата книга днес Управление и автоматизация на PostgreSQL с ClusterControl Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате PostgreSQLD Изтеглете Бялата книга

Конфигуриране на PostgreSQL за DRBD

Това включва избор на устройство, за което PostgreSQL ще съхранява данни. За нова инсталация можете да изберете да инсталирате PostgreSQL изцяло на DRBD устройството или директория с данни, която да се намира в новата файлова система и трябва да бъде в основния възел. Това е така, защото основният възел е единственият, на който е разрешено да монтира файлова система на DRBD устройство като четене/запис. Файловете с данни на Postgres често се архивират в /var/lib/pgsql, докато конфигурационните файлове се съхраняват в /etc/sysconfig/pgsql.

Настройване на PostgreSQL за използване на новото DRBD устройство

  1. Ако имате работещ PostgreSQL, спрете ги с тази команда:

    $  /etc/init.d/postgresql -9.0
  2. Актуализирайте DRBD устройството с конфигурационните файлове, като използвате командите:

    $ mkdir /mnt/drbd/pgsql/sysconfig
    $ cp /etc/sysconfig/pgsql/* /mnt/drbd/pgsql/sysconfig
  3. Актуализирайте DRBD с PostgreSQL директория с данни и системни файлове, като използвате:

    $ cp -pR /var/lib/pgsql /mnt/drbd/pgsql/data
  4. Създайте символна връзка към новата директория за конфигурация на файловата система на устройството DRBD от /etc/sysconfig/pgsql с помощта на командата:

    $ ln -s /mnt/drbd/pgsql/sysconfig  /etc/sysconfig/pgsql
  5. Премахнете директорията /var/lib/pgsql, демонтирайте /mnt/drbd/pgsql и монтирайте drbd устройството към /var/lib/pgsql.

  6. Стартирайте PostgreSQL с командата:

    $ /etc/init.d/postgresql -9.0 start

Данните на PostgreSQL вече трябва да присъстват във файловата система, работеща на вашето DRBD устройство под конфигурираното устройство. Съдържанието на базите данни също се копира на вторичния DRBD възел, но не може да бъде достъпен, тъй като DRBD устройството, работещо във вторичния възел, може да отсъства.

Важни характеристики с DRBD подхода

  • Параметрите за настройка са много адаптивни.
  • Съществуващите внедрявания могат лесно да бъдат конфигурирани с DRBD без загуба на данни.
  • Заявките за четене са еднакво балансирани
  • Удостоверяването със споделена тайна защитава конфигурацията и нейните данни.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разрешеният размер на паметта от 8589934592 байта е изчерпан

  2. Как работи clock_timestamp() в PostgreSQL

  3. Конкатениране/сливане на стойности на масива по време на групиране/агрегиране

  4. SQL - Създаване на изглед от множество таблици

  5. Как да създадете Postgres таблица с уникален комбиниран първичен ключ?