Репликација у СКЛ базама података је процес копирања података из једног извора у други (или у више њих) и обрнуто. Подаци са једног сервера базе података се непрестано копирају на један или више других сервера. Помоћу репликације можете распоредити оптерећење на серверу, пружити толеранцију грешака и велику доступност МариаДБ база података. ДБМС МариаДБ / МиСКЛ омогућава употребу две врсте репликације базе података: Мастер-Мастер и Мастер-Славе. У овом ћемо чланку погледати како конфигурирати обје врсте МариаДБ репликације у ЦентОС-у 7. Кренимо!
Садржај:
- Инсталирајте МариаДБ.
- Конфигуришите репликацију Мастер-Мастер у МариаДБ
- Конфигуришите Мастер-Славе репликацију у МариаДБ
Инсталирајте МариаДБ.
Раније смо објавили чланак који описује поступак инсталирања МариаДБ-а на ЦентОС 7. Можете се упознати са њим на хттпс://винитпро.ру/индек.пхп/2019/08/28/установка-и-оптимизацииа-мариадб/. Стога се нећемо фокусирати на инсталацију саме МариаДБ, већ ћемо одмах наставити конфигурирање репликације.
Конфигуришите репликацију Мастер-Мастер у МариаДБ
У схеми репликације Мастер-Мастер, било који од МариаДБ / МиСКЛ сервера база података може се користити и за писање информација и за читање. Многим људима ова врста репликације није у потпуности привлачна. Ако један од сервера не успе, вероватније је да ће се подаци изгубити на осталим главним серверима. Обично се ова шема користи када сви сервери морају да пружају информације и за писање и за читање..
Репликација је заснована на посебној бинлог датотеци, у којој главни сервер спрема све операције базе података. Славе сервер се повезује са надређеном и примјењује наредбе на своје базе података.
1. МариаДБ: Постављање првог главног сервера (Мастер-1)
Додај у нашу конфигурациону датотеку ми.цнф на првом МариаДБ серверу следећи редови:
#реплицатион
сервер-ид = 1
репорт_хост = мастер
лог_бин = / вар / либ / мискл / мариадб-бин
лог_бин_индек = /вар/либ/мискл/мариадб-бин.индек
релаи_лог = / вар / либ / мискл / релеј-канта
релаи_лог_индек = /вар/либ/мискл/релаи-бин.индек
поновно покретање услуге мариадб
Направите корисника да конфигурише репликацију:
мискл
створити корисника 'тест_мастер' @ '%' идентификованог од 'тест_мастер';
одобри славе репликације на *. * на 'тест_мастер' @ '%';
За додавање Славе потребни су нам бин_лог подаци са Мастер1 сервера.
МариаДБ [(ноне)]> прикажи статус мастер-а;
+--------------------+----------+--------------+------------------+ | Филе | Позиција | Бинлог_До_ДБ | Бинлог_Игноре_ДБ | + -------------------- + ---------- + -------------- + - ---------------- + | мариадб-канта.000002 | 664 | | | + -------------------- + ---------- + -------------- + - ---------------- + 1 ред у сету (0,000 сец)
Ово ће бити наш Мастер-1.
2. МариаДБ: Постављање другог главног сервера (Мастер-2)
Спојите се на други МариаДБ сервер, отворите конфигурациону датотеку ми.цнф и додајте информације:
#реплицатион
сервер-ид = 2
репорт_хост = мастер2
лог_бин = / вар / либ / мискл / мариадб-бин
лог_бин_индек = /вар/либ/мискл/мариадб-бин.индек
релаи_лог = / вар / либ / мискл / релеј-канта
релаи_лог_индек = /вар/либ/мискл/релаи-бин.индек
А такође креирајте корисника на другом серверу:
створити корисника 'тест_мастер2' @ '%' идентифицираног са 'тест_мастер2';
одобри слање репликације на *. * у 'тест_мастер2' @ '%';
Бин_лог на Мастер-2:
МариаДБ [(ноне)]> прикажи статус мастер-а;
+--------------------+----------+--------------+------------------+ | Филе | Позиција | Бинлог_До_ДБ | Бинлог_Игноре_ДБ | + -------------------- + ---------- + -------------- + - ---------------- + | мариадб-канта.000001 | 667 | | | + -------------------- + ---------- + -------------- + - ---------------- + 1 ред у сету (0,000 сец)
Поставимо везу између МариаДБ сервера у нашем софтверском кластеру:
Заустави роб:
СТОП СЛАВЕ;
Додајте Мастер-1 другом серверу:
ПРОМЕНИ МАСТЕР НА МАСТЕР_ХОСТ = "ИП_мастер1", МАСТЕР_УСЕР = "тест_мастер", МАСТЕР_ПАССВОРД = "тест_мастер", МАСТЕР_ЛОГ_ФИЛЕ = "мариадб-бин.000002", МАСТЕР_ЛОГ_ПОС = 664;
Почињемо репликацију:
СТАРТ СЛАВЕ
Повезани смо са Мастер-1 и изводимо исту процедуру само одређивањем података другог сервера:
СТОП СЛАВЕ;
ПРОМЕНИТЕ МАСТЕР НА МАСТЕР_ХОСТ = "183.219.19.36", МАСТЕР_УСЕР = "тест_мастер2", МАСТЕР_ПАССВОРД = "тест_мастер2", МАСТЕР_ЛОГ_ФИЛЕ = "мариадб-бин.000001", МАСТЕР_ЛОГ_ПОС = 667;
СТАРТ СЛАВЕ
Проверите статус другог сервера:
прикажи статус славе \ Г
Као што можете видети на снимкама екрана, постоје везе на два сервера, не примећују се грешке.
3. Провјерите репликацију између МариаДБ сервера.
Затим, да проверимо да репликација између два МариаДБ сервера функционише у мастер + мастер моду и да генерално ради, направићемо нову базу на Мастер-1 и створити табелу у њој.
МариаДБ [(ноне)]> креирање базе података мастер1;
Упит је у реду, погођен је 1 ред (0.001 сек)
МариаДБ [(ноне)]> користи мастер1;
База података је промењена
МариаДБ [мастер1]> ЦРЕАТЕ ТАБЛЕ здраво (
-> АутхорИД ИНТ НЕ НУЛЛ АУТО_ИНЦРЕМЕНТ,
-> Име аутора ВАРЦХАР (100),
-> ПРИМАРНИ КЉУЧ (АутхорИД)
->);
Упит је ОК, погођено 0 редова (0.005 сек)
Проверавамо да ли се база података аутоматски појавила на другом мастер-у, а наша табела је такође присутна у њој:
МариаДБ [(ноне)]> прикажи базе података;
+--------------------+ | База података | + -------------------- + | информатион_сцхема | | мастер1 | | мискл | | перформанце_сцхема | + -------------------- + 4 реда у сету (0.001 сек)
МариаДБ [(ноне)]> користи мастер1;
МариаДБ [мастер1]> прикажите табеле;
+-------------------+ | Таблес_ин_мастер1 | + ------------------- + | здраво | + ------------------- + 1 ред у сету (0,000 сец)
База је створена на другом мастеру. За потпуну проверу направите табелу у мастер1 бази података са другог мастер сервера и проверите да ли су пребачени у супротном смеру.
МариаДБ [мастер1]> СТВАРИ ТАБЕЛУ хелло_мастер1 (
-> АутхорИД ИНТ НЕ НУЛЛ АУТО_ИНЦРЕМЕНТ,
-> Име аутора ВАРЦХАР (100),
-> ПРИМАРНИ КЉУЧ (АутхорИД)
->);
Упит је ОК, погођено 0 редова (0.006 сец)
Табела хелло_мастер1 прослеђена је првом серверу:
МариаДБ [мастер1]> прикажите табеле;
+-------------------+ | Таблес_ин_мастер1 | + ------------------- + | здраво | | хелло_мастер1 | + ------------------- + 2 реда у сету (0,000 сец)
Као што видите, нова таблица се појавила на Мастер-1. Репликација функционише онако како смо и жељели.
Конфигуришите Мастер-Славе репликацију у МариаДБ
У овој верзији репликације један сервер делује као Славе сервер, на који се подаци са главног рачунала непрестано преносе. Све промене које ће се извршити на Славе серверу неће бити пренете у Мастер. Ово је више одступан тип репликације базе података. Најчешће се користи ова опција. У овој конфигурацији ћете увек имати резервни сервер са ажурним подацима, а ако не успе на Славе серверима, информације на главном серверу се неће изгубити. Такође можете да дистрибуирате оптерећење на базу података за свој пројекат тако да се апликације читају са Славе сервера, а подаци се бележе само преко главног сервера. На овај начин минимизирате одговор базе података.
Када конфигуришете реплику МариаДБ базе података као мастер + славе, мастер сервера (мастер1) се конфигурише на начин описан горе.
Прелазимо на подређени сервер. Додајте линије у мој.цнф:
#реплицатион
сервер-ид = 2
репорт_хост = славе2
лог_бин = / вар / либ / мискл / мариадб-бин
лог_бин_индек = /вар/либ/мискл/мариадб-бин.индек
релаи_лог = / вар / либ / мискл / релеј-канта
релаи_лог_индек = /вар/либ/мискл/релаи-бин.индек
Поново покретање мариадб-а. На првом серверу узимамо бин_лог податке.
МариаДБ [(ноне)]> прикажи статус мастер-а;
+--------------------+----------+--------------+------------------+ | Филе | Позиција | Бинлог_До_ДБ | Бинлог_Игноре_ДБ | + -------------------- + ---------- + -------------- + - ---------------- + | мариадб-канта.000001 | 664 | | | + -------------------- + ---------- + -------------- + - ---------------- + 1 ред у сету (0,000 сец)
На подређеном серверу на конзоли мискл урадите следеће:
МариаДБ [(ноне)]> СТОП СЛАВЕ;
Упит је ОК, погођено 0 редова, 1 упозорење (0,000 сец)
МариаДБ [(ноне)]> ПРОМЕНИ МАСТЕР НА МАСТЕР_ХОСТ = "ИП_мастер", МАСТЕР_УСЕР = "тест_мастер", МАСТЕР_ПАССВОРД = "тест_мастер", МАСТЕР_ЛОГ_ФИЛЕ = "мариадб-бин.000001", МАСТЕР_ЛОГ_ПОС = 664;
Упит је ОК, 0 редова је погођено (0.014 сек)
МариаДБ [(нема)]> СТАРТ СЛАВЕ;
СЕТ ГЛОБАЛ реад_онли = УКЉУЧЕН;
Истовремено, морате да креирате и смештај базе података и користите га за почетно учитавање података у МариаДВ на славе серверу.
Проверите статус славе: ПОКАЖИ СТАТУС СЛАВЕ \ Г;
Креирајте базу података на Мастер-у:
МариаДБ [(ноне)]> креирање базе података мастер_хелло;
Упит је у реду, погођен је 1 ред (0.001 сек)
Проверавамо да ли је база података такође креирана на Славе серверу:
МариаДБ [(ноне)]> прикажи базе података;
+--------------------+ | База података | + -------------------- + | информатион_сцхема | | мастер_хелло | | мастер_тест | | мискл | | перформанце_сцхема | | тест | + -------------------- + 6 реда у сету (0.001 сек)
Креирајмо базу података на Славе-у и проверимо да ли су подаци пренети нашем мастеру.
Као што видите, створили смо базу и она се налази на Славе-у. Провери да ли се појавила на Учитељу. Није тамо. Репликација од роба до господара не иде.
Односно, репликација МариаДБ делује само на један начин. Урадимо још једну проверу брисањем базе података мастер_хелло са Славе сервера:
И проверите да ли се пензионисала на главном серверу:
Као што видимо, све је у реду и основа је на свом месту.
П.С. Приликом постављања реплике можете наићи на неке замке, а најчешћа од њих је заштитни зид. Центос 7 је подразумевано инсталиран фиреваллд на којем је затворен порт 3306, који МариаДБ користи. Можете отворити овај порт путем иптабле-а или онемогућити ватрозид (лоша опција).
Подразумевано, у ми.цнф конфигурацији, параметар бинд-адресе одређује ИП адресу на којој се очекују везе са базом података (бинд-аддресс = 127.0.0.1
) Да бисте омогућили и локалне и екстерне везе, морате да коментирате ову линију и додате иптаблес правило које омогућава повезивање са ИП адресе мастер / славе сервера порта 3306.
иптаблес -И ИНПУТ -п тцп -с ип_аддресс_славе_сервер --портпорт 3306 -ј АЦЦЕПТ
иптаблес -И ИНПУТ -п тцп --портпорт 3306 -ј ДРОП
Током почетног подешавања наишао сам на такав проблем и он се лако открива. Ако покренете провјеру статуса СлавеПОКАЖИ СТАТУС СЛАВЕ \ Г;", видећете грешку:
Закључно, желим рећи да можете додати неке параметре у конфигурацију блока #реплицатион у датотеци ми.цнф. Испод ћу навести примере и кратак опис параметара које смо прописали, као и примере других функција корисних за подешавање репликације.
сервер-ид = 1
- одредите ИД сервера, обично започните с 1, али можете користити било који број, главна ствар је да се не подудара са осталим серверима који ће бити укључени у репликацију.
репорт_хост = мастер
- обично је регистровано име главног рачунара, можете да одредите ИП адресу
лог_бин = / вар / либ / мискл / мариадб-бин
- пут до ажурирања дневника
лог_бин_индек = /вар/либ/мискл/мариадб-бин.индек
- омогућава вам да откријете који је дневник тренутно активан и који су дневници претходно кориштени.
релаи_лог = / вар / либ / мискл / релеј-канта
релаи_лог_индек = /вар/либ/мискл/релаи-бин.индек
- репликација се евидентира
Које друге опције могу да користим? Ако морате да конфигуришете реплику само за одређену базу података или неколико њих, додајте функцију:
реплицирај-до-дб = дбнаме
- ако вам треба неколико база података, наведите их зарезом.
Изузимање било које базе података из репликације:
бинлог-игноре-дб = дбнаме
Сервисне базе података, као што су:
информације_сцхема, мискл и перформансе_сцхема
Бин_лог време складиштења:
екпире_логс_даис = 10
- где је 10 број дана похрањивања дневника.
Такође, ако подаци са главног сервера нису записани у истоименој бази података, то се такође може подесити у конфигурацијској датотеци:
реплицате-реврите-дб = дбмастер-> дбнаме
То су сва наша подешавања. Мислим да уз помоћ овог чланка можете лако конфигурирати репликацију МариаДБ базе података и у Мастер + Мастер и Мастер + Славе модовима.