پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04

پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04

MySQL Replication فرآیندی است که به موجب آن یک مجموعه داده واحد ذخیره شده در یک سرور پایگاه داده MyQSL داده شده، که به عنوان منبع شناخته می شود، به صورت زنده در سرور دیگری به نام replica کپی می شود. تکثیر به طور پیش فرض ناهمزمان است ، اگرچه روش های دیگری برای همگام سازی پشتیبانی می شود مانند؛ تکثیر ناهمزمان یک طرفه ، تکرار نیمه همگام ، تکرار تاخیری و غیره این امکان وجود دارد که همه پایگاه‌های داده و جداول را در یک پایگاه داده بسته به پیکربندی خود تکرار کنید.

تکرار در MySQL به روش های زیر سودمند است:

  • این امنیت داده را ارائه می دهد – امکان اجرای یک نسخه پشتیبان بر روی ماکت بدون خراب کردن داده های منبع مربوطه وجود دارد
  • توزیع داده از راه دور – ایجاد یک کپی محلی از داده ها در یک سرور/سایت راه دور را ممکن می سازد.
  • تجزیه و تحلیل – داده های زنده را می توان در منبع و اطلاعات تحلیلی به دست آمده از پایگاه داده ماکت ذخیره کرد.
  • راه‌حل‌های کاهش‌یافته را ارائه می‌دهد – بار بین چندین نسخه پخش می‌شود، این به نوبه خود باعث بهبود عملکرد می‌شود.

دو نوع تنظیم تکرار وجود دارد:

  • Replication Master-Slave – در این تنظیمات، داده های ذخیره شده در master به صورت زنده در Slave کپی می شوند.
  • Master-Master Replication – در اینجا، داده ها را می توان از هر سرور به سرور دیگر کپی کرد. این راه‌اندازی افزونگی را اضافه می‌کند و کارایی را افزایش می‌دهد، به‌ویژه زمانی که با دسترسی به داده‌ها سروکار دارید
  • تکثیر چند منبعی
  • همانندسازی ستاره .

در این راهنما، نحوه پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04 را توضیح خواهیم داد. MariaDB در اینجا به دلیل ویژگی های شگفت انگیز زیر ترجیح داده می شود:

  • PHP، یکی از محبوب ترین زبان های توسعه وب، توسط MariaDB پشتیبانی می شود.
  • MariaDB از یک زبان پرس و جو معروف و پرکاربرد بهره می برد.
  • MariaDB از طیف گسترده ای از زبان های برنامه نویسی پشتیبانی می کند و بر روی انواع سیستم عامل ها کار می کند.
  • انواع موتورهای ذخیره سازی از جمله موتورهای ذخیره سازی با کارایی بالا مانند XtraDB و InnoDB را ارائه می دهد.
  • پشتیبانی از فناوری خوشه Galera – یک خوشه چند استاد مبتنی بر تکرار همزمان
  • دارای یک موتور ذخیره سازی توالی است که به فرد اجازه می دهد دنباله های صعودی یا نزولی از اعداد ایجاد کند.

شروع شدن

در این راهنما، ما دو سرور اوبونتو 20.04|18.04 خواهیم داشت که هر دو به عنوان استاد در تکرار عمل می کنند.

نام میزبان آدرس آی پی وظیفه
master1.qaemhost.ir 192.168.100.50 MariaDB Master Node 1
master2.qaemhost.ir 192.168.100.51 MariaDB Master Node 2

نام میزبان سرورها را تنظیم کنید.

##On Master Node 1
sudo hostnamectl set-hostname master1.qaemhost.ir --static

##On Master Node 2
sudo hostnamectl set-hostname master2.qaemhost.ir --static

سپس ادامه دهید و سرورها را به لیست میزبان های شناخته شده (در هر دو سرور) اضافه کنید.

$ sudo vim /etc/hosts
192.168.100.50  master1.qaemhost.ir master1
192.168.100.51  master2.qaemhost.ir master2

از Master Node 1، Master Node 2 را مانند زیر پینگ کنید.

$ ping master2
PING master2.qaemhost.ir (192.168.100.51) 56(84) bytes of data.
64 bytes from master2.qaemhost.ir (192.168.100.51): icmp_seq=1 ttl=64 time=0.568 ms
64 bytes from master2.qaemhost.ir (192.168.100.51): icmp_seq=2 ttl=64 time=0.470 ms

اکنون تمام سرورها را به آخرین بسته های پایدار به روز کنید.

sudo apt update && sudo apt upgrade

مرحله 1 – همگام سازی Chrony NTP را پیکربندی کنید

زمان بین دو گره اصلی MariaDB باید همگام شود. بسته های Chrony NTP را روی سرورها نصب کنید.

sudo apt -y install chrony

پس از نصب، Chrony را راه اندازی و فعال کنید

sudo systemctl enable --now chronyd

TimeZone محلی خود را تنظیم کنید و Chrony NTP را پیکربندی کنید

sudo timedatectl set-timezone Africa/Nairobi --adjust-system-clock
sudo timedatectl set-ntp yes

بررسی کنید که آیا زمان همگام شده است.

$ timedatectl 
               Local time: Wed 2022-05-04 12:53:37 EAT
           Universal time: Wed 2022-05-04 09:53:37 UTC
                 RTC time: Wed 2022-05-04 09:53:38    
                Time zone: Africa/Nairobi (EAT, +0300)
System clock synchronized: yes                        
              NTP service: active                     
          RTC in local TZ: no                         

مرحله 2 – MariaDB را روی هر دو سرور نصب کنید

اکنون ما مطمئن خواهیم شد که هر دو سرور MariaDB را نصب کرده اند. ابتدا پکیج های مورد نیاز را نصب کنید.

sudo apt install curl software-properties-common -y

در این راهنما، ما MariaDB را بر روی هر دو سرور اوبونتو 20.04|18.04 از مخازن پیش فرض نصب خواهیم کرد.

sudo apt update
sudo apt install mariadb-server mariadb-client

با نصب موفقیت آمیز MariaDB آن را شروع و فعال کنید.

sudo systemctl enable --now mariadb.service

نصب را با ورود به پوسته MariaDB به صورت زیر تأیید کنید. رمز عبور پیش فرض را وارد کنید: root

$ sudo mysql -u root -p
Enter password: root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 43
Server version: 10.3.34-MariaDB-0ubuntu0.20.04.1-log Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
sudo ufw allow 3306/tcp
sudo ufw allow 4567/tcp
sudo ufw allow 4568/tcp
sudo ufw allow 4444/tcp

مرحله 3 – MariaDB را برای Master-Master Replication پیکربندی کنید

اکنون باید گره های اصلی خود را ویرایش کنیم تا Replication فعال شود.

پیشنهاد ویژه قائم هاست خرید وی پی اس اندروید با سیستم عامل های مختلف ویندوز و لینوکس ، همچنین با خرید هاست پرسرعت ایران می توانید از بالاترین سرعت ممکن بهرمند شوید ، جهت اطلاعات بیشتر و یا سوالات قبل از خرید از طریق ارسال تیکت به بخش فروش قائم هاست بصورت 24 ساعته با ما در ارتباط باشید.

در Master Node 1.

در گره اصلی 1، فایل پیکربندی زیر را ویرایش می کنیم.

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

در انتهای فایل اطلاعات زیر را اضافه کنید.

[mysqld]
............
bind-address           = 192.168.100.50
......
#       other settings you may need to change.
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size        = 100M
binlog_do_db           = replica
#binlog_ignore_db       = exclude_database_name

آدرس bind را با IP_address گره Master 1 و replica خود، با پایگاه داده برای تکرار جایگزین کنید. فایل را ذخیره کرده و MariaDB را مجددا راه اندازی کنید.

sudo systemctl restart mariadb

اکنون وارد نمونه MariaDB شوید.

sudo mysql -u root -p

یک کاربر اصلی و کمک های مالی مورد نیاز ایجاد کنید.

CREATE USER 'master_user1'@'%' IDENTIFIED BY 'Passw0rd';
GRANT REPLICATION SLAVE ON *.* TO 'master_user1'@'%';
FLUSH PRIVILEGES;

به یاد داشته باشید که master_user را با نام کاربری دلخواه خود و Passw0rd را با رمز عبور دلخواه خود برای کاربر جایگزین کنید.

وضعیت را بررسی کنید تا گزارش باینری فعلی و مکان دقیقی که Master باید از آنجا شروع به تکثیر کند نشان دهد.

SHOW MASTER STATUS;

خروجی نمونه:

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      782 | replica      |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.001 sec)

به یاد داشته باشید، موقعیت فایل مهم است زیرا بعداً در این پیکربندی مورد نیاز خواهد بود.

در Master Node 2.

اکنون در گره دیگر، Master Node 2، پیکربندی مشابهی را انجام خواهیم داد. فایل کانفیگ را مانند زیر ویرایش کنید.

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

در فایل، خطوط زیر را به جای مناسب آنها اضافه کنید.

[mysqld]
............
bind-address           =192.168.100.51
.......
#       other settings you may need to change.
server-id              = 2
log_bin                = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size        = 100M
binlog_do_db           = replica
#binlog_ignore_db       = exclude_database_name

آدرس bind را با IP_address Master Node 2 جایگزین کنید. فایل را ذخیره کرده و MariaDB را مجددا راه اندازی کنید.

sudo systemctl restart mariadb

وارد پوسته MariaDB شوید.

sudo mysql -u root -p

همچنین در اینجا، کاربر اصلی را با امتیازات لازم ایجاد کنید.

CREATE USER 'master_user1'@'%' IDENTIFIED BY 'Passw0rd';
GRANT REPLICATION SLAVE ON *.* TO 'master_user1'@'%';
FLUSH PRIVILEGES;

حالا در مرحله بعد باید اطلاعات Master Node 1 را به Master Node 2 اضافه کنیم. ابتدا Slave را متوقف کنید.

STOP SLAVE;

حالا ادامه دهید و اطلاعات Master Node 1 را اضافه کنید.

CHANGE MASTER TO MASTER_HOST = "master1", MASTER_USER = "master_user1", MASTER_PASSWORD = "Passw0rd", MASTER_PORT=3306, MASTER_LOG_FILE = "mysql-bin.000001", MASTER_LOG_POS = 782, MASTER_CONNECT_RETRY=10;

جزئیات ارائه شده در اینجا جزئیات مربوط به Master Node 1 است، به جای mysql-bin.000001 مسیر فایل و 782 را با موقعیت فایل در Master Node 1 جایگزین کنید.

حالا برده را شروع کنید.

START SLAVE;

وضعیت Master را نشان دهید و همچنین مسیر و موقعیت فایل را یادداشت کنید.

SHOW MASTER STATUS;

خروجی نمونه:

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      782 | replica      |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.001 sec)

تنظیمات Master-Master Replication را در Master Node 1 تکمیل کنید.

اکنون باید راه اندازی را با افزودن اطلاعات Master Node 2 به Master Node 1 خود تکمیل کنیم.

در حالی که در Master Node 1 وارد پوسته MariaDB شده اید.

تکرار را متوقف کنید.

STOP SLAVE;

اکنون در Master Node 1 اطلاعات Master Node 2 را اضافه کنید.

CHANGE MASTER TO MASTER_HOST = "master2", MASTER_USER = "master_user1", MASTER_PASSWORD = "Passw0rd", MASTER_PORT=3306, MASTER_LOG_FILE = "mysql-bin.000001", MASTER_LOG_POS = 782, MASTER_CONNECT_RETRY=10;

جزئیات ارائه شده را به طور مناسب جایگزین کنید و طبق زیر عمل کنید.

START SLAVE;

وضعیت برده را در هر گره بررسی کنید.

MariaDB [(none)]> show slave status\G

خروجی نمونه:

پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04

پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04

در هر دو گره، سرویس باید منتظر باشد تا دیگری مانند تصویر بالا رویدادی را ارسال کند.

مرحله 4 – تکرار MariaDB Master-Master را آزمایش کنید

اکنون که تمام تنظیمات مورد نیاز را با موفقیت انجام دادیم، باید آزمایش کنیم که آیا تنظیمات به درستی کار می کند یا خیر.

در Master Node 2 :

در پوسته MariaDB در Master Node 2، پایگاه داده تکرار ( replica ) و یک جدول جدید در آن ایجاد کنید.

create database replica;
CREATE TABLE replica.test (`name` varchar(18));

در Master Node 1 :

پایگاه داده و جدول را در پایگاه داده replica نشان دهید

SHOW TABLES IN replica;

خروجی نمونه:

پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04

پیکربندی MariaDB Master-Master replication در اوبونتو 20.04|18.04

با خروجی فوق، می‌توان فرض کرد که نسخه Master-Master MariaDB ما به خوبی کار می‌کند.

نتیجه

این آخرشه! ما Replication Master-Master MariaDB را در اوبونتو 20.04|18.04 پیکربندی کرده ایم. شما می توانید از تکرار MariaDB برای حل مشکلات بی شماری از عملکرد، پشتیبانی از پشتیبان گیری از پایگاه های داده تا کاهش خرابی های سیستم استفاده کنید.

سایر مطالب مرتبط »

5/5 - (2 امتیاز)