Как говорилось ранее, система MariaDB привлекает, благодаря высокому показателю быстродействия и оптимизации работы. Именно поэтому в случае высоконагруженных проектов имеет смысл задуматься о переходе на MariaDB, что покажет высокий прирост скорости работы с базами данных.
Переход с MySQL на MariaDB не доставит особых трудностей:
Так называемая миграция с платформы на платформу производится на:
# cat /etc/redhat-release
CentOS release 6.5 (Final)
# uname -p
x86_64
Для начала создаётся дамп всех баз:
1 | # mysqldump -u root -p -A > alldbs.sql |
2 | Enter password: |
3 | — Warning: Skipping the data of table mysql.event. Specify the —events option explicitly. |
Затем останавливается работа MySQL:
1 | # service mysqld stop |
2 | Stopping mysqld: [ OK ] |
Следуя информации из официального источника HowTo, установка MariaDB возможна поверх имеющейся системы MySQL. Тем не менее, это может повлечь за собой ряд проблем, связанных с установкой зависимостей.
Исходя из этого, в процессе замещения стоит уделить все связанные между собой пакеты.
1 | # yum -y remove mysql* mysql-server mysql-devel mysql-libs |
2 | … |
3 | Removing for dependencies: |
4 | dovecot-mysql x86_64 1:2.0.9-7.el6_5.1 @updates 18 k |
5 | mysql-server x86_64 5.1.73-3.el6_5 @updates 25 M |
6 | perl-DBD-MySQL x86_64 4.013-3.el6 @base 338 k |
7 | php-mysql x86_64 5.3.3-27.el6_5.1 @updates 216 k |
8 | … |
Следующим шагом отключаем автозагрузку:
1 | # chkconfig mysqld off |
Теперь можно приступать к непосредственной установке MariaDB.
Первым шагом в файле /etc/yum.repos.d/MariaDB.repo прописываем:
1 | [mariadb] |
2 | name = MariaDB |
3 | baseurl = http://yum.mariadb.org/5.5/centos6-amd64 |
4 | gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB |
5 | gpgcheck=1 |
6 | priority=1 |
7 | #enabled=0 |
Производим процесс установки:
1 | # yum -y install MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared |
Осуществляем запуск при помощи следующего блока:
1 | # service mysql start |
2 | Starting MySQL.. SUCCESS! |
1 | # chkconfig mysql on |
2 | # chkconfig —list | grep mysql |
3 | mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
Далее выполняем действия по первоначальной настройке программы:
1 | # /usr/bin/mysql_secure_installation |
Затем необходимо вновь установить пакеты, что были удалены вместе с MySQL:
1 | # yum -y install php-mysql dovecot-mysql perl-DBD-MySQL exim-mysql |
2 | … |
3 | Installed: |
4 | dovecot-mysql.x86_64 1:2.0.9-7.el6_5.1 perl-DBD-MySQL.x86_64 0:4.013-3.el6 php-mysql.x86_64 0:5.3.3-27.el6_5.1 |
В случае удаления MySQL, файл конфигурации сохраняется как /etc/my.cnf.rpmsave.
Теперь необходимо удалить имеющийся файл, созданный MariaDB:
1 | # mv /etc/my.cnf /etc/my.cnf.bkp-24-08-2014 |
Выполняем копирование сохранённого файла:
1 | # cp /etc/my.cnf.rpmsave /etc/my.cnf |
Следующим этапом выполняем перезапуск сервера:
1 | # service mysql restart |
2 | Shutting down MySQL. SUCCESS! |
3 | Starting MySQL.. SUCCESS! |
Обратите ваше внимание на то, что некоторые из опций из my.cnf для MySQL могут быть несовместимы (к примеру, в связи с отличиями в типах хранилищ), несмотря на то, что разработчиком заявлена комплексная поддержка.
В случае возникновения трудностей с запуском программы, необходимо воспользоваться следующим решением:
1 | # service mysql start |
2 | Starting MySQL… ERROR! |
Затем включаем логирование:
1 | [mysqld_safe] |
2 | syslog |
В завершение контролируем лог /var/log/messages:
1 | Aug 24 11:49:03 venti mysqld: 140824 11:49:03 [ERROR] /usr/sbin/mysqld: unknown option ‘—skip-locking’ |
В случае успешной реализации процесса, необходимо включить автозагрузку при помощи следующей комбинации:
1 | # chkconfig mysql on |
Далее выполняем проверку установки:
1 | # mysql -V |
2 | mysql Ver 15.1 Distrib 5.5.39-MariaDB, for Linux (i686) using readline 5.1 |
1 | # netstat -anp | grep 3306 |
2 | tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2823/mysqld |
3 | # service mysql status |
4 | SUCCESS! MySQL running (2823) |
На данном этапе необходимо обеспечить присутствие баз данных:
01 | MariaDB [(none)]> show databases; |
02 | +———————+ |
03 | | Database | |
04 | +———————+ |
05 | | information_schema | |
06 | | autocomtestdb | |
07 | | db_1 | |
08 | | mysql | |
09 | | roundcube | |
10 | | setevoy_money_db1 | |
11 | | setevoy_test | |
12 | | setevoyorgua_db1 | |
13 | | vexim | |
14 | +———————+ |
При возникновении проблем с перезагрузкой сервера, необходимо загрузить дамп базы:
1 | # mysql -u root -p < alldbs.sql |
2 | Enter password: |
Далее выполняем перезапуск сервисов:
1 | # service httpd restart |
2 | Stopping httpd: [ OK ] |
3 | Starting httpd: [ OK ] |
1 | # service dovecot restart |
2 | Stopping Dovecot Imap: [ OK ] |
3 | Starting Dovecot Imap: [ OK ] |
1 | # service exim restart |
2 | Shutting down exim: [ OK ] |
3 | Starting exim: [ OK ] |
Завершаем установку проверкой лога Dovecot:
1 | Aug 24 11:34:58 venti dovecot: master: Warning: Killed with signal 15 (by pid=32207 uid=0 code=kill) |
2 | Aug 24 11:34:59 venti dovecot: master: Dovecot v2.0.9 starting up (core dumps disabled) |
3 | Aug 24 11:35:05 venti dovecot: auth: mysql: Connected to localhost (vexim) |
4 | Aug 24 11:35:05 venti dovecot: auth: mysql: Connected to localhost (vexim) |
И лога Exim:
1 | 2014-08-24 12:15:05 exim 4.72 daemon started: pid=2452, -q1h, listening for SMTP on port 25 (IPv6 and IPv4) port 250 (IPv6 and IPv4) |
Данный алгоритм позволит вам успешно осуществить замещение, сэкономив ваше время и нервные клетки.