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