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


原文地址: 原文地址

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

1 mysq数据库的安装


  
  
  1. #安装服务端
  2. yum install mysql- server
  3. yum install mysql-devel
  4. #安装客户端
  5. yum install mysql
  6. #启动mysql
  7. service mysqld start 或 /etc/init.d/mysqld start
  8. #停止mysql
  9. service mysqld stop
  10. #设置密码
  11. mysqladmin -u root password ***
  12. #登录mysql
  13. mysql -u root -p

2 创建测试数据库和表


  
  
  1. <pre class="sql" name="code">#创建数据库
  2. create database users;
  3. #创建表
  4. create tablse student(
  5. id integer auto_increment not null primary key,
  6. name varchar( 30) );

  
  
  1. #插入一条数据
  2. insert into student( name) values( "congju");

  
  
  1. #查看数据
  2. select * from student;
 
 

3 mysqldump用法

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


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

    

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脚本,看执行效果


  
  
  1. cp users-20160903.dump users-20160831.dump
  2. cp users-20160903.dump users-20160901.dump
  3. cp users-20160903.dump users-20160902.dump
  4. rm users-20160903.dump

./users.sh
  
  

cat log.txt
  
  

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



        </div>
            </div>

原文地址: 原文地址

猜你喜欢

转载自blog.csdn.net/weixin_38112233/article/details/80832672