如何使用卷上的备份 MySQL 文件而不是默认文件

如何使用卷上的备份 MySQL 文件而不是默认文件

我在 Scaleway 上托管一个服务器,上面有多个登台站点。

我意外地存档了服务器而不是将其关闭,这意味着我的网站的 MySQL 数据当前存储在/mnt/volume0/var/lib/mysqlMySQL 当前正在查看中,/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

谢谢!

答案1

如果您需要临时解决方案:

mount -o bind /mnt/volume0/var/lib/mysql /var/lib/mysql

或者在 MySQL 中,你需要在 /etc/my.cnf 中更改数据目录指向新文件夹。例如 datadir=/mnt/volume0/var/lib/mysql。确保 /mnt/volume0/var/lib/mysql 可写。

答案2

我最终通过将本地机器上的内容替换为(来自服务器的)/var/lib/mysql/内容来解决了这个问题。/mnt/volume0/var/lib/mysql/

然后,我在尝试启动 MySQL 时遇到一个错误,表“performance_schema.session_variables”不存在,我通过在本地机器上升级 MySQL 并重新启动解决了该问题:https://stackoverflow.com/a/20262826/8231049

现在我可以从本地机器转储数据库了:)

编辑:要等两天才能接受我的答案。到时候再做。

相关内容