zoukankan      html  css  js  c++  java
  • mysql备份策略

    1.备份的种类

    1. 完全备份,就是备份整个数据库对象
    2. 事务日志备份, 备份事务日志记录上一次的数据库改变
    3. 增量备份,也叫差异备份
    4. 文件备份

    2.备份方式

    1. 逻辑备份, 既备份sql语句,使用mysql自带的mysqldump工具进行备份。备份成sql文件形式
    2. 物理备份, 备份数据库文件

    两种备份方式的比较:参考MYSQL自动备份策略的选择与实践

    3.备份工具

    1.mysqldump

    mysqldump是mysql自带的备份工具,属于逻辑备份支持innodb的热备份,备份速度慢,适用于备份数据量小的场景。

    对myisam存储引擎的表,只能使用温备份,这个时候要防止数据的写入,所以先加上读锁, --lock-all-tables

    mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date+%F-%H-%M`.sql

    innodb存储引擎表,可以热备,不必对数据库进行加锁的操作,加一个选项可以进行热备份,--single-transaction

    mysqldump --databases test --single-transaction --flush-logs--master-data=2> /tmp/backup_test_`date +%F-%H-%M`.sql

    更多mysqldump命令,参考MySQL备份命令mysqldump参数说明与示例

    2.基于LVM快照备份

    物理备份方式

    1. 基于文件系统的物理备份(LVM的快照)
    2. tar之类的命令对整个数据库目录进行打包备份

    备份的流程都是遵循以下:

    1. 开启窗口1,临时锁所有表, mysql> flush tables with read lock; 可以在mysql中使用 show master status; 查看状态, 注意这个窗口不能关闭,直到所有备份完成之后才能关闭
    2. 开启窗口2,tar备份数据库文件, tar -zcvf mysqla1.tar.gz mydata
    3. 备份完成,切换窗口1进行解锁, mysql> unlocktables;

    更多参考:MySQL 数据库备份种类以及常用备份工具汇总

    4.个人方案

    每晚凌晨3点mysqldump备份数据库

    #加入定时计划
    * 03 * * * /root/mytools/mysqlback.sh

    脚本如下:

    
    DB_NAME="res" 
    DB_USER="root" 
    DB_PASS="****" 
    BIN_DIR="/usr/bin/" # mysqldump命令所在路径 
    BACK_DIR="/data/backdata" # 备份工具的路径 
    DATE="mysql-`date +'%Y%m%d-%H:%M:%S'`" 
    LogFile="$BACK_DIR"/dbbakup.log # 日志记录保存的目录 
    BackNewFile=$DATE.sql
    
    $BIN_DIR/mysqldump --opt --force -u$DB_USER  -p$DB_PASS $DB_NAME > $BACK_DIR/$DATE.sql
    echo -----------------------"$(date +"%y-%m-%d %H:%M:%S")"----------------------- >> $LogFile
    echo  createFile:"$BackNewFile" >> $LogFile
    #-ctime表示创建时间,这里表示删除创建时间为多少天之前的文件,也就是结果只保留多少天的数据
    find "/data/backdata/" -ctime +7 -type f -name "*.sql" -print > deleted.txt
    echo -e "delete files:
    " >> $LogFile
    #循环删除匹配到的文件
    cat deleted.txt | while read LINE
    do
        rm -rf $LINE
        echo $LINE>> $LogFile
    done
    
    echo "---------------------------------------------------------------" >> $LogFile
  • 相关阅读:
    调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置
    调试SQLSERVER (一)生成dump文件的方法
    SQLSERVER中如何快速比较两张表的不一样
    Leptonica在VS2010中的编译及简单使用举例
    UVALive 3135--Argus+自己定义优先队列的优先规则
    mysql---总体备份和增量备份
    OllyDbg 使用笔记 (十二)
    《TCP/IP具体解释卷2:实现》笔记--IP:网际协议
    blurImage做图片模糊处理报错free(): invalid next size
    docker网络配置方法总结
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4837895.html
Copyright © 2011-2022 走看看