使用mysqldump ftp将备份集上传到远端服务器

本文介绍了一个用于MySQL数据库备份的Shell脚本,并通过FTP将备份文件传输到远程服务器。该脚本利用crontab定时执行,实现数据库的定期备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是我以前的一个mysqldump备份脚本,将备份集打包ftp传到异地服务器上,脚本修改路径即可。

将其放在crontab下。

#!/bin/sh
                             
logfile=/backup/backup.log
LOCALHOST_IP=$(/sbin/ifconfig |grep 'inet addr' |cut -d':' -f2 |cut -d' ' -f1 |egrep "^10\.176\.164\.(.*)$" |sed 's/\././g' |head -1)
echo "##########################" >> $logfile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logfile
echo "--------------------------" >> $logfile
cd /backup
dir=$(date +%Y%m%d)
mkdir $dir
cd /backup/$dir
echo "start mysql backup!!" >> $logfile
cd /backup
/service/mysql/bin/mysqldump --default-character-set=utf8 --triggers=false --skip-opt -q -a --databases -d iov > $(date +"%Y%m%d")_iov.structure.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --triggers=false -t --skip-opt -q -a --databases iov > $(date +"%Y%m%d")_iov.data.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --opt -t -a -d iov > $(date +"%Y%m%d")_iov_trigger.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --skip-opt -q -a --databases bus > $(date +"%Y%m%d")_bus.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --skip-opt -q -a --databases zt > $(date +"%Y%m%d")_zt.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --skip-opt -q -a --databases iov_saas > $(date +"%Y%m%d")_iov_saas.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --skip-opt -q -a --databases poi > $(date +"%Y%m%d")_poi.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 --skip-opt -q -a --databases -d iov_his > $(date +"%Y%m%d")_iov_his.structure.sql
/service/mysql/bin/mysqldump --default-character-set=utf8 -t --skip-opt -q -a iov_his > $(date +"%Y%m%d")_iov_his.data.sql
tar czf /backup/$dir/mysqlBackup$(date +"%Y%m%d")-$LOCALHOST_IP.tar.gz *.sql
sleep 3
rm -rf *.sql
##########################################################################################
olddir=$(date +%Y%m%d --date='15 days ago')
if [ -d $olddir ]
then
        rm $olddir -rf >> $logfile 2>&1
        echo "rm olddir success!!" >> $logfile
else
        echo "there no olddir!!" >> $logfile
fi
echo "--------------------------" >> $logfile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logfile
echo "##########################" >> $logfile

/usr/bin/ftp -v -n<<!
open 129.100.251.71
user db_bf bf_db
binary
lcd /backup/$dir/
prompt
mput mysqlBackup$(date +"%Y%m%d")-$LOCALHOST_IP.tar.gz
close
bye
!


要备份 MySQL 数据并将备份文件上传到远程服务器,你可以使用 Shell 脚本结合 mysqldump 和 scp 命令来实现。以下是一个示例脚本: ```bash #!/bin/bash # MySQL设置 db_user="your_username" db_password="your_password" db_name="your_database_name" # 备份配置 backup_directory="/path/to/backup/directory" backup_filename="backup_$(date +%Y%m%d%H%M%S).sql" remote_user="remote_user" remote_host="remote_host" remote_directory="/path/to/remote/directory" # 创建备份目录 mkdir -p $backup_directory # 使用mysqldump备份MySQL数据库 mysqldump -u $db_user -p$db_password $db_name > $backup_directory/$backup_filename # 将备份文件上传到远程服务器 scp $backup_directory/$backup_filename $remote_user@$remote_host:$remote_directory # 清理本地备份文件 rm $backup_directory/$backup_filename ``` 在上面的脚本中,你需要根据实际情况配置以下变量: - `your_username`:MySQL 用户名 - `your_password`:MySQL 密码 - `your_database_name`:要备份的数据库名称 - `/path/to/backup/directory`:本地备份文件存储目录 - `remote_user`:远程服务器用户名 - `remote_host`:远程服务器主机名或 IP 地址 - `/path/to/remote/directory`:远程服务器存储备份文件的目录 脚本首先创建一个用于存储备份文件的目录,然后使用 `mysqldump` 命令将 MySQL 数据库备份到指定的文件中。接下来,使用 `scp` 命令将备份文件上传到远程服务器。最后,脚本清理本地备份文件。 你可以将以上脚本保存为一个文件(例如 `backup_mysql.sh`),然后使用 `chmod +x backup_mysql.sh` 命令赋予脚本执行权限。运行脚本时,它将备份 MySQL 数据并将备份文件上传到远程服务器上指定的目录。 请确保在使用脚本之前进行测试,并注意脚本执行的权限和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值