Могу ли я скопировать всю папку /var/lib/mysql на другой сервер? (MySQL против Мариадб, разные версии)
Раньше у меня была система Linux (LMDE) с MySQL. Система использовала innodb_file_per_table для большинства баз данных. (не уверен насчет версии, какой бы ни был "последний" в LMDE)
Я сейчас на новой системе (Manjaro/Arch) с MariaDB.
$ mysql --version
mysql Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1
В старой системе было много больших баз данных, которые я бы предпочел не копировать с помощью mysqldump. Я бы предпочел скопировать папку /var/lib/mysql из старой системы.
Это возможно?
1 ответ
Да, это возможно. (Я понял это, когда писал вопрос)
- Установите MariaDB в новой системе Arch, убедитесь, что она работает.
Сделайте ваши изменения в /etc/mysql/my.cnf. Например, innodb_file_per_table.
(больше из этого выходит за рамки этого вопроса) sudo systemctl stop mysqld
,
(Вы хотите остановиться на обоих серверах, но в моем случае другой был уже выключен)- Переименуйте папку / var / lib / mysql, например, в / var / lib / _mysql.
- Скопируйте старую папку / var / lib / mysql из старой системы Debian (LMDE).
- Восстановите владение файлом в mysql:mysql для всего в /var/lib/mysql:
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mysqld
,
->Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
sudo systemctl status mysqld
,
-> Это показывает, что служба работает, но некоторые вещи идут не так, как надо. Это то, для чего mysql_upgrade.mysql_upgrade -u root -p
Заметки:- Это пароль root для mysql из старой системы!
- Мне пришлось удалить одну оставшуюся папку из / var / lib / mysql из-за неверного имени базы данных.
- Файл /var/lib/mysql/mysql_upgrade_info должен быть доступен для записи.
- Процесс может занять некоторое время.
sudo systemctl restart mysqld
,
ПРЕДУПРЕЖДЕНИЕ: Очевидно, вы не можете перейти на более низкую версию MySQL. Я попытался перенести свои базы данных в MySQL 5.5 (точнее, в соответствующий MariaDB), и сервер не запустился. Я должен был установить MySQL 5.6 вместо этого. (MariaDB, соответствующая MySQL 5.6, недоступна в моем дистрибутиве Linux).