shell 练习(07)——MySQL 数据库备份

1. 题目

设计一个 shell 脚本来备份数据库,首先在本地服务器上保存一份数据,然后再远程拷贝一份,本地保存一周的数据,远程保存一个月。

假定,我们已经知道了 mysql root 账户密码,要备份的数据库为 wenming ,本地备份目录为 /data/backup/mysql,远程服务器 ip 为 192.168.12.34 ,远程提供了一个 rsync 服务,备份的地址是 192.168,12.34::backup . 写完脚本后,需要加入到cron 中,每天凌晨 3 点执行。

2. 习题分析

  1. 首先要会写 mysql 数据库的备份命令,会写命令行,就把它直接写到脚本里;
  2. 因为涉及到远程和本地服务器的备份,所以会用到 rsync 命令,还要懂得用这个命令在本地和远程服务器之间传输文件;
  3. 最后一个要求是,备份文件的过期时间,所以要实现时间判断,并删除的功能;通常使用的方法是 find 命令,判断文件时间,再删除。但是 find 命令对于远程服务器就比较难实现了。这里建议使用 data +%w 和 data +%d 命令,分别表示周几和几号。

3. 脚本

#!/bin/bash
### backup mysql

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/mysql/bin

d1=`date +%w`
d2=`data +%d`

pass="your_mysql_password"
backupdir=/data/backup/mysql
r_backupdir=192.168.12.34::backup

exec 1>/your/mysql/log/path.log  2>/your/mysql/log/path.log
echo "mysql backup begin at date `date +"%F %T"`"
mysqldump  -uroot -p${pass} wenming > ${backupdir}/${d1}.sql
rsync  -az ${backupdir}/${d1}.sql $r_backupdir/${d2}.sql

echo "mysql backup end at `date +"%F %T"`"

4. 解析

  1. 设定 PATH 的原因,是可能我们在后面使用的 mysqldump 命令并不在 PATH 路径。或者,你可以使用 mysqldump 的全路径。
  2. 变量 d1 为当天是周几,变量 d2 为当天是这个月的几号。周的取值范围是 0-6,月的是1-31。本地存一周,就用 d1 取值,无论怎么循环都只有 0-6 个文件。远程用 d2 取值,存一个月,无论怎么循环都只有1-31个文件。
  3. 定义 exec 1>/your/mysql/log/path.log 2>/your/mysql/log/path.log ,表示对输出和错误输出进行重定向,在下面的命令的所有正确和错误的输出内容都保存在 /your/mysql/log/path.log 日志。
  4. mysqldump 就是 mysql 数据库用来备份的命令,不多解释了。
  5. rsync 就是远程同步,远程传输复制文件的一个命令,选项 -z 表示在传输的过程会对文件进行压缩处理。

原文地址:http://blog.51cto.com/hellocjq/2325257

时间: 2024-11-02 14:09:06

shell 练习(07)——MySQL 数据库备份的相关文章

mysql数据库备份小记录

mysql数据库备份是每个数据管理员最关心的事情了,它能在关键时候帮助我们.建议大家在备份数据库时,将表数据,表空间,触发器,函数,视图什么的分开备份,这样既可以节省备份时间,在恢复数据时比较方便. 采取的备份方式是,使用 shell 结合 crontab 来操作 ,在数据库 比较多的情况下 ,建议 每个脚本中 备份5到6个库 简单举个例子 mysql-adson 数据库服务器中,有3个数据库如下:adson_inter,adson_adm,adson_hi 采取的备份方式是 表数据库,表空间,

MySQL数据库备份:完全备份+增量备份

MySQL数据库备份:完全备份+增量备份 ************************************************************************************** 计划任务: crontab -e  -u root 00 6  * * 1  /shell/mysqlbak.sh &> /dev/null 00 23  * * 2-7  /shell/mysqladd.sh &> /dev/null **************

【转】10 个MySQL数据库备份教程推荐

10 个MySQL数据库备份教程推荐 MySQL是动态网站开发中最著名的开源数据库系统.如果你在网站中使用了MySQL,那么你应该定期备份你的数据以防止它丢失. 本文将介绍自动或手动备份MySQL数据库的10个教程,看看有没有最适合你的方法. 1.Backing Up Using MySQLDump(利用MySQLDump备份MySQL数据库) 可以使用MySQL自带的mysqldump工具来备份数据.在mysqldump中提供了许多的示例,包括如何将数据库备份到一个文件.另一个服务器,甚至gz

MySQL Study之--Mysql数据库备份工具(mysqldump)

MySQL Study之--Mysql数据库备份工具(mysqldump) 对于Mysql Database的备份方式有很多种,此次文档主要介绍mysqldump工具: mysqldump:      mysqldump工具很多方面类似相反作用的工具mysqlimport.它们有一些同样的选项.但mysqldump能够做更多的事情.它可以把整个数据库装载到一个单独的文本文件中.这个文件包含有所有重建您的数据库所需要的SQL命令.这个命令取得所有的模式(Schema,后面有解释)并且将其转换成DD

MySQL数据库备份和恢复

目录 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 备份注意要点 还原要点 备份类型: 备份时需要考虑的因素 备份什么 备份工具 冷备份 cp tar mysqldump备份工具 模拟数据库崩溃,最大限度还原数据 mysqldump的分库备份 mysqldump的MyISAM存储引擎相关的备份选项: mysqldump的InnoDB存储引擎相关的备份选项: 生产环境实战备份策略 将误删除了的某个表进行还原 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 灾难恢复:硬件故障.软件

xtrabackup进行MySQL数据库备份/还原

http://hongge.blog.51cto.com/ 使用xtrabackup进行MySQL数据库备份 前面介绍mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了. 这时就需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup. Xtrabackup实现是物理备份,而且是物理热备 目前主流的有两个工

Ubuntu Server下MySql数据库备份脚本代码

明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar.gz的压缩文件格式(2012_04_11是指备份执行时当天的日期), 最后只保留最近7天的备份. 实现步骤: 1.创建保存备份文件的目录:/home/mysql_datacd /home #进入目录mkdir mysql_data #创建目录2.创建备份脚本文件:/home/mysql_data/m

Mysql 数据库备份脚本

[[email protected] sbin]# more mysqlbackup.sh #If any of your tables run on InnoDB engine #directory to store backups inDST=/backup/dbback# A regex, passed to egrep -v, for which databases to ignoreIGNREG='^snort$'# The MySQL username and passwordDBU

JSP 实现 之 调用java方法实现MySQL数据库备份和恢复

package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStreamReader; public class Command { /* public static void main(String[] args) throws IOException { Command com = new Com

Mysql数据库备份和还原常用的命令

Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下面就是操作的常用命令. 一.备份命令 1.备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename>backupfile.sql 2.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有