Како инсталирати и конфигурисати МариаДБ на Убунту и ЦентОС

Хајде да научимо како да инсталирамо и конфигуришемо МариаДБ, популарни МиСКЛ систем за управљање релационим базама података (РДБМС) отвореног кода.

Развијена је у заједници и има могућност комерцијалне подршке. Намера МариаДБ-а је да остане веома компатибилна са МиСКЛ-ом, иако постоје нека одступања.

У овом чланку ћемо покрити инсталацију и конфигурацију МариаДБ-а на Убунту 20.к и ЦентОС 7.к/8.к и на крају ћемо прегледати неке најбоље праксе за обезбеђивање и побољшање његових перформанси.

МариаДБ на Убунту

На Убунту 20.к, МариаДБ је доступан директно из својих подразумеваних спремишта. Користићемо апт за овај задатак.

Прво ажурирање података апт спремишта од:

$ sudo apt update

Када се подаци спремишта ажурирају, покрените:

$ sudo apt install mariadb-server

Ово ће инсталирати МариаДБ и потребне пакете. Потврдите са ‘И’ за све упите које можете добити током извршавања претходне команде.

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

МариаДБ на ЦентОС 7.к

За ЦентОС 7.к, доступна верзија МариаДБ-а из подразумеваног ЦентОС спремишта је 5.к. Инсталираћемо најновију доступну верзију МариаДБ-а.

За ово морамо прво да конфигуришемо додатно иум спремиште. МариаДБ пружа једноставан начин за коришћење скрипте мариадб_репо_сетуп. Да бисте добили подешавање спремишта, покрените следеће команде на свом ЦентОС 7.к систему:

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

Ова скрипта ће подесити потребно иум спремиште да аутоматски инсталира најновију верзију МариаДБ-а. У време писања овог чланка, то је 10.к.

Или у случају да желите да идете ручним путем, можете да конфигуришете ручно иум спремиште тако што ћете креирати нову репо датотеку као:

$ 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

Сада да бисте инсталирали МариаДБ, покрените наредбу испод:

$ sudo yum install MariaDB-server

Потврдите све упите који се појављују током инсталације уносом ‘и’:

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

Овим је завршена инсталација МариаДБ сервера и зависних пакета.

МариаДБ на ЦентОС 8.к

За ЦентОС 8.к, доступна верзија из подразумеваних спремишта је 10.3 или новија. Можемо директно да инсталирамо МариаДБ користећи ДНФ команду:

sudo dnf install mariadb-server

У супротном, да бисте добили најновију доступну верзију, можете следити ручни начин као што је дато у претходном одељку за ЦентОС 7.к и то би требало да вам помогне.

Покретање МариаДБ

На Убунту машини, имаћете МариаДБ услугу која се покреће одмах након инсталације, док за ЦентОС морамо ручно да омогућимо и покренемо релевантне услуге.

У сваком случају, за Убунту као и за ЦентОС, покрените доње команде да бисте покренули МариаДБ услугу, омогућили при покретању и потврдили је:

$ 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.
$

Обезбеђивање МариаДБ-а

Као први корак након инсталације МариаДБ-а, требало би да обезбедимо његову примену постављањем роот лозинке, онемогућавањем удаљене роот пријаве, уклањањем тест базе података као и анонимних корисника и на крају поново учитавањем привилегија.

  Како ресетовати страницу истраживања Инстаграма

Покрените доњу команду да бисте учврстили МариаДБ:

$ 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!
$

Овде ћемо користити аутентификацију система, тако да нисмо поставили посебну роот лозинку за МариаДБ, јер је већ безбедна. Ако је потребно, увек можете да подесите и посебну роот лозинку.

Валидација подешавања

Да бисте верификовали подешавање МариаДБ-а, покрените (наведите лозинку коју сте поставили током покретања мискл_сецуре_инсталлатион или, ако се прескочи у том тренутку, користите роот акредитиве вашег система):

$ 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
$

ОС Оптимизатион

Након инсталације и обезбеђивања МариаДБ подешавања, требало би да предузмете акцију за подешавање вашег ОС-а и базе података за оптималне перформансе. Ово подешавање ће се разликовати у зависности од конфигурације вашег система, типа коришћења, броја корисника и низа других фактора.

  13 СМТП алата за дијагностицирање и тестирање сигурности е-поште

Из перспективе ОС-а, неки системски параметри се могу конфигурисати за МариаДБ о чему ћемо сада разговарати.

Подешавања Линук кернела – ИО Сцхедулер

Препоручени ИО планери за МариаДБ су нооп и рок. За проверу користите цат /сис/блоцк/${ДЕВИЦЕ}/куеуе/сцхедулер

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

Привремена промена може да се уради издавањем следеће команде и њен ефекат, ако постоји, биће тренутан на перформансе система:

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

Да бисте га учинили постојаним, мораћете да га конфигуришете у ГРУБ-овој конфигурационој датотеци као што је приказано испод у /етц/дефаулт/груб, поново изградите ГРУБ и поново покренете систем.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Ограничења ресурса – Ограничење отворених датотека

Линук обично ограничава број дескриптора датотека који сваки процес може да отвори. За активан ДБ систем, ово ограничење може лако премашити или утицати на перформансе. На многим Линук системима, ово ограничење је подразумевано на 1024. Даље, постоји опција меких и тврдих ограничења.

Да бисте повећали ограничење, можете додати следеће редове у /етц/сецурити/лимитс.цонф:

mysql soft nofile 65535
mysql hard nofile 65535

Након што ће корисник МиСКЛ-а моћи да види и користи нова ограничења, биће потребно поновно покретање система. Ово се може проверити као:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Ограничења ресурса – величина основне датотеке

Линук ограничава величину основних датотека као што се види у претходном случају. Опет, ово има меко и тврдо ограничење и подразумевано је меко ограничење постављено на 0 што ефективно онемогућава генерисање основних датотека. Да бисте омогућили генерисање основне датотеке (друге конфигурације потребне за генерисање дампа језгра), можемо повећати ову вредност у /етц/сецурити/лимитс.цонф као:

mysql soft core unlimited
mysql hard core unlimited

Након поновног покретања система, мискл корисник би могао да види нове вредности користећи улимит команду као:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Конфигуришите Сваппинесс

  Како да прегледате као гост у Цхроме-у и на Цхромебоок-у

Вредност замене у Линук-у одређује колико је вероватно да ће систем заменити страницу из меморије у простор за замену конфигурисан на систему. Обично је подразумевана вредност постављена на 60 која се може проверити из:

sysctl vm.swappiness

Његова вредност може да се креће од 0 до 100, при чему нижа вредност значи мању вероватноћу замене. На серверу базе података који користи само МариаДБ, желели бисмо да смањимо ову вредност на 0 да бисмо избегли коришћење размене колико год је то могуће. Имајте на уму да подешавање вредности замене од 0 треба да буде обављено са опрезом имајући у виду друге факторе дизајна система, јер у случају велике употребе меморије или И/О оптерећења, постоји шанса да кернел уништи процес Оут Оф Мемори (ООМ).

Пошто се за радна оптерећења базе података и као таква за МариаДБ базе података препоручује ниско подешавање заменљивости, препоручује се да се заменљивост подеси на вредност од 1. Можете додати ред испод у /етц/сисцтл.цонф да бисте ову измену учинили трајном:

vm.swappiness = 1

Промене ће ступити на снагу након поновног покретања система, мада то увек можете учинити унапред користећи сисцтл команду:

sysctl -w vm.swappiness=1

Оптимизације система датотека

За МариаДБ, најбољи Линук системи датотека се генерално сматрају ект4, КСФС и Бтрфс који су сви укључени у главно језгро Линука и широко су подржани. Ови системи датотека су доступни у већини Линук дистрибуција. Сваки систем датотека има своја јединствена својства и карактеристике и може се изабрати на основу захтева након одговарајућег прегледа.

Даље, мало је вероватно да ћете морати да бележите време приступа датотеци на серверу базе података. Можемо да онемогућимо ово да побољшамо перформансе. Можете монтирати релевантни систем датотека са опцијом ноатиме или га додати у опције монтирања у /етц/фстаб датотеци да бисте га учинили постојаним.

ДБ Оптимизатион

Постоји неколико подешавања интерних за МариаДБ функционисање који се могу прилагодити на основу нечијих захтева и потреба.

Овде ћемо разговарати о неколико њих.

МариаДБ се углавном конфигурише помоћу ми.цнф датотеке.

На Убунту-у можете пронаћи ми.цнф на:

/etc/mysql/my.cnf

Док је на ЦентОС-у, налази се на:

/etc/my.cnf

Детаљна документација о томе које су варијабле доступне за подешавање у конфигурационој датотеци може се упутити на овде.

Много тога зависи и од типа машине коју МариаДБ користи, наиме, МиИСАМ и ИнноДБ или КстраДБ. Оба имају своје предности и недостатке, а избор једног зависи од захтева базе података и апликација.

Требало би да поставимо иннодб_буффер_поол_сизе на око 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

Више детаља о подешавању ИнноДБ или КстраДБ варијабли можете пронаћи овде. Погледајте ово Водич за све доступне опције подешавања за МариаДБ.

Ако сте заинтересовани, погледајте ове ресурсе да бисте научили СКЛ и НоСКЛ.

Закључак

МариаДБ је један од популарних избора када је у питању релациони ДБМС. Бити отвореног кода са разноликом заједницом додатно доприноси томе.

Да бисте сазнали даље, погледајте његову документацију која укључује теме као што су основни СКЛ, миграција, МариаДБ администрација, висока доступност, подешавање перформанси, машине за складиштење, програмирање и прилагођавање. Можда ћете желети да онемогућите бинарно евидентирање ако не користите кластер.