Назад | Перейти на главную страницу

Как использовать резервную копию файлов 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

Спасибо!

Если вам нужно временное решение:

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 «performance_schema.session_variables» не существует, что я решил, обновив MySQL на моем локальном компьютере и перезапустив: https://stackoverflow.com/a/20262826/8231049

Теперь я могу выгружать базы данных с моей локальной машины :)

Изменить: не могу принять свой ответ, не дождавшись 2 дней. Тогда сделаю.