600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > linux 备份mysql并上传_Linux:SHELL自动备份Mysql数据库并上传到ftp空间或发送附件到邮箱...

linux 备份mysql并上传_Linux:SHELL自动备份Mysql数据库并上传到ftp空间或发送附件到邮箱...

时间:2018-08-13 21:21:44

相关推荐

linux 备份mysql并上传_Linux:SHELL自动备份Mysql数据库并上传到ftp空间或发送附件到邮箱...

在运营项目中难免会碰到备份数据库的操作, 因为数据库中存储着网站最核心最宝贵的数据,如果因为不可预测的原因导致数据损坏或丢失,对一个网站的打击是毁灭性的,一次又一次的教训提醒着我们一定要做好备份,但是手工备份确实比较麻烦,每天都要手工操作一次,如果站多的话简直是一种折磨,不过好在我们可以通过编写好的脚本让系统自动备份数据,省去体力劳动。这个脚本虽然比较简单,但会帮我们很大的忙,可谓一劳永逸!

简单说一下备份脚本:

DB_USER=”user” 为用户名

DB_PASS=”password” 为密码

mkdir /home/mysqlbak/$DATE 指定并创建要备份到的目录

BIN_DIR=”/usr/local/mysql/bin” 指定你的MYSQL的位置

BCK_DIR=”/home/mysqlbak/$DATE” 将你的数据库备份到以日期为目录的文件夹下

$BIN_DIR/mysqldump –opt -u$DB_USER -p$DB_PASS discuz > $BCK_DIR/discuz.sql

这个就是将你要备份的数据库添加进来就可以备份了,一个库添加一条,”discuz ” 就是要备份的库名,”discuz.sql”是备份出来的数据文件名.

脚本如下:

01#!/bin/sh

02# File: /home/mysql/backup.sh

03# Database info bakupmysql

04DB_USER="user"

05DB_PASS="password"

06# Others vars

07DATE=`date +%Y-%m-%d`

08mkdir /home/mysqlbak/$DATE

09BIN_DIR="/usr/local/mysql/bin"

10BCK_DIR="/home/mysqlbak/$DATE"

11# TODO

12$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS discuz > $BCK_DIR/discuz.sql

13$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS zjblog > $BCK_DIR/zjblog.sql

14$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS openads > $BCK_DIR/openads.sql

下面收集了几种自动备份 mysql 数据库的脚本:

1 、自动导出mysql备份,并上传到指定ftp

01#!/bin/bash

02#ftp 设置

03Host=FTP_IP

04Username=FTP_user

05Passwd=FTP_passwd

06# 备份 mysql 并导出到文件

07mysqldump -u 用户 -p 密码 数据库名 > $(date +%Y%m%d)- 数据库名 .sql

08# 压缩备份文件

09tar -zcvf $(date +%Y%m%d)mysql 数据库名 .tar.gz $(date +%Y%m%d)*

10# 上传到 ftp

11echo "open $Host

12user $Username $Passwd

13bin

14cd /hzg/

15prompt off

16mput $(date +%Y%m%d)mysql 数据库名 .tar.gz

17printf "/n"

18close

19bye"|ftp -i -n

20# 删除旧的备份文件

21rm -rf $(date +%Y%m%d)- 数据库名 .sql $(date +%Y%m%d)mysql 数据库名 .tar.gz

22#rm -rf $(date +%Y%m%d)*

23rm -rf $(date +%Y%m%d)*

2 、自动备份mysql数据库,并发送到指定email

1# 备份并导出 mysql 数据库到文件

2mysqldump -uroot -ppassword --databases db1 db2 db3 > /home/website/backups/databackup.sql

3# 压缩备份文件

4tar zcf /home/website/backups/databackup.sql.tar.gz /home/website/backups/

5# 发送到指定邮箱

6echo " 主题 : 数据库备份 " | mutt -a /home/website/backups/mysqlbackup.sql.tar.gz -s" 内容 : 数据库备份 " www@

7# 删除旧的备份文件

8rm -r /home/website/backups/*

将 -ppassword 中的 password 换为自己的 root 密码,将 db1 db2 db3 换为你需要备份的数据库名。路径和邮箱等自己替换即可。

也可以用下面的命令直接导出 mysql 备份为压缩文件:

1mysqldump -u用户 -p密码 数据库名|gzip -c > $(date +%Y%m%d)-数据库名 .sql

要实现自动备份只需要将上面的脚本内容保存为 mysqlbackup.sh ,并添加到crontab 即可。如在 ssh 中输入:

crontab -e

输入:

00 00 * * * /home/website/mysqlbackup.sh

即为每天 00:00 自动运行备份脚本。

注意:如果是添加到crontab自动运行的话,mysqldump最好使用绝对路径(/usr/loca/mysql/bin/mysqldump,这个路径根据安装目录而定,可以使用which mysqldump查看),否则可能会找不到无法备份并上传哦。

这里附上我的vps自动备份代码,仅供参考哈!

01#!/bin/bash

02#ftp 设置

03Host='FTP的主机IP'

04Username='FTP用户名'

05Passwd='FTP密码'

06Database='数据库名'

07Date=$(date +%Y%m%d)

08

09# 备份 mysql 并导出到文件

10/usr/local/mysql/bin/mysqldump -u用户名 -p密码 ${Database} > ${Date}_${Database}.sql && /bin/tar -zcvf ${Date}_${Database}.tar.gz ${Date}_${Database}.sql --remove-files

11

12#上传到 ftp

13echo "open $Host

14user $Username $Passwd

15bin

16cd web

17prompt off

18delete ${Date}_${Database}.tar.gz

19mput ${Date}_${Database}.tar.gz

20printf "\n"

21close

22bye"|ftp -i -n &&echo 'upload finished.'

23

24#转移备份数据,这里使用决定路径是为了加-f,强制覆盖已存在文件

25/bin/mv -f ${Date}_${Database}.tar.gz /data/bak/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。