linux shell 备份mysql 数据库

#!/bin/bash
host="目标ip"
id="用户名"
pwd="密码"
dbs=$(echo "show databases;" | mysql -u$id -p$pwd -h$host)
nodeldb="Database information_schema performance_schema test mysql"
backuppath="/root/mysqlbackup"
day=15
localIp=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d addr:地址:)

[ ! -d $backuppath ] &&mkdir -p $backuppath
cd $backuppath

backupname=mysql_$(date +%Y-%m-%d)
for db in $dbs;
do
isbool="0"
for nodb in $nodeldb;
do
if [ "$db" == "$nodb" ]
then
isbool="1"
fi
done
if [ "$isbool" == "1" ]
then
continue
fi

mysqldump -u$id -p$pwd -h$host $db >$backupname_$db.sql
echo "$db"
if [ "$?" == "0" ]
then
echo $(date +%Y-%m-%d)" $localIp $host $db mysqldump sucess">>mysql.log
else
echo $(date +%Y-%m-%d)" $localIp $host $db mysql dump failed">>mysql.log
echo $(date +%Y-%m-%d)" client $localIp backup $host $db is Failure"
exit 0
fi
done
tar -czf $backupname.tar.gz *.sql
#上一句执行的返回值linux中0表示成功
if [ "$?" == "0" ]
then
echo $(date +%Y-%m-%d)" tar sucess">>mysql.log

else
echo $(date +%Y-%m-%d)" tar failed">>mysql.log
echo $(date +%Y-%m-%d)" client $localIp backup and Compression service $host is Failure"
exit 0
fi

rm -f *.sql

delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz
rm -f $delname
echo $(date +%Y-%m-%d)" $localIp backup $host is success" |mail 18790542086@163.com

### 如何在Linux服务器上备份MySQL数据库 #### 安装与验证MySQL 为了确保可以顺利进行MySQL数据库备份操作,在Linux服务器上需确认已安装MySQL。通过运行`mysql --version`命令可检验MySQL是否存在以及其版本信息[^1]。 #### 创建备份脚本 创建一个用于执行备份过程的Shell脚本是高效的做法之一。此脚本会调用mysqldump工具导出指定数据库的内容并保存为SQL文件形式。下面是一个简单的例子,其中包含了日期时间戳以便区分不同时间节点上的备份副本: ```bash #!/bin/bash # 将 username, password 和 DatabaseName 替换为具体的值 mysqldump -u username -p'password' DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql ``` 对于希望减少存储空间的情况,还可以进一步压缩生成的SQL文件: ```bash #!/bin/bash # 同样替换相应的参数 mysqldump -u username -p'password' DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz ``` 上述代码片段展示了如何利用gzip命令对输出流直接进行压缩处理后再写入磁盘,从而有效减小最终备份文件大小[^5]。 #### 设置定时任务(Cron Job) 为了让这个备份流程能够定期自动发生而无需人工干预,可以通过Cron Jobs设置周期性的调度计划。编辑用户的crontab配置文件(`crontab -e`)并向其中加入如下行来安排每日凌晨两点整启动一次完整的数据库备份作业(假设脚本路径位于/home/user/scripts/): ``` 0 2 * * * /home/user/scripts/database_backup.sh ``` 这表示每晚2点触发该shell脚本来完成当天的数据备份工作[^3]。 #### 权限调整 最后一步是要保证所编写的备份脚本能被正确执行。为此应该给予它足够的权限,比如只允许拥有者读取和执行: ```bash chmod u+x /path/to/your_script.sh ``` 这里/path/to/your_script.sh应当替换成实际存放备份脚本的位置[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值