在 Ubuntu 下编写一个用于管理 SQL 数据库的脚本,可以使用 Bash 脚本结合常用的命令行工具,如 mysql 或 psql。以下是一个示例,展示如何编写一个简单的 Bash 脚本来备份和恢复 MySQL 数据库。你可以根据具体需求进行修改和扩展。
前提条件
-
安装 MySQL 客户端: 确保你的系统中已经安装了 MySQL 客户端工具。如果没有安装,可以使用以下命令安装:
sudo apt update sudo apt install mysql-client -
脚本权限: 使用文本编辑器(如
nano、vim)创建脚本文件,并赋予执行权限。nano sqladmin.sh chmod +x sqladmin.sh
示例脚本:备份和恢复 MySQL 数据库
#!/bin/bash
# 配置部分
DB_HOST="localhost"
DB_USER="your_username"
DB_PASSWORD="your_password"
DB_NAME="your_database"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$DATE.sql"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 备份函数
backup_database() {
echo "开始备份数据库 $DB_NAME ..."
mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "数据库备份成功: $BACKUP_FILE"
else
echo "数据库备份失败!"
exit 1
fi
}
# 恢复函数
restore_database() {
echo "开始恢复数据库 $DB_NAME 从 $1 ..."
mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < "$1"
if [ $? -eq 0 ]; then
echo "数据库恢复成功!"
else
echo "数据库恢复失败!"
exit 1
fi
}
# 主菜单
while true; do
echo "==================== SQL Admin 菜单 ====================="
echo "1. 备份数据库"
echo "2. 恢复数据库"
echo "3. 退出"
echo "请选择操作 (1-3): "
read -r choice
case $choice in
1)
backup_database
;;
2)
echo "请输入要恢复的备份文件路径:"
read -r restore_file
restore_database "$restore_file"
;;
3)
echo "退出脚本。"
exit 0
;;
*)
echo "无效的选择,请重新输入。"
;;
esac
done
脚本说明
-
配置部分:
DB_HOST:数据库主机地址,通常为localhost。DB_USER:数据库用户名。DB_PASSWORD:数据库密码。DB_NAME:要备份或恢复的数据库名称。BACKUP_DIR:备份文件存放的目录。
-
备份函数 (
backup_database):- 使用
mysqldump命令备份指定数据库,并将备份文件保存到指定目录。 - 备份文件名包含数据库名称和当前日期时间,以避免覆盖。
- 使用
-
恢复函数 (
restore_database):- 接受一个备份文件路径作为参数,使用
mysql命令将备份文件恢复到数据库中。
- 接受一个备份文件路径作为参数,使用
-
主菜单:
- 提供用户选择备份、恢复或退出操作。
- 根据用户选择调用相应的函数。
使用步骤
-
编辑脚本: 打开脚本文件,填写正确的数据库连接信息和备份目录路径。
nano sqladmin.sh -
赋予执行权限:
chmod +x sqladmin.sh -
运行脚本:
./sqladmin.sh
注意事项
-
安全性:在脚本中明文存储数据库密码存在安全风险。可以考虑使用
.my.cnf文件来存储凭据,或者通过环境变量传递密码。示例
.my.cnf配置:[client] user=your_username password=your_password host=localhost确保
.my.cnf文件权限设置为仅用户可读:chmod 600 ~/.my.cnf修改脚本中的
mysqldump和mysql命令,去掉-p参数:mysqldump "$DB_NAME" > "$BACKUP_FILE" mysql "$DB_NAME" < "$1" -
错误处理:脚本中基本的错误处理已添加,可以根据需要扩展更详细的日志记录和错误处理机制。
-
定时任务:可以使用
cron设置定时备份任务。例如,每天凌晨 2 点执行备份:crontab -e添加以下行:
0 2 * * * /path/to/sqladmin.sh backup
扩展功能
根据需求,你可以为脚本添加更多功能,例如:
- 删除旧备份:自动删除超过一定时间的备份文件,以节省存储空间。
- 压缩备份文件:使用
gzip压缩备份文件,减少存储占用。 - 支持 PostgreSQL:如果需要管理 PostgreSQL 数据库,可以添加相应的函数和工具(如
pg_dump和pg_restore)。 - 日志记录:将操作日志记录到文件中,便于后续审计和排查问题。
示例:添加删除旧备份功能
以下是如何在脚本中添加删除 7 天前备份的功能:
# 删除旧备份函数
delete_old_backups() {
echo "删除 7 天前的备份文件..."
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -exec rm {} \;
if [ $? -eq 0 ]; then
echo "旧备份文件删除成功。"
else
echo "删除旧备份文件失败!"
fi
}
# 在主菜单中添加选项
echo "4. 删除旧备份"
read -r choice
case $choice in
1)
backup_database
;;
2)
# ... 恢复逻辑
;;
3)
exit 0
;;
4)
delete_old_backups
;;
*)
echo "无效的选择,请重新输入。"
;;
esac
通过以上步骤,你可以创建一个功能完善的 SQL 管理脚本,帮助你在 Ubuntu 系统上更方便地管理数据库。如果有更具体的需求或遇到问题,欢迎进一步提问!
以上就是关于“ubuntu下sqladmin脚本编写”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm