我在 Scaleway 上托管一个服务器,上面有多个登台站点。
我意外地存档了服务器而不是将其关闭,这意味着我的网站的 MySQL 数据当前存储在/mnt/volume0/var/lib/mysql
MySQL 当前正在查看中,/var/lib/mysql
因此我的数据库都没有被拾取。
我怎样才能让 MySQL 查看卷上的 MySQL 数据的路径?
然而当我再次启动 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
现在我可以从本地机器转储数据库了:)
编辑:要等两天才能接受我的答案。到时候再做。