在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 创建测试数据库和表
-
<pre class="sql" name="code">#创建数据库
-
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
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指定数据库进行备份
</div>
</div>