Как использовать файлы резервных копий файлов MySQL вместо тома по умолчанию
У меня есть сервер, размещенный на Scaleway с несколькими промежуточными сайтами.
Я случайно заархивировал сервер вместо того, чтобы выключить его, что означает, что данные MySQL для моих сайтов в настоящее время хранятся в /mnt/volume0/var/lib/mysql
Однако MySQL в настоящее время смотрит на /var/lib/mysql
поэтому ни одна из моих баз данных не берется.
Как я могу заставить MySQL посмотреть путь к данным MySQL на томе?
Я пытался следовать этому руководству: https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16-04
Однако, когда дело доходит до запуска MySQL снова, я получаю:
Job for mysql.service failed because the control process exited with
error code. See "systemctl status mysql.service" and "journalctl -xe"
for details.
И работает systemctl status mysql
дает:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: activating (start-post) (Result: exit-code) since Wed 2017-06-28 17:53:13 UTC; 2s ago
Process: 16742 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Process: 16734 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 16742 (code=exited, status=1/FAILURE); : 16743 (mysql-systemd-s)
CGroup: /system.slice/mysql.service
└─control
├─16743 /bin/bash /usr/share/mysql/mysql-systemd-start post
└─16751 sleep 1
Я бы попробовал переместить содержимое /mnt/volume0/var/lib/mysql
в /var/lib/mysql
Однако, насколько я понимаю, если бы я сделал, у меня не хватило бы места на сервере
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1010M 0 1010M 0% /dev
tmpfs 203M 29M 175M 14% /run
none 1012M 845M 168M 84% /
tmpfs 1012M 0 1012M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1012M 0 1012M 0% /sys/fs/cgroup
/dev/nbd0 46G 46G 0 100% /mnt/volume0
/dev/nbd1 92G 41G 47G 47% /mnt/volume
Спасибо!
2 ответа
Если вам нужно временное решение:
mount -o bind /mnt/volume0/var/lib/mysql /var/lib/mysql
Или в MySQL, в /etc/my.cnf вам нужно изменить datadir, чтобы он указывал на новую папку. Например datadir=/mnt/volume0/var/lib/mysql
, Убедитесь, что /mnt/volume0/var/lib/mysql доступен для записи.
Я решил эту проблему, заменив содержимое /var/lib/mysql/
на моей локальной машине с содержимым /mnt/volume0/var/lib/mysql/
(с сервера).
Затем я столкнулся с ошибкой при попытке запустить MySQL Table "performance_schema.session_variables" не существует, которую я решил, обновив MySQL на моей локальной машине и перезапустив: https://stackoverflow.com/a/20262826/8231049
Теперь я могу сбросить базы данных с моей локальной машины:)
Изменить: Не могу принять мой ответ, прежде чем ждать 2 дня. Сделаем потом.