كيفية تثبيت وتهيئة MariaDB على Ubuntu & CentOS

دعنا نتعلم كيفية تثبيت وتهيئة MariaDB ، وهو نظام إدارة قواعد بيانات MySQL شهير مفتوح المصدر (RDBMS).

إنه مجتمع متطور ولديه خيار الدعم التجاري. تم تصميم MariaDB ليظل متوافقًا بشكل كبير مع MySQL على الرغم من وجود بعض الانحرافات.

في هذه المقالة ، سنغطي تثبيت MariaDB وتكوينه على Ubuntu 20.x و CentOS 7.x / 8.x وفي النهاية سنراجع بعض أفضل الممارسات لتأمين وتحسين أدائه.

MariaDB على أوبونتو

في Ubuntu 20.x ، يتوفر MariaDB مباشرة من مستودعاته الافتراضية. سنستخدم مناسبًا لهذه المهمة.

قم أولاً بتحديث بيانات مستودعات apt عن طريق:

$ sudo apt update

بمجرد تحديث بيانات المستودع ، قم بتشغيل:

$ sudo apt install mariadb-server

سيؤدي هذا إلى تثبيت MariaDB والحزم المطلوبة. قم بالتأكيد باستخدام “Y” لأي مطالبات قد تتلقاها أثناء تنفيذ الأمر السابق.

Do you want to continue? [Y/n] Y

MariaDB على CentOS 7.x

بالنسبة لنظام CentOS 7.x ، يكون إصدار MariaDB المتاح من مستودع CentOS الافتراضي هو 5.x. سنقوم بتثبيت أحدث إصدار متوفر من MariaDB.

لهذا ، نحتاج أولاً إلى تهيئة مستودع yum إضافي. يوفر MariaDB طريقة سهلة لاستخدام البرنامج النصي mariadb_repo_setup. للحصول على إعداد المستودع ، قم بتشغيل الأوامر التالية على نظام CentOS 7.x الخاص بك:

$ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

سيقوم هذا البرنامج النصي بإعداد مستودع yum المطلوب لتثبيت أحدث إصدار من MariaDB تلقائيًا. في وقت كتابة هذا المقال ، كانت الساعة 10.x.

أو في حالة رغبتك في السير بالطريقة اليدوية ، يمكنك تكوين مستودع yum يدويًا عن طريق إنشاء ملف repo جديد على النحو التالي:

$ sudo vi /etc/yum.repos.d/MariaDB.repo

ثم أضف التفاصيل التالية إلى ملف الريبو واحفظه:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

الآن لتثبيت MariaDB ، قم بتشغيل الأمر التالي:

$ sudo yum install MariaDB-server

قم بتأكيد أي مطالبات تظهر أثناء التثبيت بإدخال “y”:

Is this ok [y/d/N]: y

هذا يكمل تثبيت خادم MariaDB والحزم التابعة.

MariaDB على CentOS 8.x

بالنسبة لنظام CentOS 8.x ، الإصدار المتاح من المستودعات الافتراضية هو 10.3 أو أحدث. يمكننا تثبيت MariaDB مباشرة باستخدام أمر DNF:

sudo dnf install mariadb-server

بخلاف ذلك ، للحصول على أحدث إصدار متاح ، يمكنك اتباع الطريقة اليدوية كما هو موضح في القسم السابق لـ CentOS 7.x وهذا من شأنه أن يجعلك تعمل.

بدء MariaDB

على جهاز Ubuntu ، سيكون لديك خدمة MariaDB تعمل مباشرة بعد التثبيت بينما بالنسبة لـ CentOS ، علينا تمكين الخدمات ذات الصلة وبدء تشغيلها يدويًا.

على أي حال ، بالنسبة إلى Ubuntu وكذلك CentOS ، قم بتشغيل الأوامر التالية لبدء تشغيل خدمة MariaDB ، وتمكينها عند التمهيد وكذلك التحقق منها:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

انتاج:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$

تأمين MariaDB

كخطوة أولى بعد تثبيت MariaDB ، يجب علينا تأمين نشره عن طريق تعيين كلمة مرور جذر وتعطيل تسجيل الدخول إلى الجذر عن بُعد وإزالة قاعدة بيانات الاختبار والمستخدمين المجهولين وأخيرًا إعادة تحميل الامتيازات.

  كيفية تحويل الصور الحية إلى مقاطع فيديو أو صور GIF على جهاز iPhone الخاص بك

قم بتشغيل الأمر التالي لتقوية MariaDB:

$ sudo mysql_secure_installation

يمكنك اتباع المطالبات الافتراضية بالإجراءات المقترحة ما لم يكن لديك متطلب محدد للانحراف.

انتاج:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

سنستخدم هنا مصادقة النظام ، لذلك لم تقم بإعداد كلمة مرور جذر منفصلة لـ MariaDB ، لأنها آمنة بالفعل. إذا كنت بحاجة إلى ذلك ، يمكنك دائمًا إعداد كلمة مرور جذر منفصلة أيضًا.

التحقق من صحة الإعداد

للتحقق من إعداد MariaDB الخاص بك ، قم بتشغيل (حدد كلمة المرور التي أعددتها أثناء تشغيل mysql_secure_installation أو ، إذا تم تخطيها في ذلك الوقت ، فاستخدم بيانات اعتماد الجذر لنظامك):

$ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

يمكنك إعداد حساب مسؤول جديد بدلاً من الجذر كما هو موضح أدناه (قم بتغيير قيمة كلمة المرور بالحساب الذي تنوي تعيينه لحساب المسؤول):

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

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)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

تحقق من الوصول باستخدام مستخدم مسؤول جديد مثل (أدخل كلمة المرور كما تم تعيينها في الخطوة السابقة):

$ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

تحسين نظام التشغيل

بعد التثبيت وتأمين إعداد MariaDB الخاص بك ، يجب عليك اتخاذ إجراء لضبط نظام التشغيل وقاعدة البيانات للحصول على الأداء الأمثل. سيختلف هذا الضبط بناءً على تكوين النظام ونوع الاستخدام وعدد المستخدمين وعدد من العوامل الأخرى.

  كيفية استخدام توازن اللون الأبيض في صور Google

من منظور نظام التشغيل ، يمكن تكوين بعض معلمات النظام لـ MariaDB والتي سنناقشها الآن.

إعدادات Linux Kernel – IO Scheduler

جدولة IO الموصى بها لـ MariaDB هي الموعد النهائي والموعد النهائي. للتحقق ، استخدم cat / sys / block / $ {DEVICE} / queue / Scheduler

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

يمكن إجراء تغيير مؤقت بإصدار الأمر التالي وسيكون تأثيره ، إن وجد ، فوريًا على أداء النظام:

$ sudo echo noop > /sys/block/sda/queue/scheduler

لجعله ثابتًا ، ستحتاج إلى تكوينه في ملف تكوين GRUB كما هو موضح أدناه في / etc / default / grub ، وإعادة بناء GRUB ، وإعادة تشغيل النظام.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

حدود الموارد – حد الملفات المفتوحة

عادةً ما يحد نظام Linux من عدد واصفات الملفات التي يمكن لكل عملية فتحها. بالنسبة لنظام قاعدة بيانات نشط ، يمكن أن يتجاوز هذا الحد بسهولة الأداء أو قد يؤثر عليه. في العديد من أنظمة Linux ، يكون هذا الحد الافتراضي هو 1024. علاوة على ذلك ، هناك خيار للحدود الناعمة والصعبة.

لزيادة الحد ، يمكنك إضافة الأسطر التالية في /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

ستكون هناك حاجة إلى إعادة تشغيل النظام بعد نشر أي مستخدم mysql سيكون قادرًا على رؤية واستخدام الحدود الجديدة. يمكن التحقق من ذلك على النحو التالي:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

حدود الموارد – حجم الملف الأساسي

يحدد Linux حجم الملفات الأساسية كما رأينا في الحالة السابقة. مرة أخرى ، يحتوي هذا على حد ضعيف وصعب ويتم تعيين حد ضعيف افتراضيًا على 0 مما يؤدي إلى تعطيل إنشاء الملفات الأساسية بشكل فعال. للسماح بإنشاء الملف الأساسي (التكوينات الأخرى اللازمة لتوليد التفريغ الأساسي) ، يمكننا زيادة هذه القيمة في /etc/security/limits.conf على النحو التالي:

mysql soft core unlimited
mysql hard core unlimited

بعد إعادة تشغيل النظام ، سيتمكن مستخدم mysql من رؤية القيم الجديدة باستخدام الأمر ulimit على النحو التالي:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

تكوين Swappiness

تحدد قيمة Swappiness في Linux مدى احتمالية قيام النظام بتبديل صفحة من الذاكرة إلى مساحة مبادلة تم تكوينها على النظام. عادة ، يتم تعيين القيمة الافتراضية على 60 والتي يمكن التحقق منها من:

sysctl vm.swappiness

يمكن أن تتراوح قيمته من 0 إلى 100 ، حيث تعني القيمة الأقل احتمالية أقل للمبادلة. على خادم قاعدة البيانات الذي يقوم بتشغيل MariaDB فقط ، نود تقليل هذه القيمة إلى 0 لتجنب استخدام المبادلة قدر الإمكان. لاحظ هنا أن إعداد قيمة المبادلة 0 يجب أن يتم بحذر مع مراعاة عوامل تصميم النظام الأخرى ، كما في حالة استخدام الذاكرة العالية أو تحميل الإدخال / الإخراج ، هناك فرصة لقتل عملية نفاد الذاكرة (OOM) بواسطة kernel.

  كيفية مصادقة المستخدم وتفويضه باستخدام JWT في NodeJS

نظرًا لأنه يوصى بإعداد مبادلة منخفضة لأحمال عمل قاعدة البيانات وعلى هذا النحو لقواعد بيانات MariaDB ، فمن المستحسن تعيين Swappiness على قيمة 1. يمكنك إضافة السطر أدناه في /etc/sysctl.conf لجعل هذا التغيير مستمرًا:

vm.swappiness = 1

ستصبح التغييرات سارية المفعول بعد إعادة تشغيل النظام على الرغم من أنه يمكنك دائمًا القيام بذلك مسبقًا باستخدام الأمر sysctl:

sysctl -w vm.swappiness=1

تحسينات نظام الملفات

بالنسبة لـ MariaDB ، تعتبر أفضل أنظمة ملفات Linux بشكل عام ext4 و XFS و Btrfs والتي يتم تضمينها جميعًا في نواة Linux الرئيسية ويتم دعمها على نطاق واسع. أنظمة الملفات هذه متوفرة في معظم توزيعات Linux. لكل نظام ملفات خصائصه وميزاته الفريدة ويمكن اختياره بناءً على المتطلبات بعد المراجعة المناسبة.

علاوة على ذلك ، من غير المحتمل أنك ستحتاج إلى تسجيل وقت الوصول إلى الملف على خادم قاعدة البيانات. يمكننا تعطيل هذا لتحسين الأداء. يمكنك تثبيت نظام الملفات ذي الصلة باستخدام خيار noatime أو إضافته في خيارات التحميل في ملف / etc / fstab لجعله ثابتًا.

تحسين قاعدة البيانات

هناك العديد من التوليفات الداخلية لأداء MariaDB والتي يمكن تخصيصها بناءً على متطلبات واحتياجات الفرد.

سنناقش القليل منهم هنا.

يتم تكوين MariaDB في الغالب بواسطة ملف my.cnf.

على Ubuntu ، يمكنك العثور على my.cnf على:

/etc/mysql/my.cnf

أثناء وجوده في CentOS ، يقع في:

/etc/my.cnf

يمكن الرجوع إلى الوثائق التفصيلية حول المتغيرات المتوفرة للضبط في ملف التكوين هنا.

يعتمد الكثير أيضًا على نوع المحرك الذي تستخدمه MariaDB ، أي MyISAM و InnoDB أو XtraDB. كلاهما لهما مجموعة من الإيجابيات والسلبيات ويعتمد اختيار أحدهما على متطلبات قاعدة البيانات والتطبيق.

يجب أن نضع innodb_buffer_pool_size على حوالي 80٪ من ذاكرتك. هذا يضمن أن 80٪ من مجموعة العمل الخاصة بك موجودة في الذاكرة.

بعض المعلمات الأخرى القابلة للضبط المهمة هي:

innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

يمكن العثور على مزيد من التفاصيل حول ضبط متغيرات InnoDB أو XtraDB هنا. الرجوع إلى هذا يرشد لجميع خيارات الضبط المتاحة لـ MariaDB.

إذا كنت مهتمًا ، تحقق من هذه الموارد لتعلم SQL و NoSQL.

استنتاج

يعد MariaDB أحد الخيارات الشائعة عندما يتعلق الأمر بعلاقة DBMS. إن كونك مفتوح المصدر مع مجتمع متنوع يضيف إليها المزيد.

لمعرفة المزيد ، يرجى الرجوع إلى توثيق والذي يتضمن موضوعات مثل SQL الأساسية ، والترحيل ، وإدارة MariaDB ، والتوافر العالي ، وضبط الأداء ، ومحركات التخزين ، والبرمجة ، والتخصيص. قد ترغب أيضًا في تعطيل التسجيل الثنائي في حالة عدم استخدام نظام مجموعة.