Keepalived test


Ikkilamchi ma'lumotlar bazasi serverini o'rnatish



Yüklə 13,79 Mb.
səhifə118/125
tarix21.08.2023
ölçüsü13,79 Mb.
#140060
1   ...   114   115   116   117   118   119   120   121   ...   125
abdurakhmonov

    Bu səhifədəki naviqasiya:
  • Xulosa

Ikkilamchi ma'lumotlar bazasi serverini o'rnatish


Ortiqchalik - bu ajoyib narsa. Agar biron bir sababga ko'ra asosiy server ishlamay qolsa, asl server nobud bo'lgan taqdirda, ikkinchi darajali ma'lumotlar bazasi serveriga ega bo'lish orqali ilovalaringizni ishlashini davom ettirishingiz mumkin. Albatta, siz har doim ma'lumotlar bazasi serverlarining muntazam zaxira nusxalarini yaratishingiz va agar kerak bo'lsa, ularni qayta tiklashingiz mumkin, lekin har doim o'zgarib turadigan ma'lumotlar bazalarini kuzatib borish juda qiyin, shuning uchun zaxiralar juda tez eskirish tendentsiyasiga ega. Ikkilamchi ma'lumotlar bazasi serveri har doim yangilanib turadigan nusxaga ega bo'lish imkonini beradi. Bu sizga endi zaxira nusxalariga muhtoj emasligingizni anglatmaydi, lekin muammoga duch kelganingizda qayta tiklash uchun boshqa imkoniyatni beradi.

Sanoat asosiy va ikkilamchi serverni tavsiflash uchun "Master" va "Slave" kabi atamalardan uzoqlashmoqda. Ushbu bobda va oldinga siljishda biz bir asosiy ma'lumotlar bazasi serverining boshqasiga takrorlanadigan aloqasini tavsiflash uchun "Birlamchi" va "Ikkilamchi" atamalaridan foydalanamiz. Ushbu o'zgarish Ubuntu 20.04 chiqarilgandan keyin boshlanganligi sababli, Ubuntu 20.04 ichidagi buyruqlar va konfiguratsiya serverlar o'rtasidagi munosabatlar tasvirlanganda hamon master va slave dan foydalanadi. Shuning uchun, bizning harakatlarimiz atrofidagi so'zlar "asosiy" va "ikkilamchi" so'zlardan foydalanadi, garchi Ubuntu 20.04 ichidagi so'z hali ham eski terminologiyadan foydalansa ham. Shuni yodda tutingki, nomlash kelajakda yangi nomlash sxemasiga o'tadi.

Ayni paytda bizda bitta ma'lumotlar bazasi serveri mavjud. Ikkilamchi ma'lumotlar bazasi nusxasini o'rnatish uchun jarayonni boshlash uchun sizga kerak bo'lgan narsa boshqa jismoniy server yoki virtual mashinani o'rnatish va avvalgidek mariadb-server paketini o'rnatishdir. Agar siz allaqachon bobda tavsiya qilinganidek ikkita ma'lumotlar bazasi serverini o'rnatgan bo'lsangiz, siz boshlashga tayyormiz. Agar yo'q bo'lsa, boshqa virtual mashinani aylantiring va MariaDB-ni dastlabki sozlashni qamrab olgan MariaDB-ni o'rnatish bo'limidagi jarayonni kuzatib boring. Davom eting va agar buni qilmagan bo'lsangiz, boshqa serverni o'rnating. Ikki serveringizdan biri asosiy, ikkinchisi ikkinchi darajali sifatida belgilanishi kerak, shuning uchun har birining IP manzillarini yozib qo'ying.
Boshlash uchun, avvalo, asosiy ustida ishlashni boshlaymiz. Biz /etc/mysql/conf.d/mysql.cnf faylini siz asosiy bo'lishni xohlagan serverda tahrirlashimiz kerak. Hozirda faylda faqat quyidagi qator mavjud:
[mysql]
Buning ostida bo'sh qatorni va keyin quyidagi kodni qo'shing:
[mysqld] log-bin binlog-do-db = mysampledb server-id = 1
Ushbu konfiguratsiya yordamida biz birinchi navbatda asosiy/ikkilamchi serverning to‘g‘ri ishlashi uchun zarur bo‘lgan ikkilik jurnalni yoqamiz. Ikkilik jurnallar ma'lumotlar bazasidagi barcha o'zgarishlarning yozuvlarini o'z ichiga oladi, bu esa ikkilamchi ma'lumotlar bazasi namunasiga asosiy serverga kiritilgan o'zgarishlarni takrorlash imkonini beradi. Ushbu ikkilik jurnallar ma'lumotlar bazasiga kiritilgan o'zgarishlarni qayd qiladi, keyinchalik ular ikkinchi darajali serverga o'tkaziladi.
Biz tahrirlashimiz kerak bo'lgan yana bir konfiguratsiya fayli - /etc/mysql/mariadb.conf.d/50server.cnf. Ushbu faylda bizda quyidagi qator mavjud:
bog'lanish manzili = 127.0.0.1
Ushbu standart sozlamada MySQL daemoni faqat localhost ( 127.0.0.1 ) dagi ulanishlarni tinglaydi, bu muammo, chunki biz unga boshqa kompyuterdan (ikkilamchi server) ulanishimiz kerak. Ushbu qatorni quyidagiga o'zgartiring:
ulanish manzili = 0.0.0.0
Keyinchalik, biz asosiy serverdagi MariaDB qobig'iga kirishimiz va quyidagi buyruqlarni bajarishimiz kerak:
GRANT REPLICATION SLAVE ON *.* to 'replicate'@'192.168.1.204' identified by 'password';
replikatsiya nomli replikatsiya foydalanuvchisini yaratmoqdamiz va unga 192.168.1.204 IP manzilidan asosiy serverimizga ulanishga ruxsat beramiz. Bu IP-ni ikkilamchi serveringiz IP-siga mos keladigan qilib o'zgartirganingizga ishonch hosil qiling, lekin agar sizda domen sozlangan bo'lsa, %.mydomain kabi xost nomi identifikatoridan ham foydalanishingiz mumkin, bu.mydomain bilan tugaydigan har qanday xost nomiga ruxsat berishga tengdir. Bundan tashqari, biz ushbu foydalanuvchi uchun parolni parolga o'rnatmoqdamiz, shuning uchun uni parol talablaringizga moslashtiring (parolni yozib qo'yganingizga ishonch hosil qiling).
mysql.cnf fayliga kiritilgan o'zgarishlar kuchga kirishi uchun mariadb demonini qayta ishga tushirishimiz kerak:
sudo systemctl restart mariadb
Keyinchalik, biz ikkinchi darajali serverni o'rnatamiz. Ammo buni amalga oshirishdan oldin, biz uchun jarayonni osonlashtirishi mumkin bo'lgan bir narsani hisobga olish kerak. Ishlab chiqarish muhitida ma'lumotlar hali ham asosiy serverga yozilayotgan bo'lishi mumkin. Ikkilamchi serverni o'rnatish jarayoni, agar biz ikkinchi darajali serverni o'rnatganimizda, asosiy ma'lumotlar bazasi o'zgarishi haqida tashvishlanishimiz shart bo'lmasa, ancha osonlashadi. MariaDB qobig'ida bajarilgan quyidagi buyruq ma'lumotlar bazasini bloklaydi va qo'shimcha o'zgarishlarni oldini oladi:
FLUSH TABLES WITH READ LOCK;

Agar siz asosiy serverga hech qanday ma'lumot yozilmasligiga amin bo'lsangiz, bu qadamni e'tiborsiz qoldirishingiz mumkin.

sinxronlashni boshlashdan oldin, asosiy va ikkilamchi serverlarda bir xil ma'lumotlar mavjudligiga ishonch hosil qilish uchun mysqldump- dan foydalanishimiz kerak. Keyinchalik ma'lumotlar bazalarini aks ettirishga urinishdan ko'ra, ular allaqachon sinxronlashtirilganidan boshlasak, jarayon yanada yumshoqroq bo'ladi. Oldingi bo'limda qilganimizdek, mysqldump-dan foydalanib, asosiy server ma'lumotlar bazasining dumpini yarating va keyin bu dumpni ikkilamchiga import qiling. Dump faylini uzatishning eng oson yo'li rsync yoki scp dan foydalanishdir. Keyin, ikkinchi darajali misolda, faylni import qilish uchun mariadb dan foydalaning.
Asosiy serverda ma'lumotlar bazasini zaxiralash buyrug'i quyidagicha bo'ladi:
mysqldump -u admin -p --databases mysampledb > mysampledb.sql
mysampledb.sql faylini ikkilamchi serverga o'tkazganingizdan so'ng, zaxira nusxasini ikkilamchi serverga import qilishingiz mumkin:
mariadb -u root -p < mysampledb.sql
Shuningdek, ikkinchi darajali serverda biz /etc/mysql/conf.d/mysql.cnf ni tahrirlashimiz va so‘ng quyidagi kodni oxiriga qo‘yishimiz kerak ( [mysql] dan keyin bo‘sh qator qo‘shishni unutmang:
[mysqld] server-id=2

Garchi u ushbu kitob doirasidan tashqarida bo'lsa-da, siz faqat bitta ikkinchi darajali ma'lumotlar bazasi serverini o'rnatishingiz mumkin. Agar shunday qilsangiz, har biriga noyob server identifikatori kerak bo'ladi.

mariadb qurilmasini ikkilamchi serverda qayta ishga tushirganingizga ishonch hosil qiling:
sudo systemctl restart mariadb
Ikkilamchi serveringizdagi root MariaDB qobig'idan quyidagi buyruqni kiriting. Buyruqdagi IP manzilni mos ravishda o'zgartiring:
CHANGE MASTER TO MASTER_HOST="192.168.1.184", MASTER_USER='replicate',
MASTER_PASSWORD='password';
Endi biz sinxronizatsiyani sozlashni tugatdik, biz asosiy server jadvallarini qulfdan chiqarishimiz mumkin. Asosiy serverda MariaDB qobig'ida quyidagi buyruqni bajaring:
UNLOCK TABLES;
Endi biz ikkinchi darajali serverning ishlayotgan yoki ishlamayotganligini tekshirishimiz mumkin.
Ikkilamchi serverning MariaDB qobig'ida quyidagi buyruqni bajaring:
SHOW SLAVE STATUS \G;

\G ni qo'shmoqdamiz, bu esa chiqishni gorizontal emas, balki vertikal ko'rsatish uchun o'zgartiradi.

Hammasi yaxshi bo'ldi deb hisoblasak, chiqishda quyidagi qatorni ko'rishimiz kerak:
Slave_IO_State: Waiting for master to send event
Agar ikkilamchi server ishlamayotgan bo'lsa ( Slave_IO_State bo'sh), quyidagi buyruqni bajaring:
START SLAVE;
Keyin, tekshirish uchun ikkilamchi server jarayonining holatini yana tekshiring:
SHOW SLAVE STATUS \G;
Shu nuqtadan boshlab, asosiy serverdagi ma'lumotlar bazasiga qo'shgan har qanday ma'lumotlar ikkinchi darajali serverga takrorlanishi kerak. Sinov uchun asosiy serverdagi mysampledb ma'lumotlar bazasidagi Xodimlar jadvaliga yangi yozuv qo'shing:
USE mysampledb;
INSERT INTO Employees VALUES ('Optimus Prime', '100', 'Transformer');
Ikkilamchi serverda yangi qiymat paydo bo'lishi uchun bir xil ma'lumotlar bazasi va jadvalni tekshiring. Bu bir yoki ikki soniya vaqt olishi mumkin:
USE mysampledb;
SELECT * FROM Employees;
SLAVE_IO_State qatorida SHOW SLAVE STATUS \G ni ishga tushirganingizda xatoliklarni ko'rsangiz yoki ma'lumotlar bazalaringiz to'g'ri sinxronlanmasa, bu erda bir nechta narsalarni sinab ko'rishingiz mumkin. Birinchidan, asosiy ma'lumotlar bazasi serveri 0.0.0.0 3306 portidagi ulanishlarni tinglayotganiga ishonch hosil qiling. Buni sinab ko'rish uchun mariadb jarayoni qaysi portni tinglayotganini ko'rish uchun ss buyrug'ining ushbu o'zgarishini ishga tushiring (u mysqld sifatida ro'yxatga olingan ):
ss -tulpn | grep mysqld
Chiqish quyidagiga o'xshash bo'lishi kerak:
tcp LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=9768,fd=23))
127.0.0.1:3306 da tinglayotganini ko'rsangiz, u faqat localhost ulanishlarini qabul qiladi. Ushbu bo'limning boshida men /etc/mysql/mariadb.conf.d/50-server.cnf faylidagi bog'lanish manzilini o'zgartirish haqida gapirgan edim. Buni allaqachon qilganingizga ishonch hosil qiling va mariadb ni qayta ishga tushiring. Sinovlar davomida menda shunday vaziyat bo'ldiki, men ushbu o'zgartirishni kiritganimdan so'ng mariadb xizmati qulflangan va jarayonni qayta ishga tushirishga urinish hech narsa qilmadi (men butun serverni qayta ishga tushirishga majbur bo'ldim, bu odatda siz xohlagan narsa emas. qilish kerak). Server qayta tiklangandan so'ng, u tarmoqdan ulanishlarni tinglayotgan edi.
Agar siz ikkilamchi serverda SLAVE STATUS \G ni ishga tushirganingizda autentifikatsiya bilan bog'liq xatoliklarga duch kelsangiz, asosiy serverda FLUSH PRIVILEGES-ni ishga tushirganingizga ishonch hosil qiling. Agar sizda bo'lsa ham, ishonch hosil qilish uchun uni qayta ishga tushiring. Shuningdek, to'g'ri foydalanuvchi nomi, IP manzili va parol bilan sinxronlashayotganingizni ikki marta tekshiring. Qulaylik uchun, replikatsiyaga ruxsat berish uchun asosiy serverda bajarilgan buyruq:
GRANT REPLICATION SLAVE ON *.* to 'replicate'@'192.168.1.204' identified by 'password'; FLUSH PRIVILEGES
Ikkilamchi serverda biz bajargan buyruq:
CHANGE MASTER TO MASTER_HOST="192.168.1.184", MASTER_USER='replicate',
MASTER_PASSWORD='password';
Nihoyat, asosiy ma'lumotlar bazasi va ikkilamchi ma'lumotlar bazasi bir xil ma'lumotlar bazalari va jadvallarini o'z ichiga olganligiga ishonch hosil qiling. Agar u mavjud bo'lmasa, asosiy server ikkilamchi serverdagi ma'lumotlar bazasini yangilay olmaydi. Agar sizga yangilash kerak bo'lsa, mysqldump- da foydalanish misolimga qayting. Siz mysqldump-dan foydalanishingiz va ma'lumotlar bazasini ikkilamchi serverga bir marta import qilishingiz kerak, chunki replikatsiya boshlangandan so'ng, asosiy serverdagi ma'lumotlar bazasiga kiritilgan har qanday o'zgarishlar ikkinchi darajali serverga o'tishi kerak. Agar siz mysqldump buyrug'i bilan bog'liq qiyinchiliklarga duch kelsangiz, qo'lda mysampledb va ikkinchi darajali serverda Xodimlar jadvalini yaratishingiz mumkin, bu sinxronizatsiyani boshlash uchun kerak bo'lgan narsadir.
uni kutmasdan qayta sinxronlashtirishga majburlash uchun ikkilamchi serverda STOP SLAVE ni, keyin esa START SLAVE ni bajarishingiz mumkin.
Va buning uchun hamma narsa bo'lishi kerak. Ushbu nuqtada sizning ixtiyoringizda to'liq ishlaydigan asosiy va ikkilamchi ma'lumotlar bazasi serverlari bo'lishi kerak. Qo'shimcha amaliyotga ega bo'lish uchun qo'shimcha ma'lumotlar bazalari, jadvallar va foydalanuvchilarni qo'shib ko'ring va ma'lumotlar bazalaringizga yangi qatorlar qo'shing. Shuni aytib o'tish joizki, biz bu erda yaratgan foydalanuvchilar ikkinchi darajali server bilan sinxronlashtirilmaydi, shuning uchun siz ushbu bobda biz ishlatgan buyruqlardan foydalanib, ikkinchi darajali serverda foydalanuvchilarni yaratishingiz mumkin, agar ular u erda bo'lishini xohlasangiz.

Xulosa


Ko'nikmalaringizga qarab, siz SQL ma'lumotlar bazalarini birinchi marta o'rganayotgan administratorsiz yoki Ubuntu Server bilan ma'lumotlar bazasi serverini qanday amalga oshirishga qiziqqan tajribali faxriysiz. Ushbu bobda biz Ubuntu-ning ushbu texnologiyani amalga oshirishi bilan tanishdik va o'zimizning ma'lumotlar bazasi serverini o'rnatish orqali ishladik. Shuningdek, biz MariaDB sintaksisining ba'zi misollari bilan ishladik, masalan, ma'lumotlar bazalarini yaratish, shuningdek, foydalanuvchilar va ularning grantlarini sozlash. Biz replikatsiya uchun asosiy va ikkilamchi serverni o'rnatish ustida ishladik.
Ma'lumotlar bazasini boshqarish - bu keng mavzu va biz bu erda faqat sirtni tirnalganmiz. MySQL va MariaDB ma'lumotlar bazalarini boshqarish qobiliyati, shubhasiz, juda talab qilinadigan mahoratdir. Agar siz ilgari ushbu ma'lumotlar bazalari bilan ishlamagan bo'lsangiz, ushbu bob tadqiqotingizni boshlashingiz uchun yaxshi asos bo'lib xizmat qiladi.
Keyingi bobda biz maʼlumotlar bazasi serverimizdan Nextcloud uchun asos sifatida foydalanamiz, uni veb-serverni oʻrnatishga qarashimizning bir qismi sifatida oʻrnatamiz. Ushbu ma'lumotlar bazasi tushunchalarini mashq qilishni tugatganingizdan so'ng, veb-kontentga xizmat ko'rsatish 14-bobiga o'ting, u erda biz veb-xosting dunyosiga sayohat qilamiz.

Yüklə 13,79 Mb.

Dostları ilə paylaş:
1   ...   114   115   116   117   118   119   120   121   ...   125




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin