VestaCP重复安装后如何导出旧网站数据库备份?
别慌,这种重复安装VestaCP覆盖旧环境的坑我帮不少人踩过,咱们一步步把旧数据库导出来,恢复网站:
恢复旧VestaCP数据库的详细步骤
1. 调整旧数据目录的权限
旧MySQL数据文件的权限大概率不对,先让mysql用户能正常访问:
chown -R mysql:mysql /root/vst_install_backups/1526175423/mysql/mysql_datadir chmod -R 700 /root/vst_install_backups/1526175423/mysql/mysql_datadir
小提示:如果不确定系统里的MySQL用户是不是
mysql,可以用grep mysql /etc/passwd确认。
2. 创建临时MySQL配置文件
我们要启动一个独立的临时MySQL实例来读取旧数据,避免干扰当前VestaCP正在运行的MySQL服务。创建一个临时配置文件/tmp/my_old.cnf:
[mysqld] datadir = /root/vst_install_backups/1526175423/mysql/mysql_datadir socket = /tmp/mysql_old.sock port = 3307 user = mysql skip-networking
- 用
3307端口是为了避开默认的3306端口(当前VestaCP的MySQL用的就是这个) skip-networking是安全设置,只允许本地连接临时实例
3. 启动临时MySQL服务
用刚才的临时配置启动MySQL:
mysqld_safe --defaults-file=/tmp/my_old.cnf &
等个3-5秒,用ps aux | grep mysqld看看有没有对应进程,确认服务启动成功。
4. 导出旧数据库
先看看旧实例里有哪些数据库:
mysql -S /tmp/mysql_old.sock -e "SHOW DATABASES;"
导出单个数据库(推荐,比如你的网站库叫my_website_db)
mysqldump -S /tmp/mysql_old.sock my_website_db > /root/my_website_backup.sql
导出所有旧数据库
如果需要全部备份:
mysqldump -S /tmp/mysql_old.sock --all-databases > /root/all_old_dbs_backup.sql
5. 关闭临时MySQL服务
导出完成后,关闭临时实例:
mysqladmin -S /tmp/mysql_old.sock shutdown
再用ps aux | grep mysqld确认进程已经停止,避免占用资源。
6. 导入到新VestaCP的MySQL
现在你已经有了备份的SQL文件,接下来导入到当前VestaCP的MySQL里:
方法一:命令行直接导入
# 这里的my_website_db是你要在新环境创建的数据库名,提前在VestaCP面板创建好也可以 mysql -u root -p my_website_db < /root/my_website_backup.sql
输入新VestaCP的MySQL root密码(可以在VestaCP面板的数据库模块里找到)。
方法二:登录MySQL后导入
mysql -u root -p
进入MySQL命令行后执行:
-- 先创建对应的数据库(如果还没创建) CREATE DATABASE IF NOT EXISTS my_website_db; -- 切换到目标数据库 USE my_website_db; -- 导入备份文件 SOURCE /root/my_website_backup.sql;
注意:导入后记得给数据库分配对应的用户(和旧网站的数据库用户名一致最好,或者在VestaCP面板里创建新用户并授权),这样网站程序才能正常连接。
额外注意点
- 如果旧数据目录里有
ibdata1这类InnoDB共享表空间文件,不用额外处理,临时实例会自动识别并加载。 - 如果临时服务启动失败,去旧datadir里找
.err后缀的日志文件,里面会有具体的错误原因(比如权限问题、文件损坏等)。
内容的提问来源于stack exchange,提问作者orichec1000
相关产品推荐
相关产品推荐

