در این مطلب به آموزش کانفیگ Galera Cluster با MySQL در سرورهای اوبونتو 18.04 می‌پردازیم، با ما همراه باشید..


مقدمه

کلاسترینگ می‌تواند قابلیت دسترسی بالا به پایگاه داده شما را تضمین کند. این امر با توزیع تغییرات به چند سرور مختلف ممکن می‌گردد. در این صورت، اگر یکی از سرورها از کار بیافتد سایر سرورها آماده خدمت رسانی هستند و این منجر به افزایش ضریب اطمینان دسترسی به سرویس‌ می‌گردد.

دو پیکربندی کلی برای کلاسترها وجود دارد: active-passive و active-active

در کلاسترهای active-passive تمام عملیات‌های write در یک سرور active صورت می‌گیرد و سپس به یک یا چند سرور passive دیگر کپی می‌شود. سرورهای passive فقط در صورت خرابی یک سرور active آماده به خدمت رسانی خواهند بود. در برخی از کلاسترهای active-passive اجازه انجام عملیات SELECT به نودهای passive نیز داده می‌شود. اما در کلاسترهای active-active تمامی نودها قابلیت read-write دارند و هر تغییری که در هر یک از این نودها ایجاد شود در سایر نودها نیز اعمال می‌شود.

MySQL یک سیستم مدیریت دیتابیس رابطه‌ای و متن‌باز است که در بین دیتابیس‌های اس‌کیو‌الی به یک گزینه تبدیل محبوب شده است.

Galera یک راهکار برای کلاسترینگ دیتابیس است که با استفاده از همانند سازی همزمان، امکان استفاده از کلاسترهای multi-master را به شما می‌دهد. Galera به شما این امکان را می‌دهد که به هر یک از نوده‌های کلاستر کوئری‌های read-write ارسال نمایید. با این وجود، سینک بودن تمامی نودهای موجود در کلاستر بصورت اوتوماتیک توسط Galera مدیریت خواهد شد و شما از این بابت نگرانی نخواهید داشت. برای کسب اطلاعات بیشتر در مورد Galera به مستندات رسمی آن مراجعه نمایید.

شما در این آموزش، نحوه کانفیگ Galera Cluster با MySQL (بصورت active-active) را خواهید آموخت. بدین منظور، شما 3 عدد دراپلت اوبونتو 18.04 را که به عنوان نودهای کلاستر ایفای نقش می‌کنند، کانفیگ خواهید کرد. لازم به ذکر است که حداقل تعداد نود لازم برای کانفیگ کردن یک کلاستر، 3 نود است.


پیش‌نیازها

1) شما برای دنبال کردن این آموزش به یک اکانت DigitalOcean

2) 3 عدد دراپلت اوبونتو 18.04 با قابلیت private networking فعال، که هر کدام از این دراپلت‌ها باید یک کاربر non-root با امتیازات sudo داشته باشند:

  • برای تنظیم private networking در این سه دراپلت به این لینک مراجعه نمایید.
  • برای ایجاد یک کاربر non-root با امتیازات sudo به این لینک مراجعه نمایید.

مراحل ذکر شده در این آموزش برای آزمایش و اجرا روی دراپلت‌های DigitalOcean نوشته شده است. با این وجود، اکثر این مراحل در سرورهای دیگر نیز قابل بکارگیری و اجرا است. فقط توجه داشته باشید که قابلیت private networking در سرور مدنظرتان فعال باشد.


در نخستین اقدام، شما باید ریپازیتوری‌های مربوط به پکیج Galera و MySQL را به هر سه سرور خود اضافه کنید و بدین ترتیب قادر خواهید بود که نسخه‌ صحیح MySQL و Galera مورد استفاده در این آموزش را نصب نمایید. توجه داشته باشید که کمپانی Codership صاحب اصلی Galera Cluster، ریپازیتوری Galera را نگه‌داری و ارائه می‌کند. از آنجایی که هر ریپازیتوری خارجی لزوما قابل اعتماد نیست، دقت داشته باشید که از منبع مطمئن و قابل اعتمادی پکیج‌ها را نصب کنید.

گام اول – اضافه کردن ریپازیتوری‌های MySQL به همه سرورها:

در این آموزش از MySQL نسخه 5.7 استفاده خواهید کرد.

در اولین قدم، ریپازیتوری مخصوص اوبونتو که توسط Galera ارائه شده را به هر سه سرور اضافه کنید.

به محض اینکه ریپازیتوری‌ها روی هر سه سرور آپدیت شدند، همه چیز آماده نصب MySQL همراه با Galera خواهد بود.

ابتدا Galera repository key را روی هر سه سرور با استفاده از فرمان apt-key اضافه کنید. در واقع، APT package manager از این کلید برای تصدیق اعتبار پکیج استفاده می‌نماید.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA

بعد از چند ثانیه، خروجی زیر نمایش داده خواهد شد:


// Output
Executing: /tmp/apt-key-gpghome.RG5cTZjQo0/gpg.1.sh --keyserver keyserver.ubuntu.com --recv BC19DDBA
gpg: key D669017EBC19DDBA: public key "Codership Oy <info@galeracluster.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

به محض اینکه اعتبار کلید در دیتابیس هر سه سرور تایید شد، شما می‌توانید ریپازیتوری‌ها را اضافه کنید.

برای اضافه کردن ریپازیتوری‌ها یک فایل جدید با نام galera.list در دایرکتوری /etc/apt/sources.list.d/ در هر سه سرور ایجاد کنید.

sudo nano /etc/apt/sources.list.d/galera.list

فایل galera.list را با یک ویرایشگر متن باز کرده و خطوط زیر را به آن اضافه کنید:

deb http://releases.galeracluster.com/mysql-wsrep-5.7/ubuntu bionic main
deb http://releases.galeracluster.com/galera-3/ubuntu bionic main

با انجام اینکار ریپازیتوری‌های مناسب در دسترس APT package manager قرار خواهند گرفت. فایل را در هر سه سرور ذخیره کنید و از آن خارج شوید(فشردن Y ،Ctrl+X و سپس ENTER). هم اکنون ریپازیتوری‌های Codership در هر سه سرور قابل دسترسی هستند. با این وجود لازم است، اطمینان حاصل کنیم که با اجرای دستور apt ریپازیتوری‌های Codership به سایر ریپازیتوری‌ها ترجیح داده می‌شود و در نتیجه نسخه‌های پچ شده نرم‌افزار مورد نیاز برای ایجاد Galera Cluster حتما نصب خواهد شد.

بدین منظور، یک فایل جدید با نام galera.pref در دایرکتوری /etc/apt/preferences.d/ روی هر سه سرور ایجاد نمایید.

sudo nano /etc/apt/preferences.d/galera.pref

فایل را با ویرایشگر متنی باز کرده و خطوط زیر را به آن اضافه نمایید:

# Prefer Codership repository
Package: *
Pin: origin releases.galeracluster.com
Pin-Priority: 1001

فایل را ذخیره کرده و ببندید. سپس به منظور دریافت بسته‌ها از ریپازیتوری‌های جدید، فرمان زیر را روی همه سرورها اجرا کنید:

sudo apt update

حالا همه چیز آماده نصب MySQL است.


گام دوم – نصب MySQL روی همه سرورها:

پیش نیاز کانفیگ Galera Cluster با MySQL، نصب MySQL و Galera روی سرورهایی است که قرار است نقش نودهای کلاستر را ایفا کنند. فرمان زیر را اجرا نمایید:

sudo apt install galera-3 mysql-wsrep-5.7

پس از اجرای فرمان فوق از شما پرسیده می‌شود که آیا مایل به ادامه نصب هستید؟ با فشردن کلید Y به فرایند نصب ادامه دهید. در خلال فرایند نصب از شما خواسته می‌شود که یک پسورد برای یوزر ادمین MySQL انتخاب کنید. با وارد کردن یک پسورد مناسب و فشردن دکمه ENTER به فرایند نصب ادامه دهید.

به محض اتمام فرایند نصب، AppArmor profile پیش‌فرض را غیر فعال کنید تا از صحت عملکرد Galera اطمینان حاصل شود. (مطابق با مستندات رسمی Galera)

AppArmor یک ماژول کرنل برای لینوکس است که قابلیت کنترل دسترسی سرویس‌ها را از طریق پروفایل‌های امنیتی امکان‌پذیر می‌سازد.

با اجرای دستور زیر AppArmor را روی همه سرورها غیر فعال کنید:

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

با اجرای دستور فوق، یک لینک سمبلیک از MySQL profile در دایرکتوری disable ایجاد می‌گردد که profile را در هنگام بوت غیرفعال می‌کند.

سپس، با اجرای فرمان زیر MySQL definition را که هم اکنون در کرنل بارگذاری شده است، حذف کنید:

sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

بعد از اینکه MySQL را روی سرور اول خود نصب کردید و AppArmor profile را غیر فعال نمودید، همین مراحل را روی دو سرور دیگر نیز تکرار کنید.


گام سوم – کانفیگ نود اول:

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

MySQL بصورت پیش‌فرض به گونه‌ای کانفیگ شده است که دایرکتوری /etc/mysql/conf.d را به منظور دریافت تنظیمات پیکربندی اضافی از فایل‌هایی که با cnf. پایان می‌یابند، مورد بررسی قرار می‌دهد.

روی سرور اول در دایرکتوری /etc/mysql/conf.d یک فایل ایجاد کنید و تمامی ویژگی‌های کلاستر را در آن وارد نمایید.

sudo nano /etc/mysql/conf.d/galera.cnf

فایل galera.cnf را بصورت زیر پیکربندی کنید. این پیکربندی تنظیمات مختلف کلاستر، جزئیاتی در مورد سرور فعلی و سایر سرورهای موجود در کلاستر و تنظیمات مربوط به همانند سازی سرورها را شامل می‌گردد.

توجه داشته‌باشید که آدرس‌های ip مشخص شده در این پیکربندی باید همان آدرس‌های خصوصی سرورهای مربوطه در کلاستر شما باشند.

پیکربندی فایل /etc/mysql/conf.d/galera.cnf :

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://First_Node_IP,Second_Node_IP,Third_Node_IP"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="This_Node_IP"
wsrep_node_name="This_Node_Name"
بخش ابتدائی فایل:

تنظیمات MySQL را به منظور عملکرد صحیح کلاستر اصلاح می‌نماید. به عنوان مثال، Galera با MyISAM یا سایر موتورهای ذخیره‌سازی non-transactional کار نمی‌کند و mysqld نباید روی آدرس ip لوکال هاست تنظیم شده باشد.

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

بخش “Galera Provider Configuration”:

پیکربندی کامپوننت‌های MySQL به منظور ارئه یک WriteSet replication API در این بخش صورت می‌گیرد. WriteSet replication API برای همانندسازی سرورهای موجود در کلاستر مورد استفاده قرار می‌گیرد.

در این مورد خاص می‌توان گفت که منظور از WriteSet replication API در واقع همان Galera است که قرار است کار همانندسازی نودهای کلاستر ما را انجام دهد. شما می‌توانید در این قسمت پارامترهای کلی مورد نیاز برای پیکربندی محیط همانندسازی اولیه را مشخص کنید. اما در این مورد نیازی به تغییر این قسمت نیست.

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

بخش “Galera Cluster Configuration”:

تنظیمات این بخش مربوط به تعریف کلاستر، مشخص نمودن اعضای کلاستر بواسطه آدرس ip یا نام دامنه آن‌ها و ایجاد یک نام برای کلاستر می‌باشد.

توجه داشته باشید که در نظر گرفتن یک نام برای کلاستر به منظور اطمینان از اتصال اعضا به گروه صحیح الزامی می‌باشد.

شما می‌توانید مقدار wsrep_cluster_name را بجای “test_cluster” به مقدار معنی‌دار دیگری تغییر دهید یا به همین صورت رها کنید.

در قمست wsrep_cluster_address آدرس ip هر سه سرور خود را وارد نمایید.

بخش “Galera Synchronization Configuration”:

در این بخش مشخص می‌گردد که کلاستر چگونه ارتباط بین اعضا را برقرار می‌سازد و نحوه همگام‌سازی داده‌ها بین اعضا تعیین می‌گردد.

این مورد فقط برای انتقال حالت (state transfer) در هنگامی که یک نود آنلاین می‌شود، مورد استفاده قرار می‌گیرد.

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

بخش “Galera Node Configuration”:

این بخش آدرس ip و نام سرور فعلی را مشخص می‌کند.

اگر قصد دارید تا مشکلات بوجود آمده در سرورها را بواسطه لاگ‌ها مورد بررسی قرار دهید و منشا مشکلات را بیابید، این بخش به شما کمک زیادی خواهد کرد.

همچنین، به کمک این بخش می‌توان به چندین روش مختلف به هر کدام از سرورها ارجاع کرد.

wsrep_node_address: آدرس ip سرور فعلی که در آن هستید.

wsrep_node_name: هر نام دلخواهی که به شما کمک می‌کند این نود را در لاگ پیدا کنید.

پس از اتمام تنظیمات فایل galera.cnf محتوای آن را کپی کرده و سپس فایل را ذخیره کرده و ببندید. اکنون می‌توانید سراغ کانفیگ نودهای بعدی بروید.


گام چهارم – کانفیگ نودهای باقیمانده:

به نود دوم رفته و فایل پیکربندی را باز کنید:

sudo nano /etc/mysql/conf.d/galera.cnf

تنظیماتی که از نود اول کپی کرده بودید را در این فایل قرار دهید.

سپس، در بخش “Galera Node Configuration”:

wsrep_node_address: برابر با آدرس ip نود فعلی قرار دهید. (یعنی آدرس ip نود دوم)

wsrep_node_name: اختصاص نام دلخواه برای تشخیص این نود در لاگ‌ها

فایل را ذخیره کرده و از آن خارج شوید.

حالا تنها کاری که باقیمانده کانفیگ نود سوم است، به همین ترتیب نود سوم را نیز کانفیگ نمایید.


گام پنجم – باز کردن پورت‌های لازم در فایروال همه سرورها:

در این گام باید فایروال را به گونه‌ای کانفیگ کنید که تمامی پورت‌های لازم برای ارتباط بین-گره‌ای باز باشند.

در هر کدام از سرورها با اجرای دستور زیر وضعیت فایروال را بررسی نمایید:

sudo ufw status

خروجی:

// Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

چون در این مورد فقط ارتباط SSH مجاز است، لازم است rule ‌هایی برای ترافیک MySQL و Galera تعریف کنید.

اگر پیش از تعریف کردن rule های مورد نیاز برای استارت کردن کلاستر تلاش کنید، با شکست مواجه می‌شوید.

Galera از 4 پورت استفاده می‌کند:

پورت 3306: برای کانکشن‌های کلاینت MySQL و State Snapshot Transfer که از متد mysqldump استفاده می‌کند.

پورت 4567: برای ترافیک همانندسازی Galera Cluster. همانندسازی Multicast از پروتکل UDP و TCP روی همین پورت استفاده می‌کند.

پورت 4568: برای Incremental State Transfer

پورت 4444: برای سایر State Snapshot Transfer ها

در این مثال، شما هر چهار پورت را باز می‌کنید. اما، به محض اطلاع از عملکرد صحیح همانندسازی (replication)، می‌توانید پورت‌هایی که از آن‌ها استفاده نمی‌کنید را ببندید و ترافیک را محدود به سرورهای موجود در کلاستر کنید.

پورت‌ها را با استفاده از دستورات زیر باز کنید:

sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udp

توجه: بسته به اینکه چه چیزی در سرورهای شما در حال اجرا است، ممکن است بخواهید دسترسی‌ها را محدود کنید. به این منظور می‌توانید برای کسب اطلاعات بیشتر به این لینک مراجعه کنید.

بعد از اینکه فایروال را در نود اول کانفیگ کردید، به نودهای دوم و سوم بروید و همین تنظیمات را در آن‌ها نیز اعمال کنید.

حالا شما آماده این هستید که در قدم بعدی کلاستر خود را استارت نمایید.


گام ششم – استارت کردن کلاستر:

پیش از هر کاری شما باید سرویس systemd از MySQL را فعال نمایید.

با فعال کردن سرویسsystemd، هر وقت که سرورتان ریبوت شود MySQL بصورت خودکار آغاز بکار می‌کند.

فعال‌سازی استارت خودکار MySQL در زمان بوت شدن سرور:

برای فعال‌سازی سرویس systemd دستور زیر را روی هر سه سرور اجرا کنید:

sudo systemctl enable mysql

با اجرای دستور فوق خروجی زیر را مشاهده می‌نمایید:

Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.

خروجی فوق نشان می‌دهد که سرویس مد نظرتان با موفقیت به لیست سرویس‌های استارتاپ اضافه شده است.

بالا آوردن اولین نود:

برای بالا آوردن اولین نود، شما نیاز به یک اسکریپت استارتاپ ویژه دارید.

روش مورد استفاده برای پیکربندی کلاستر در این آموزش به گونه‌ای است که در آن هر نود بعد از آنلاین شدن نیاز دارد که برای دریافت حالت اولیه (initial state) حداقل به یک نود دیگر که در فایل galera.cnf برایش مشخص شده، متصل شود. بنابراین، اجرای دستور “systemctl start mysql” با شکست مواجه خواهد شد. زیرا هیچ نود در حال اجرای دیگری وجود ندارد که نود اول بعد از آنلاین شدن به آن متصل شود. راه حل استفاده از اسکریپت mysqld_bootstrap می‌باشد که به systemd اجازه ارسال پارامتر wsrep-new-cluster– را می‌دهد.

کد زیر را روی سرور اول اجرا کنید:

sudo mysqld_bootstrap

در صورت اجرای موفقیت‌آمیز دستور فوق، هیچ خروجی به شما نمایش داده نمی‌شود و بدین ترتیب این سرور به عنوان بخشی از کلاستر ثبت می‌گردد. با اجرای دستور زیر می‌توانید از صحت این موضوع اطمینان حاصل نمایید:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

بعد از وارد کردن پسورد، خروجی زیر را مشاهده می‌کنید که بیانگر وجود یک نود در کلاستر است.

// Output
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

برای سایر نودها می‌توانید mysql را بصورت نرمال استارت کنید. زیرا اکنون در کلاستر حداقل یک نود فعال وجود دارد و هر نود جدیدی که آنلاین شود، با اتصال به آن نود به کلاستر ملحق می‌گردد.

بالا آوردن دومین نود:

برای بالا آوردن دومین نود فرمان زیر را اجرا کنید:

sudo systemctl start mysql

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

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

با اجرای دستور فوق خروجی زیر نمایش داده می‌شود که بیانگر حضور دو نود در کلاستر است:

// Output
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+
بالا آوردن نود سوم:

فرمان زیر را اجرا کنید:

sudo systemctl start mysql

برای پیدا کردن سایز کلاستر دستور زیر را اجرا نمایید:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

خروجی:

// Output
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

خروجی فوق بیانگر الحاق نود سوم به کلاستر است و تعداد کل نودها در کلاستر برابر 3 است.
اکنون کلاستر شما آنلاین شده است و برقراری ارتباط بین گره‌ها نیز صورت می‌گیرد. در گام بعدی نوبت به آزمایش همانندسازی (replication) گره‌ها می‌رسد.


گام هفتم – آزمایش همانندسازی (Replication):

تا اینجا و با پیمودن گام‌های قبلی،کار کانفیگ Galera Cluster با MySQL تقریبا به انتها رسید. ما کلاستر خود را طوری پیکربندی کرده‌ایم که بتواند از هر نودی به نود دیگر عمل همانندسازی را انجام دهد. به این حالت پیکربندی active-active replication می‌گویند. در این حالت ایجاد هر تغییری در هر یک از نودهای کلاستر در سایر نود‌ها نیز اعمال می‌گردد. در این گام شما به تست قابلیت replication یا همانندسازی می‌پردازید تا از صحت عملکرد آن اطمینان یابید.

نوشتن روی نود اول:

کارمان را با ایجاد تغییرات دیتابیس روی نود اول شروع می‌کنیم.

با اجرای فرامین زیر یک دیتابیس با نام playground ساخته و جدولی با نام equipment در آن ایجاد می‌کنیم.

mysql -u root -p -e 'CREATE DATABASE playground;
CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id));
INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");'

در فرامین فوق:
با استفاده از CREATE DATABASE یک دیتابیس جدید با نام playground ایجاد می‌گردد.
با استفاده از CREATE یک جدول با نام equipment درون دیتابیس playground ایجاد می‌گردد. این جدول یک فیلد با نام id دارد که مقدار آن بصورت auto-incrementing جایگذاری خواهد شد. همچنین، سه فیلد دیگر در این جدول تعبیه شده است که وظیفه ذخیره و نگه‌داری مقادیر مربوط به نوع، مقدار و رنگ هر کدام از تجهیزات ذخیره شده در جدول equipment را خواهند داشت.
در حال حاضر با استفاده از دستور INSERT یک رکورد در جدول equipment ایجاد شده است.

خواندن و نوشتن روی نود دوم:

برای اینکه بفهمید همانندسازی (Replication) درست کار می‌کند، به نود دوم نگاه کنید:

mysql -u root -p -e 'SELECT * FROM playground.equipment;'

داده‌هایی که در نود اول، وارد دیتابیس کردید اینجا در نود دوم قابل مشاهده است و این بیانگر صحت عملکرد همانندسازی است:

// Output
+----+-------+-------+-------+
| id | type  | quant | color |
+----+-------+-------+-------+
|  1 | slide |     2 | blue  |
+----+-------+-------+-------+

از همین نود برای وارد کردن یک رکورد جدید در دیتابیس اقدام نمایید:

mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");'
خواندن و نوشتن روی نود سوم:

شما می‌توانید به همه داده‌های موجود در دیتابیس از نود سوم کلاستر نیز دسترسی داشته باشید:

mysql -u root -p -e 'SELECT * FROM playground.equipment;'

خروجی:

// Output
   +----+-------+-------+--------+
   | id | type  | quant | color  |
   +----+-------+-------+--------+
   |  1 | slide |     2 | blue   |
   |  2 | swing |    10 | yellow |
   +----+-------+-------+--------+

همچنین می‌توانید از همین نود اقدام به اضافه نمودن رکورد جدیدی نمایید:

mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("seesaw", 3, "green");'
خواندن نود اول:

در نهایت، با اجرای دستور زیر می‌توانید از دسترسی به داده‌ها روی همه نودهای کلاستر اطمینان بیابید:

mysql -u root -p -e 'SELECT * FROM playground.equipment;'

خروجی دستور فوق روی نود اول بصورت زیر خواهد بود:

// Output
   +----+--------+-------+--------+
   | id | type   | quant | color  |
   +----+--------+-------+--------+
   |  1 | slide  |     2 | blue   |
   |  2 | swing  |    10 | yellow |
   |  3 | seesaw |     3 | green  |
   +----+--------+-------+--------+

بدین ترتیب از صحت عملکرد همانندسازی (replication) در نودهای کلاستر اطمینان حاصل نمودید.


جمع بندی:

در این مطلب با نحوه کانفیگ Galera Cluster با MySQL آشنا شدید و توانستید یک Galera Cluster از نوع active-active با سه نود ایجاد و کانفیگ نمایید. همچنین، مشاهده کردید که با ایجاد تغییر در هر یک از نود‌های کلاستر این تغییر در تمامی نودهای دیگر عضو کلاستر اعمال می‌گردد و در واقع Galera مسئولیت مدیریت و همانندسازی نودهای شما را بخوبی اجرا می‌کند. هدف از راه اندازی این کلاستر با سه نود، تست و کانفیگ Galera Cluster با MySQL بود. اما اگر قصد دارید یک کلاستر برای مصارف حقیقی ایجاد نمایید، توصیه می‌شود که حداقل 5 نود برای راه‌اندازی کلاستر در نظر بگیرید.