#!/bin/bash
# MySQL 远程服务器的连接信息
MYSQL_USER="root" # MySQL 用户名
MYSQL_PASSWORD="password" # MySQL 密码
MYSQL_HOST="192.168.42.18" # 远程 MySQL 服务器 IP 地址
# 备份目录设置
BACKUP_DIR="/path/to/backup" # 备份文件存储目录
DATE=$(date +'%Y-%m-%d_%H-%M-%S') # 当前日期和时间
BACKUP_FILE="$BACKUP_DIR/mysql_backup_$DATE.sql" # 备份文件名
# 检查备份目录是否存在,如果不存在则创建
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# 执行 mysqldump 进行全量备份
echo "开始备份 MySQL 数据库..."
mysqldump -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -h "$MYSQL_HOST" --all-databases --single-transaction --quick --lock-tables=false > "$BACKUP_FILE"
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "备份成功,备份文件保存在: $BACKUP_FILE"
else
echo "备份失败,请检查 MySQL 连接信息和权限设置!"
fi
脚本说明:
MySQL 连接信息:
MYSQL_USER
设置为 MySQL 的用户名(如root
)。MYSQL_PASSWORD
设置为该用户的密码。MYSQL_HOST
设置为 MySQL 服务器的 IP 地址(例如:192.168.42.18
)。备份目录:
- 备份文件将保存到指定的目录(
/path/to/backup
),你需要根据实际情况修改这个路径。
mysqldump
参数:
--all-databases
:备份所有数据库。--single-transaction
:使用事务来备份数据库,确保备份一致性。--quick
:在备份过程中尽可能避免内存消耗,适用于大数据表。--lock-tables=false
:避免在备份过程中锁定表,适用于不希望锁表的环境。文件名:
- 备份文件名包含当前日期和时间,以便区分不同时间的备份。
#!/bin/bash
# MySQL 远程服务器的连接信息
MYSQL_USER="root" # MySQL 用户名
MYSQL_PASSWORD="password" # MySQL 密码
MYSQL_HOST="192.168.42.18" # 远程 MySQL 服务器 IP 地址
# 备份文件路径
BACKUP_FILE="/path/to/backup/mysql_backup_2024-12-23_00-00-00.sql" # 需要恢复的备份文件
# 检查备份文件是否存在
if [ ! -f "$BACKUP_FILE" ]; then
echo "备份文件不存在: $BACKUP_FILE"
exit 1
fi
# 执行数据库恢复
echo "开始恢复数据库..."
# 使用 mysql 命令导入备份文件
mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -h "$MYSQL_HOST" < "$BACKUP_FILE"
# 检查恢复是否成功
if [ $? -eq 0 ]; then
echo "数据库恢复成功!"
else
echo "数据库恢复失败,请检查 MySQL 连接信息和备份文件!"
exit 1
fi
脚本说明:
MySQL 连接信息:
MYSQL_USER
和MYSQL_PASSWORD
分别为 MySQL 用户名和密码。MYSQL_HOST
是 MySQL 服务器的 IP 地址(如192.168.42.18
)。备份文件路径:
BACKUP_FILE
是你要恢复的备份文件的完整路径。请将路径替换为实际的备份文件路径。恢复过程:
- 使用
mysql
命令将备份文件导入到 MySQL 中。<
符号用于将 SQL 文件的内容输入到 MySQL 命令中执行。恢复检查:
- 脚本通过
$?
来检查mysql
命令是否执行成功。如果恢复成功,输出“数据库恢复成功!”;如果失败,输出错误信息。