脚本配置与使用步骤
本指南将详细介绍如何配置并使用一个自动化备份脚本,将您的 MySQL 数据库和网站文件备份到另一台 FTP 服务器。
1. 修改备份脚本
首先,进入用户主目录并编辑备份脚本文件:
cd ~
vi lnmp1.2-full/tools/backup.sh
使用 Vim 编辑器打开文件后,请根据下文“脚本参数说明”部分,修改相应的配置参数。
2. 创建本地备份目录
编辑完成后,在 /home/ 目录下创建一个用于临时存放备份文件的目录,并设置其权限:
cd /home/
mkdir backup
chmod 777 backup
3. 安装 FTP 客户端工具
脚本使用 lftp 进行文件传输,请确保已安装:
yum install lftp
脚本参数详细说明
以下是脚本中需要您根据实际情况修改的关键参数。请仔细阅读注释并填写。
# 备份文件本地存放目录,请确保此目录已创建且具有写权限
Backup_Home="/home/backup/"
# mysqldump 命令的完整路径。
# 注意:如果您使用的是 MariaDB,请将路径中的 `mysql` 替换为 `mariadb`。
MySQL_Dump="/usr/local/mysql/bin/mysqldump"
# 需要备份的网站目录,用双引号括起来,多个目录用空格分隔。
# 示例:备份 aaa.com 和 bbb.com 的网站文件
Backup_Dir=("/home/wwwroot/aaa.com" "/home/wwwroot/bbb.com")
# 需要备份的数据库名称,多个数据库用空格分隔。
Backup_Database=("aaaDB" "bbbDB")
# MySQL root 账号信息
MYSQL_UserName='root'
MYSQL_PassWord='yourrootpassword' # 请替换为您的实际 root 密码
# 是否启用 FTP 远程备份。0 表示启用,1 表示不启用。默认值为 0。
Enable_FTP=0
# FTP 服务器连接信息
FTP_Host='1.1.1.1' # 请替换为您的 FTP 服务器 IP 或域名
FTP_Username='ftp' # FTP 用户名
FTP_Password='yourftppassword' # FTP 密码
# FTP 服务器上用于存放备份的目录。
# 注意:请确保该目录在 FTP 服务器上已存在且具有写权限。
FTP_Dir="/backup"
# 参数设置结束
注意:以上路径和配置示例基于 LNMP 一键安装包环境。如果您使用的是其他 Web 环境(如 LAMP、宝塔面板等),请根据实际情况调整路径(如 MySQL 安装路径、网站根目录等)。
执行备份操作
方法一:手动执行备份
通过 SSH 连接到 VPS 后,执行以下命令(请确保脚本路径与您的 LNMP 版本一致):
cd ~/lnmp1.2-full/tools/
/bin/bash backup.sh
方法二:设置定时任务自动备份
为了自动化,可以添加一个 Crontab 任务,例如设置为每天凌晨 5 点自动执行备份:
crontab -e
在打开的编辑器中添加以下一行:
00 05 * * * /bin/bash ~/lnmp1.2-full/tools/backup.sh
保存并退出后,定时任务即会生效。
常见问题与解决方法
问题:MySQL 备份时出现权限错误
执行脚本时,可能会遇到如下错误:
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
这表明脚本中配置的 MySQL 用户名或密码不正确,导致无法连接数据库。
解决方法一:重置 MySQL root 密码(适用于忘记密码的情况)
警告:此操作会重启 MySQL 服务,请在维护时段进行。
# 停止 MySQL 服务
/etc/init.d/mysql stop
# 以安全模式启动 MySQL,跳过权限验证
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# 连接 MySQL
mysql -u root mysql
# 在 MySQL 提示符下执行以下命令(请将 'newpassword' 替换为您的新密码)
UPDATE user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
FLUSH PRIVILEGES;
quit
# 重启 MySQL 服务
/etc/init.d/mysqld restart
# 使用新密码测试连接
mysql -uroot -p
重要更新:对于 MySQL 5.7 及以上版本,密码字段名可能是 authentication_string,而非 Password。请根据您的 MySQL 版本调整上述 SQL 语句。
解决方法二:检查并确认连接凭据
- 使用 phpMyAdmin 检查:登录 phpMyAdmin,查看
mysql.user表,确认root用户对应的主机(通常是localhost)及其密码哈希值。 - 确认密码:确保脚本中
MYSQL_PassWord的值与您通过命令行mysql -uroot -p成功登录时使用的密码完全一致。注意区分大小写。 - 检查用户权限:有时网站可能使用了非 root 的数据库用户。请确认您备份的数据库(
Backup_Database中列出的)的所有者用户及其密码,并在脚本中使用相应用户的凭据。
完成密码修正或确认后,请重新执行备份命令。