ماریا دی بی چیست؟ #
MariaDB مسلماً یکی از پرکاربردترین سیستمهای پایگاه داده رابطهای متنباز برای مبتدیانی است که پایگاههای داده SQL را یاد میگیرند تا توسعهدهندگان باتجربهای که روی پروژههای عظیم فناوری اطلاعات کار میکنند. MariaDB همچنان یکی از محبوبترین سیستمهای مدیریت پایگاه داده رابطهای (RDBMS) است. توسعهدهندگان اغلب با استفاده از کلاینت خط فرمان رسمی MariaDB یا از طریق ابزارهای شخص ثالث مانند کلاینت GUI MariaDB از Devart با سرور تعامل دارند.
MariaDB توسط جامعه توسعه داده شده و جایگزینی برای سرور پایگاه داده MySQL است . این سرور در سال ۲۰۰۹ پس از خرید MySQL توسط Oracle، از سرور پایگاه داده محبوب MySQL منشعب شد.
MariaDB در مقایسه با MySQL عملکرد، سرعت و امنیت بهتری ارائه میدهد. همچنین به لطف تکثیر ناهمزمان Master-slave، در تکثیر از MySQL بهتر عمل میکند.
MariaDB سه نسخه اصلی ارائه میدهد:
- سرور انجمن MariaDB
- سرور سازمانی MariaDB
- ماریادیبی اسکایکیوال
نسخه اجتماعی MariaDB یک نسخه متنباز است که دانلود آن کاملاً رایگان است.
**نسخه MariaDB Enterprise Server** یک نسخه عمومی (Community Edition) با مقیاسپذیری بالاتر است که راهکارهای مدیریت پایگاه داده متنباز و در سطح عملیاتی را با پرداخت هزینه اشتراک ارائه میدهد. این نسخه ویژگیهای اضافی مانند افزونههای اضافی، failover خودکار، فایروال پایگاه داده، هشدارهای امنیتی، پشتیبانی فنی و مشاوره را ارائه میدهد.
نسخه SkySQL ماریادیبی یک راهکار پایگاه داده به عنوان سرویس (DBaaS) است که تمام قدرت نسخه سازمانی را به فضای ابری منتقل میکند. این نسخه ویژگیهای قدرتمند و نوآورانهای را ارائه میدهد که برای پشتیبانی از استقرارهای حیاتی و سازمانی در فضای ابری در نظر گرفته شدهاند. این نسخه به لطف کارایی و ویژگیهای نوآورانه پیشگامانهاش که آن را به یک سرویس پایگاه داده قوی و قابل اعتماد تبدیل میکند، از هزاران پایگاه داده در محیط عملیاتی به راحتی پشتیبانی میکند.
برای مقایسه بهتر بین سه نسخه MariaDB، به صفحه رسمی محصول مراجعه کنید .
شرکتهای برتر که از MariaDB در پشتههای فناوری خود بهره میبرند عبارتند از Red Hat، Verizon، Samsung، Google و ServiceNow که به چند مورد اشاره میکنیم.
در زمان انتشار این راهنما، آخرین نسخههای MariaDB در اینجا آمده است.
- MariaDB 11.0 – آخرین نسخه توسعهای
- MariaDB 10.11 – آخرین نسخه پایدار LTS
نکات برجسته کلیدی آخرین نسخه LTS عبارتند از:
- طرحواره عملکرد
- طرحواره اطلاعاتی
- ویژگیهای پیشرفتهی تکثیر
- بهبودهایی در خوشهبندی Galera
- موتورهای ذخیرهسازی
- مجموعه کاراکترها
- آسیبپذیریهای امنیتی نسخههای قبلی برطرف شدهاند
و خیلی چیزهای دیگر! تمام پیشرفتهای موجود در MariaDB 10.6 را بررسی کنید . در این راهنما، نحوه نصب MariaDB Community Server را در اوبونتو ۲۰.۰۴ خواهید آموخت.
پیش نیازها #
برای دنبال کردن این آموزش نصب MariaDB به مجموعه الزامات زیر نیاز دارید:
- نمونهای از اوبونتو ۲۰.۰۴.
- یک کاربر غیر ادمین با امتیازات sudo که روی نمونه پیکربندی شده است.
چگونه MariaDB را در اوبونتو ۲۰.۴۰ نصب کنیم؟ #
حالا که میدانیم MariaDB چیست، چه کاربردی دارد و به چه پیشنیازهایی نیاز داریم، بیایید به نحوه نصب MariaDB روی سرور اوبونتو ۲۰.۰۴ نگاهی بیندازیم و شروع کنیم.
مرحله ۱: با ورود به سرور اوبونتو، MariaDB را نصب کنید #
برای شروع، وارد سرور اوبونتو ۲۰.۰۴ خود شوید و مخازن محلی را به روزرسانی کنید .
sudo apt update
مخازن اوبونتو از قبل بستههای MariaDB را ارائه میدهند. نصب با استفاده از مدیر بسته PAT به شرح زیر ساده است.
sudo apt install mariadb-server mariadb-client -y
با این حال، نسخه MariaDB ارائه شده توسط مخازن اوبونتو آخرین نسخه نیست. این نسخه MariaDB 10.3.24 را در زمان نگارش این راهنما نصب میکند. برای نصب آخرین نسخه، از مخزن رسمی MariaDB استفاده کنید.
ابتدا بسته پیشنیاز را نصب کنید.
sudo apt install -y software-properties-common
در مرحله بعد، کلید امضای GPG را وارد کنید.
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
پس از قرار دادن کلید GPG، مخزن MariaDB APT را اضافه کنید. مخزن زیر برای نسخه MariaDB 10.6 فعال شده است. میتوانید این مقدار را با نسخهای که قصد نصب آن را دارید جایگزین کنید.
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mariadb.mirror.liquidtelecom.com/repo/10.6/ubuntu focal main'
در نهایت، مخازن محلی را بهروزرسانی کنید و سرور و کلاینت MariaDB را با استفاده از مدیر بسته APT نصب کنید.
sudo apt update && sudo apt install -y mariadb-server mariadb-client
این دستور نسخه مشخص شده از موتور پایگاه داده MariaDB و کلاینت را به همراه سایر بستهها و وابستگیهای اضافی نصب میکند.
شما میتوانید نسخه نصب شده MariaDB را همانطور که نشان داده شده است تأیید کنید.
mariadb --version

مرحله ۲: شروع و فعال کردن MariaDB #
به طور پیشفرض، موتور پایگاه داده MariaDB پس از نصب به طور خودکار شروع به کار میکند. میتوانید با اجرای دستور زیر این موضوع را تأیید کنید:
sudo systemctl status mariadb

از خروجی بالا، میتوانید ببینید که سرویس MariaDB در حال اجرا است. اگر به هر دلیلی متوجه شدید که سرویس غیرفعال است یا در حال اجرا نیست، میتوانید آن را به صورت زیر شروع کنید.
sudo systemctl start mariadb
علاوه بر این، همانطور که نشان داده شده است، فعال کردن MariaDB برای شروع هر بار در هنگام راهاندازی سیستم را در نظر بگیرید.
sudo systemctl enable mariadb
دستور بالا تضمین میکند که MariaDB هر بار که سرور راهاندازی مجدد یا روشن میشود، بهطور خودکار شروع به کار کند.
مرحله ۳: پیکربندی MariaDB #
MariaDB با تنظیمات پیشفرضی ارائه میشود که ضعیف تلقی میشوند و دارای روزنههایی هستند که میتوانند توسط افراد شرور مورد سوءاستفاده قرار گیرند و منجر به نقض دادهها شوند.
برای رفع این مشکل، باید یک قدم اضافی بردارید و نمونه MariaDB خود را مقاوم کنید. برای بهبود امنیت موتور پایگاه داده MariaDB، باید mysql_secure_installationاسکریپت shell را همانطور که نشان داده شده است اجرا کنید.
sudo mysql_secure_installation
این اسکریپت شما را با مجموعهای از دستورات آشنا میکند که از شما میخواهد تغییراتی در گزینههای امنیتی مربوط به موتور پایگاه داده MariaDB ایجاد کنید.
اولین پیغام از شما میخواهد که رمز عبور فعلی root را وارد کنید، و از آنجایی که هنوز رمز عبوری تنظیم نشده است، کافیست کلید ENTER را روی صفحه کلید خود فشار دهید.

در مرحله بعد، از شما رمز عبور ریشه پایگاه داده خواسته میشود. این تضمین میکند که هیچ کس نمیتواند بدون احراز هویت به عنوان کاربر ریشه وارد شود. بنابراین، «Y» را تایپ کنید و رمز عبور ریشه پایگاه داده را وارد کرده و آن را تأیید کنید.

سپس برای نمایش پیامهای بعدی، کلید «Y» را فشار دهید تا موتور پایگاه داده مطابق با بهترین شیوههای امنیتی پیکربندی شود. این کار موارد زیر را انجام میدهد:
- کاربران ناشناس را از سرور پایگاه داده حذف میکند.
- ورود کاربر ریشه از راه دور را غیرفعال میکند. این تضمین میکند که کاربر ریشه فقط میتواند از طریق «localhost» به سرور پایگاه داده وارد شود.
- پایگاه داده آزمایشی که به طور پیشفرض با MariaDB همراه است را حذف کنید.
- جداول امتیاز را برای تغییرات اعمال شده بلافاصله بارگذاری مجدد میکند.

در این مرحله، شما با موفقیت پیکربندی امنیتی اولیه برای MariaDB را انجام دادهاید.
مرحله ۴: پیکربندی یک کاربر ادمین با رمز عبور احراز هویت شده #
در این بخش، شما قصد دارید یک حساب کاربری جدید در سرور پایگاه داده با احراز هویت رمز عبور ایجاد کنید و بعداً امتیازات مدیریتی را به کاربر اختصاص دهید. بنابراین، به عنوان کاربر ریشه به صورت زیر وارد شوید:
sudo mariadb -u root -p
در مرحله بعد، یک کاربر معمولی ایجاد کنید. در اینجا، ما یک کاربر با نام ایجاد میکنیم admin_user. حتماً secret_passwordرمز عبور کاربر مورد نظر خود را جایگزین کنید.
CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'secret_password';
خروجی
Query OK, 0 rows affected (0.000 sec)
در مرحله بعد، تمام امتیازات را به admin_user… اعطا کنید. این کار عملاً تمام مجوزهای کاربر ریشه پایگاه داده را به کاربر اختصاص میدهد.
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost';
نمادگذاری wildcard *.*به این معنی است که کاربر اجازه اجرای هر کاری را روی هر پایگاه دادهای در سرور پایگاه داده دارد.
برای اعمال تغییرات، امتیازات را پاک کنید.
FLUSH PRIVILEGES;
در نهایت، از سرور پایگاه داده خارج شوید.
EXIT;
مرحله ۵: تست MariaDB #
با پیکربندی سرور پایگاه داده MariaDB، اکنون میتوانید وارد سیستم شوید و چند پرس و جو اجرا کنید. با استفاده از کاربر ادمینی که اخیراً ایجاد کردهاید، به سرور پایگاه داده وارد شوید.
sudo mariadb -u admin_user -p

رمز عبور کاربر ادمین را وارد کنید و ENTER را بزنید. درست بالای پوسته MariaDB، جزئیاتی در مورد سرور پایگاه داده از جمله شناسه اتصال، نسخه سرور و اطلاعات حق چاپ نمایش داده میشود.
برای بررسی پایگاههای داده موجود، دستور زیر را اجرا کنید:
SHOW DATABASES;
خروجی
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
۴ rows in set (0.002 sec)
برای ایجاد یک پایگاه داده جدید، کوئری زیر را اجرا کنید. در این مثال، ما یک پایگاه داده به نام ایجاد میکنیم test_db.
CREATE DATABASE test_db;
خروجی
Query OK, 1 row affected (0.000 sec)
برای اعمال تمام تغییرات ایجاد شده بدون راه اندازی مجدد یا بارگذاری مجدد MariaDB، کوئری زیر را اجرا کنید:
> FLUSH PRIVILEGES
خروجی
Query OK, 0 rows affected (0.000 sec)
برای فهرست کردن تمام کاربران موجود در موتور پایگاه داده خود، کوئری زیر را اجرا کنید.
SELECT host, user FROM mysql.user;
خروجی
+-----------+-------------+
| Host | User |
+-----------+-------------+
| localhost | admin_user |
| localhost | mariadb.sys |
| localhost | root |
+-----------+-------------+
۳ rows in set (0.001 sec)
برای خروج از خط فرمان MariaDB، کافیست دستور زیر را اجرا کنید:
QUIT
خروجی
Bye
مرحله ۶: پیکربندی MariaDB برای عملکرد بهینه #
تنظیمات پیشفرض MariaDB به دلیل استفاده کم از منابع، فقط به آن اجازه میدهد تا روی سیستمهای دسکتاپ بهترین عملکرد را داشته باشد. با این حال، اگر قصد دارید MariaDB را در محیط عملیاتی مستقر کنید، باید مراحل دیگری را برای پیکربندی آن انجام دهید تا بتواند حجم کاری عظیم را با عملکرد بهینه مدیریت کند.
در این بخش، برخی از متغیرهایی را که میتوانید برای بهرهبرداری هرچه بیشتر از سرور پایگاه داده خود پیکربندی کنید، بررسی میکنیم.
MariaDB معمولاً با ویرایش فایل پیکربندی پیکربندی میشود /etc/mysql/my.cnf. این فایل شامل تعدادی متغیر است که عملکرد پایگاه داده شما را تعیین میکنند.
برای عملکرد بهینه سرور پایگاه داده، نکات برجسته زیر را در نظر بگیرید:
- اندازه مخزن بافر InnoDB را مشخص کنید
- غیرفعال کردن سوآپنس
- حداکثر تعداد اتصالات را مشخص کنید
- غیرفعال کردن جستجوی DNS در MariaDB/MySQL
- اندازه حافظه پنهان کوئری را مشخص کنید
- فعال کردن گزارشهای پرسوجوی کند
- مقدار اتصالات بیکار را مشخص کنید
بیایید نگاهی سریع به هر یک از این موارد بیندازیم.
اندازه مخزن بافر InnoDB را مشخص کنید #
InnoDB از زمان منسوخ شدن MyISAM در سال ۲۰۱۰، موتور ذخیرهسازی پیشفرض MariaDB است. میتوان آن را طوری پیکربندی کرد که قابلیت اطمینان و عملکرد بالایی را برای سرور پایگاه داده فراهم کند.
innodb_buffer_pool_sizeشما میتوانید با تنظیم پارامتر در فایل ، ذخیرهسازی و نمایهسازی را در MariaDB فعال کنید /etc/mysql/my.cnf. میزان حافظه اختصاص داده شده به این پارامتر به میزان رم سرور شما بستگی دارد.
رایجترین روش این است که این مقدار را روی ۷۰٪ درصد رم موجود در سیستم تنظیم کنید. با این حال، این مقدار برای اکثر سیستمها، به ویژه سیستمهایی که حجم رم بسیار زیادی دارند، بهینه نیست.
برای مثال، سیستمی با ۱۲۸ گیگابایت رم را در نظر بگیرید. با توجه به این قانون، اندازه بافر حدود ۹۰ گیگابایت خواهد بود و تنها ۳۸ گیگابایت برای استفاده توسط سایر فرآیندها باقی میماند.
یک روش بهتر برای بدست آوردن مقدار اندازه توصیه شده برای buffer pool برای سرور پایگاه داده شما، اجرای کوئری زیر است:
SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM
(SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
FROM information_schema.tables WHERE engine='InnoDB') A;
این مقدار، اندازه توصیهشدهی مخزن بافر InnoDB (RIBPS) را ارائه میدهد.
خروجی
+-------+
| RIBPS |
+-------+
| ۱ |
+-------+
۱ row in set (0.032 sec)
از خروجی بالا، اندازه توصیهشده برای InnoDB Buffer pool، ۱ گیگابایت است. این مقدار ممکن است در مورد شما متفاوت باشد.
بنابراین، /etc/mysql/my.cnfفایل پیکربندی را ویرایش کرده و خط زیر را اضافه کنید. حتماً اندازه حافظه را بر اساس نتیجهای که دریافت میکنید، مشخص کنید.
innodb_buffer_pool_size = 1G
تغییرات را ذخیره کنید و MariaDB را مجدداً راه اندازی کنید تا تغییرات اعمال شوند.
sudo systemctl restart mariadb
غیرفعال کردن سواپینگ #
فضای swap یک ناحیه خاص در هارد دیسک است که وقتی رم در حال خالی شدن یا استفاده شدن است، استفاده میشود. وقتی swap اتفاق میافتد، ورودی/خروجی دیسک شما مورد استفاده قرار میگیرد و سرور را به طور قابل توجهی کند میکند. اگر اقدامات لازم انجام نشود، سرور میتواند از کار بیفتد. به همین دلیل، باید swappiness را با اجرای دستور زیر در ترمینال خود غیرفعال کنید.
sudo sysctl -w vm.swappiness=0
حداکثر تعداد اتصالات را مشخص کنید #
این max_connectionsپارامتر تعداد اتصالات همزمانی را که در حال حاضر روی سرور MariaDB شما آغاز شده است، مشخص میکند. تعداد زیاد اتصالات معمولاً منجر به بار زیاد CPU و استفاده از حافظه میشود. برای وبسایتهای کوچک، تعداد اتصالات بین ۳۰۰ تا ۵۰۰ اتصال است در حالی که وبسایتهای پرترافیک بین ۱۰۰۰ تا ۱۵۰۰ اتصال را شامل میشوند.
این max_connectionsمقدار را میتوان با استفاده از کوئری SQL زیر تنظیم کرد. در این مثال، حداکثر تعداد اتصالات روی ۵۰۰ اتصال همزمان تنظیم شده است.
mysql> set global max_connections=500;
غیرفعال کردن جستجوی DNS در MariaDB/MySQL #
وقتی یک اتصال جدید آغاز میشود، MariaDB یک جستجوی DNS برای یافتن آدرس IP بازدیدکننده انجام میدهد. این امر ممکن است در صورت وجود مشکل در سرور DNS یا شناسایی پیکربندی نامعتبر DNS، باعث تأخیر شود.
برای غیرفعال کردن جستجوی DNS، کافیست خط زیر را در /etc/mysql/my.cnfفایل پیکربندی اضافه کنید.
skip-name-resolve
سپس سرویس MariaDB را مجدداً راه اندازی کنید تا تغییرات اعمال شود.
تنظیم اندازه حافظه پنهان پرس و جو #
پارامتر بسیار مهم دیگری که باید لحاظ شود، این query_cache_sizeدستورالعمل است. این دستورالعمل برای ذخیره تمام کوئریهای تکراری با دادههای یکسان استفاده میشود. مقدار این پارامتر برای وبسایتهای کوچک نباید از ۶۴ مگابایت تجاوز کند. تنظیم این مقدار روی گیگابایت حتی برای سایتهای پرترافیک توصیه نمیشود زیرا ممکن است عملکرد پایگاه داده را به میزان قابل توجهی کاهش دهد.
بنابراین، یک بار دیگر، /etc/mysql/my.cnfفایل را به صورت زیر ویرایش کنید.
query_cache_size=64M
تغییرات را ذخیره کنید و دوباره سرویس MariaDB را مجدداً راهاندازی کنید.
مقدار اتصالات بیکار را تنظیم کنید #
اتصالات بیکار میتوانند منابع را ببلعند و منجر به کاهش عملکرد پایگاه داده شوند. این اتصالات وارد حالت «خواب» میشوند و ممکن است برای مدت طولانی در حالت خواب بمانند. میتوانید با اجرای دستور زیر اتصالات بیکار را بررسی کنید.
sudo mysqladmin processlist -u root -p | grep -i "Sleep"
با استفاده از این wait_timeoutدستورالعمل، میتوانید اتصالات غیرفعال را ببندید یا قطع کنید. به طور پیشفرض، این مقدار ۲۸۸۰۰ ثانیه است که میتواند تا ۶۰ ثانیه کاهش یابد. بنابراین، اضافه کردن خط زیر به /etc/mysql/my.cnfفایل پیکربندی را در نظر بگیرید.
wait_timeout=60
فعال کردن گزارشهای کندی کوئریها #
همچنین میتوانید با ثبت کوئریهایی که مدتها طول میکشد تا اجرا شوند، عملکرد سرور پایگاه داده خود را افزایش دهید. این کار عیبیابی مشکلات پایگاه داده که باعث این مشکل میشوند را آسانتر میکند.
برای فعال کردن گزارشهای مربوط به کوئریهای کند، خطوط زیر را به /etc/mysql/my.cnfفایل پیکربندی اضافه کنید.
slow-query-log = 1
slow-query-log-file = /var/lib/mysql/mysql-slow.log
long_query_time = 1
پارامتر اول، امکان پرسوجو از لاگهای کند را فراهم میکند.
مورد دوم به سرور پایگاه داده اطلاع میدهد که کوئریهای کند به چه فایلی منتقل خواهند شد.
پارامتر آخر، حداکثر آستانهای را بر حسب ثانیه برای یک پرسوجوی پایگاه داده مشخص میکند که فراتر از آن، پرسوجو کند محسوب میشود.
نتیجه گیری #
در این راهنما، شما نحوه نصب موفقیتآمیز MariaDB را روی سرور اوبونتو ۲۰.۰۴ آموختهاید. شما با موفقیت سرور پایگاه داده MariaDB را با استفاده از اسکریپت shell نصب، راهاندازی، فعال و ایمن کردهاید . ما همچنین یک قدم فراتر رفته و به برخی از بهترین شیوههایی که میتوانید برای اطمینان از عملکرد بهینه سرور پایگاه داده خود استفاده کنید، نگاهی انداختهایم. برای اطلاعات بیشتر در مورد سرور پایگاه داده، مستندات رسمی MariaDB راmysql_secure_installation بررسی کنید .
