Linux_Mysql备份脚本

Mysql在linux服务器上的自动备份脚本,小型web服务器备份脚本

1.在根目录创建一个放备份的目录,本例目录名为webbak
[root@XiaoFeng /]#mkdir webbak
2.在webbak目录里面再建两个目录一个放*.sql文件,一个放压缩后的包,目录名mysql和sqltar
[root@XiaoFeng webbak]#mkdir mysql sqltar
3.写脚本放在webbak目录里
[root@XiaoFeng webbak]#vim sqlbak.sh
写入下面内容,自己修改你的数据库名/用户名/密码


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
#用于数据库备份,要给权限chmod +x sqlbak.sh
#[root@XiaoFeng webbak]# crontab -e   //写入下面内容加入任务计划定时每天23点30分进行备份
#30 23 * * * /webbak/bak.sh
#database name
DB_NAME="sj"
#database username
DB_USER="root"
#database password
DB_PASS="123456"
#当前日期时间字符串 例:2015_10_28_12_12(年月日时分)
DATE=`date +%Y_%m_%d_%H_%M`
#备份到目录的路径
BAKUP_FILE=/webbak/mysql/$DB_NAME_$DATE.sql
#执行mysqldump命令来备份的,环境变量要有的(没有环境变量可以写绝对路径)
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME >$BAKUP_FILE
echo 'Backup success'



4.要给脚本执行权限
[root@XiaoFeng webbak]#chmod +x sqlbak.sh
5.建个定时计划,来每天晚上23点30分来执行该脚本,输入下面登录后会打开vim
[root@XiaoFeng webbak]#crontab -e
6.在打开的vim界面里写入
30 23 * * * /webbak/bak.sh
这个计划完成了,但是每天都备份*.sql文件太多了,查看时比较眼晕,下面再来为每个月的备份打包成一个文件,并删除打包过的文件

第二个脚本,分月打包*.sql

1.写一个打包脚本
[root@XiaoFeng webbak]#vim sqltar.sh
2.写入下面内容,自己修改你的数据库名


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
#用于打包已经备份的数据库,按月打包
#[root@XiaoFeng webbak]# crontab -e   //写入下面内容加入任务计划定时每月第1天23点30分进行备份
#30 23 1 * * /webbak/sqltar.sh
#databse name
DB_NAME="sj"
#当前日期时间字符串 例:2015_10_28_12_12(年月日时分)
DATE=`date +%Y_%m_%d_%H_%M`
#要备份文件的目录的路径
FILE=/webbak/mysql/*.sql
#备份到目录的路径
BAKUP_FILE=/webbak/sqltar/$DB_NAME_$DATE.tar.gz
#执行mysqldump命令来备份的,环境变量要有的(没有环境变量可以写绝对路径)
tar -zcf  $BAKUP_FILE $FILE
echo 'Backup success'
echo '开始删除*.sql文件'
rm -rf $FILE
echo '已经删除多余的sql文件'



3.要给脚本执行权限
[root@XiaoFeng webbak]#chmod +x sqltar.sh
4.建个定时计划,来每月第1天23点30分执行该脚本,输入下面登录后会打开vim
[root@XiaoFeng webbak]#crontab -e
5.在打开的vim界面里加入一行
30 23 1 * * /webbak/sqltar.sh

第三个脚本,每周打包下网站目录备份

1.写一个打包脚本
[root@XiaoFeng webbak]#vim webbak.sh
2.写入下面内容,自己修改你的网站名和网站的目录


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
#用于打包已经备份的数据库,按月打包
#[root@XiaoFeng webbak]# crontab -e   //写入下面内容加入任务计划定时每个周天23点30分进行备份
#30 23 1 * * /webbak/sqltar.sh
#web name
DB_NAME="sjd"
#当前日期时间字符串 例:2015_10_28_12_12(年月日时分)
DATE=`date +%Y_%m_%d_%H_%M`
#要备份文件的目录的路径
FILE=/usr/local/nginx/html/*
#备份到目录的路径
BAKUP_FILE=/webbak/web/$DB_NAME_$DATE.tar.gz
#执行tar命令来备份的
tar -zcf  $BAKUP_FILE $FILE
echo 'Backup success'



3.要给脚本执行权限
[root@XiaoFeng webbak]#chmod +x webbak.sh
4.建个定时计划,来每周天23点30分执行该脚本,输入下面登录后会打开vim
[root@XiaoFeng webbak]#crontab -e
5.在打开的vim界面里加入一行
30 23 * * 7 /webbak/webbak.sh

6. MySQL 5.6会有个warning告警:

Warning: Using a password on the command line interface can be insecure 脚本解析到这个warning,则全部失败。

解决办法:

vim /etc/mysql/my.cnf 

[mysqldump]

user=your_backup_user_name 

password=your_backup_password 

使用命令时不用带账号密码了:/usr/local/mysql/bin/mysqldump db > bak.sql

修改完配置文件后, 只需要执行mysqldump 脚本就可以了;备份脚本中不需要涉及用户名密码相关信息;


打 赏

小风博客 - XiaoFeng Blog - 佘佳栋的个人博客
请点评论按钮,登录后发表评论
  • 最新评论
  • 总共0条评论