Хајде да научимо како да инсталирамо и конфигуришемо МариаДБ, популарни МиСКЛ систем за управљање релационим базама података (РДБМС) отвореног кода.
Развијена је у заједници и има могућност комерцијалне подршке. Намера МариаДБ-а је да остане веома компатибилна са МиСКЛ-ом, иако постоје нека одступања.
У овом чланку ћемо покрити инсталацију и конфигурацију МариаДБ-а на Убунту 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 $
ОС Оптимизатион
Након инсталације и обезбеђивања МариаДБ подешавања, требало би да предузмете акцију за подешавање вашег ОС-а и базе података за оптималне перформансе. Ово подешавање ће се разликовати у зависности од конфигурације вашег система, типа коришћења, броја корисника и низа других фактора.
Из перспективе ОС-а, неки системски параметри се могу конфигурисати за МариаДБ о чему ћемо сада разговарати.
Подешавања Линук кернела – ИО Сцхедулер
Препоручени ИО планери за МариаДБ су нооп и рок. За проверу користите цат /сис/блоцк/${ДЕВИЦЕ}/куеуе/сцхедулер
$ 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
Више детаља о подешавању ИнноДБ или КстраДБ варијабли можете пронаћи овде. Погледајте ово Водич за све доступне опције подешавања за МариаДБ.
Ако сте заинтересовани, погледајте ове ресурсе да бисте научили СКЛ и НоСКЛ.
Закључак
МариаДБ је један од популарних избора када је у питању релациони ДБМС. Бити отвореног кода са разноликом заједницом додатно доприноси томе.
Да бисте сазнали даље, погледајте његову документацију која укључује теме као што су основни СКЛ, миграција, МариаДБ администрација, висока доступност, подешавање перформанси, машине за складиштење, програмирање и прилагођавање. Можда ћете желети да онемогућите бинарно евидентирање ако не користите кластер.