编写shell脚本对mysql数据库进行定时备份

在linux上安装mysql并建立测试库,编写shell脚本对此库使用mysqldump进行定时备份和历史备份文件清理(保留3天),注意脚本的通用性和扩展性

1 mysq数据库的安装

#安装服务端
yum install mysql-server   
yum install mysql-devel
#安装客户端
yum install mysql  
#启动mysql       
service mysqld start 或 /etc/init.d/mysqld start 
#停止mysql
service mysqld stop       
#设置密码
mysqladmin -u root password *** 
#登录mysql
mysql -u root -p          

2 创建测试数据库和表

#创建数据库
create database users;   
#创建表
create tablse student( 
 id integer auto_increment not null primary key,
 name varchar(30) );                                                   
#插入一条数据
insert into student(name) values("congju");                                                   
#查看数据                                    
select * from student; 
 
  

3 mysqldump用法

mysql自带的工具,允许你以SQL命令集的形式将整个数据库导出到一个单独的文件中。

#将users数据库备份到/root/user.dump文件中 
mysqldump -u root -p users > /root/users.dump      

     编写shell脚本对mysql数据库进行定时备份_第1张图片

4 利用shell脚本实现对users数据库的备份

#!/bin/bash

#保存备份个数
number=3
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y%m%d`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=******
#将要备份的数据库
database_name=users

#简单写法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.dump
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.dump

#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

#找出需要删除的备份
delfile=`ls -l -crt  $backup_dir/*.dump | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于$number
count=`ls -l -crt  $backup_dir/*.dupm | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]
then
  rm $delfile  //删除最早生成的备份,只保留number数量的备份
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi


5 定时crontab

定时时需要在 /etc/crontab 加入以下代码

30 5 * * * /root/users.sh

上边表示在每天的5点30分进行数据库的备份

6 测试

今天的日期是 2016-09-03

1 首先执行脚本 users.sh 产生一个当前日期的备份

2 然后依次复制3个备份

3 删除 当前的备份

4 执行 users.sh脚本,看执行效果

cp users-20160903.dump  users-20160831.dump
cp users-20160903.dump  users-20160901.dump
cp users-20160903.dump  users-20160902.dump
rm users-20160903.dump

./users.sh

cat log.txt

经测试,上述过程可以实现对mysql指定数据库进行备份




你可能感兴趣的:(linux)