1、概述

在公司业务里面,当对应的业务数据不是很重要的时候,我们一般会简单的写个脚本,每天半夜把数据库数据全量拉取下来,备份到本地磁盘。但当业务比较重要的时候,这样简单操作会存在许多问题,比如本地磁盘损坏。因此,为了保证数据的安全性和可恢复性,对于重要业务一般不会备份到本地磁盘。

下面描述一下自己在工作中用到的解决方案,总体的架构图如下:DB系统为一主一从,然后第一步每天凌晨12点去备份从机上的数据;第二步凌晨1点再将备份数据库上的数据备份到公司的磁盘上。接下来根据这个架构,给出详细的备份代码:

2、详细备份方案

2.1 slave->备份服务器

采用的是mysqldump,slave数据库为InnoDB引擎。

 #!/bin/bash

 PROGRAM_NAME="cold_backup"
LOG_FILE=$PROGRAM_NAME.log
PID_FILE=$PROGRAM_NAME.pid LOG_LEVEL=
LOG_LEVEL_STRING=("TRACE" "DEBUG" "INFO" "WARNING" "ERROR" "FATAL") function LOG()
{
if [ $ -gt $LOG_LEVEL ]; then
echo "[$(date "+%y-%m-%d %H:%M:%S")][${LOG_LEVEL_STRING[$1]}]$2" >> ${LOG_DIR}$LOG_FILE
fi
} function LOG_FATAL()
{
LOG "$1"
} function LOG_ERROR()
{
LOG "$1"
} function LOG_WARNING()
{
LOG "$1"
} function LOG_INFO()
{
LOG "$1"
} function LOG_DEBUG()
{
LOG "$1"
} function LOG_TRACE()
{
LOG "$1"
} # 其实不需要,因为每天就备份一次,log完全不会超过32M
function shrink_file()
{
local file=$
if [ ! -f $file ]; then
return
fi
local file_size=`du -b $file | awk '{print $1}'`
if [ $? -ne ]; then
return
fi
max_size= #32M
if [ $file_size -lt $max_size ]; then
return
fi
truncate_row=$(wc -l $file | awk '{print $1}')
((truncate_row=truncate_row/))
if [ $truncate_row -ge ]; then
sed -i "1,${truncate_row}d" $file
return
fi
return
} function clear_file()
{
echo "" > $
} if [ -f $PID_FILE ]; then
program_pid=`cat $PID_FILE`
if [ $? -eq ] && [ -n "$program_pid" ]; then
if ps u -p "$program_pid" | grep -wc $PROGRAM_NAME ; then
LOG_INFO "program is running, quit now"
exit
fi
fi
fi # XXX业务数据库
SLAVE_HOST="1.2.3.4:3306"
SERVER_NAME="[ShangHai_XX_YY_ZZ_Slave]" BACKUP_DIR="/data/cold_backup"
TODAY=`date '+%Y%m%d'`
BACKUP_FILE=${SLAVE_HOST}_${SERVER_NAME}_${TODAY}.sql echo "$$" > $PID_FILE
shrink_file $LOG_FILE
LOG_INFO "--------------------START BACKUP--------------------"
LOG_INFO "begindump:`date '+%y-%m-%d %H:%M:%S'`" /usr/local/services/mysql/bin/mysqldump --single-transaction --socket=/tmp/mysql_3306.sock --databases XXX数据库 > "$BACKUP_FILE"
rm -f $(find $BACKUP_DIR -name '*.sql' -mtime +) count=`ls -l | grep $TODAY | grep sql | wc -l`
if [ $count -eq ];then
# alarm, no today sql data
LOG_WARNING " NO cold backup"
fi LOG_INFO "enddump:`date '+%y-%m-%d %H:%M:%S'`" # remove pid_file
rm $PID_FILE

2.2 备份服务器->公司磁盘

采用rsync备份,需要备份服务器和公司磁盘之间可以直接rsync,可以通过ssh来设置。

重要业务MySQL冷备解决方案的更多相关文章

  1. MySQL主备模式的数据一致性解决方案

     根据阿里交易型业务的特点,以及在双十一这样业内罕有的需求推动下,我们在官方的MySQL基础上增加了非常多实用的功能.性能补丁.而在使用MySQL的过程中,数据一致性是绕不开的话题之一.本文主要从阿里 ...

  2. mysql之冷备和mysqldump、mydumper、xtrabackup备份

    1.冷备流程: 停库备份,冷备份一般用于非核心业务,这类业务一般都允许停库. 在停止数据库后,将数据文件拷贝出来,然后对原始数据文件进行备份. 流程: 1.关闭数据库备份          2.拷贝数 ...

  3. 高可用性、负载均衡的mysql集群解决方案

    高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...

  4. MySQL高可用解决方案(MySQL HA Solution)

    http://blog.sina.com.cn/s/blog_7e89c3f501012vtr.html 什么是高可用性?很多公司的服务都是24小时*365天不间断的.比如Call Center.这就 ...

  5. (转)MySQL高可用解决方案

    MySQL高可用解决方案 原文:http://www.ywnds.com/?p=5565 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...

  6. MySQL主备复制原理、实现及异常处理

    复制概述 MySQL支持三种复制方式:基于行(Row)的复制.基于语句(Statement)的复制和混合类型(Mixed)的复制. 基于语句的复制早在3.23版本中就存在,而基于行的复制方式在5.1版 ...

  7. Oracle冷备迁移脚本(文件系统)

    Oracle冷备迁移脚本(文件系统) 两个脚本: 配置文件生成脚本dbinfo.sh 网络拷贝到目标服务器的脚本cpdb16.sh 1. 配置文件生成脚本 #!/bin/bash #Usage: cr ...

  8. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  9. 请不要用SECONDS_BEHIND_MASTER来衡量MYSQL主备的延迟时间【转】

    本文来自:http://www.woqutech.com/?p=1116 MySQL 本身通过 show slave status 提供了 Seconds_Behind_Master ,用于衡量主备之 ...

随机推荐

  1. Cogs 1709. [SPOJ705]不同的子串 后缀数组

    题目:http://cojs.tk/cogs/problem/problem.php?pid=1709 1709. [SPOJ705]不同的子串 ★★   输入文件:subst1.in   输出文件: ...

  2. [ZETCODE]wxWidgets教程二:辅助类

    本教程原文链接:http://zetcode.com/gui/wxwidgets/helperclasses/ 翻译:瓶哥 日期:2013年11月27日星期三 邮箱:414236069@qq.com ...

  3. SRM 442(1-250pt, 1-500pt)

    DIV1 250pt 题意:将一个数表示成质因子相乘的形式,若乘式所含数字的个数为质数,则称A为underprime.比如12 = 2*2*3,则含3个数字,是underprime.求A, B之间un ...

  4. 17 Great Machine Learning Libraries

    17 Great Machine Learning Libraries 08 October 2013 After wonderful feedback on my previous post on ...

  5. 第十一章、认识与学习 BASH Bash Shell 的操作环境

    bash中的变量动不动就说环境变量,真是奇怪,bash只是一个c语言编写的程序而已,跟环境变量有什么关系?如果知道dos的历史的话就知道有个时代是只有命令行界面而没有图形用户界面,这只小小的程序就包揽 ...

  6. [转]3proxy 二级代理配置样例

    转自:http://www.cnblogs.com/airsong23/p/3893094.html 适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, ...

  7. yii2

    yii2框架官方说明文档 http://www.yiiframework.com/doc/guide/2.0/zh_cn/caching.page yii2创建您的第一个application应用 h ...

  8. div 水平居中

    对需要水平居中的DIV层添加以下属性: margin-left: auto; margin-right: auto;

  9. js验证邮箱

    <html>    <head>    <script>   function verifyAddress(obj)    {    var email = obj ...

  10. Unity Panel open & close

    Making a Popup and Closable Panel in Unity 5 script: public GameObject thePanel; public open() { the ...