`
ssydxa219
  • 浏览: 627668 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

实现一个全备加增量的备份

 
阅读更多

 

在常规环境直可以用全备加binlog一同保存。
这种环境大多可以用一个Slave上进行备份操作。

 

思路:
先停止Slave的同步,刷新buffer,对于Innodb 如果想直接拷贝还需要把innodb_max_dirty_pages_pct这个值置为零,然后在执行一次flush tables;
就可以cp了。如果是Dump出来可以这这样做。

 

这个方案目前来看也是比较完美的,但一个并发力度大的应用一天的Binlog有可能能达到50G-60G,这样的系统开Binlog可以说是对系统的IO性能及整体性能都有早影响。

 

另一种方案就是基于表的上数据的罗辑变化进行备份。
主体思想:全备加逻辑备份。
逻辑备份:当有数据插入时,利用触发器同时写入另一个表,当数据更新时,我们同时记录一下,更新后的数据情况到另一个表。
当有删除操作时,只需要记录一下,删除的主建ID就行。

 

例子:
要备份的表:


  • CREATE TABLE `wubx` (  `id` int(11) NOT NULL auto_increment,   
  • `user_id` int(11) NOT NULL default '0',   
  • `friend_id` int(11) NOT NULL default '0',   
  • `dir_id` int(11) NOT NULL default '0',   
  • `created` int(11) NOT NULL default '0',   
  • UNIQUE KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

对于这个表我们需要建一个记录有新数据变化的表为:

 

  1. mysql> create table wubx_ii like wubx;  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.  
  4. mysql> create table wubx_uu like wubx;  
  5. Query OK, 0 rows affected (0.00 sec)  
  6. mysql> create table wubx_dd ( id int(11));  
  7. Query OK, 0 rows affected (0.00 sec)  
  8.  

 

建立相应的触发程器

 

  1. 记录insert的操作:  
  2. delimiter //  
  3. create trigger wubx_ii after insert on wubx for each row begin insert into wubx_ii set id=new.id,user_id=new.user_id,friend_id=new.friend_id,dir_id=new.dir_id,created=new.created; end//  
  4. 记录update的操作:  
  5. create trigger wubx_uu after update on wubx for each row begin replace into wubx_uu set id=new.id,user_id=new.user_id,friend_id=new.friend_id,dir_id=new.dir_id,created=new.created; end//  
  6. 记录删除的操作:  
  7. create trigger wubx_dd after delete on wubx for each row begin insert into wubx_dd values(old.id); end//  
  8.  
  9. delimiter ;  
  10.  

 

操作:
先备份原始表wubx里的数据:
进行:

 

  1. insert into wubx values(”,1,10,1,1198464252);  
  2. insert into wubx values(”,1,11,1,1198464252);  
  3. insert into wubx values(”,1,2,1,1198464252);  
  4. insert into wubx values(”,2,10,1,1198464252);  
  5. insert into wubx values(”,2,12,1,1198464252);  
  6. insert into wubx values(”,3,12,1,1198464252);  
  7. update wubx set dir_id=5 where user_id=3;  
  8. update wubx set dir_id=4 where user_id=3;  
  9. delete from wubx where user_id=2 and friend_id=12;  

 

现在要实现增量备份:
取出insert的操作:

 

  1. mysql -e ” select concat(‘replace into wubx set id=’,id,’,user_id=’,user_id,’,friend_id=’,friend_id,’,dir_id=’,dir_id,’,created=’,created,’;') from wubx_ii;”>>backup_ii.sql  

 

取出update的操作:

 

  1. mysql -e ” select concat(‘update wubx set user_id=’,user_id,’,friend_id=’,friend_id,’,dir_id=’,dir_id,’,created=’,created,’ where id=’,id,’;') from wubx_uu;”>>backup_uu.sql  

 

取出delete的操作:

 

  1. mysql -e “select concat(‘delete from wubx where id=’,id,’;') from wubx_dd”>>backup_dd.sql  

 

这样利用这些逻辑的备份加是完毕备份恢复到当前恢复点就很容易了。这里不演示。

这个操作最好用一个程序完成,当取完罗辑备份后,做一个标记点去清楚备份完的数据,以保证,逻辑记录表里的数据量比较少是正确的。

分享到:
评论

相关推荐

    Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

    接下来,我们将通过一个示例脚本来展示如何在 Linux 下执行 RMAN 的全备与增量备份。 ##### 2.1 Shell 脚本基础结构 ```bash #!/bin/bash # 定义备份日志文件 RMAN_LOG_FILE=${0}.out # 如果日志文件已存在,则...

    DP软件全备和增量备份的操作步骤

    DP 软件全备和增量备份的操作步骤是 HP OpenView Storage Data Protector Manager 的一个重要功能,用于保护数据的安全和完整性。下面将详细介绍全备和增量备份的操作步骤,以及日常状态维护状态查看。 一、手动...

    Oracle 数据库 RMAN 全备和增量备份脚本,配合计划任务,实现备份策略

    Oracle 数据库 RMAN 全备和增量备份脚本,配合计划任务,实现备份策略

    DB2数据库离线和在线全备、增量备份及恢复的具体操作步骤.

    ### DB2数据库离线与在线全备、增量备份及恢复的具体操作步骤 #### 一、DB2数据库备份概述 DB2是IBM开发的一款关系型数据库管理系统,在企业级应用中广泛使用。为了保证数据的安全性和可靠性,定期进行数据库备份...

    DB2离线和在线全备、增量备份及恢复的操作步骤

    - 另一种形式的增量备份是delta备份:`db2 backup db sample online incremental delta use tsm` - delta备份类似于Oracle的增量备份,而incremental备份对应于累积备份。 4. **恢复数据库** - 删除数据库模拟...

    数据备份的几种模式(全备份、增量备份、差异备份和永久增量备份)

    它将一个全备份和后续的多个增量备份合并成一个新的全备份,这降低了恢复时的复杂度,并且减少了对带宽的需求和备份次数。这种方法通常可以提升恢复数据的效率,同时降低备份所消耗的存储资源。 永久增量备份是另一...

    Oracle数据库逻辑增量备份之exp/imp

    通过不同时间点的全备、增量备份和累积备份,可以实现对数据库的精确恢复。例如: - A时间点全备:作为基础备份。 - B时间点增量备份:仅包含自A时间点以来的变化。 - C时间点累积备份:包含A到C期间的所有增量备份...

    Mysql数据备份与mysqldump增量备份.pdf

    然而,这种方法的局限在于无法实现增量备份,即每次备份都是完整的数据库副本。 为了确保数据一致性,在拷贝之前,需要执行`FLUSH TABLES WITH READ LOCK`命令。这将把内存中的数据刷新到磁盘,并锁定所有表,防止...

    Oracle RMAN 增量备份方案

    0级增量备份是首次增量备份,它会备份所有数据块,其效果等同于一次全备。 ```sql RMAN> run { 2> allocate channel ch1 device type disk; 3> allocate channel ch2 device type disk; 4> backup incremental ...

    mysql全备份及增量备份及还原脚本

    本文将详细讲解MySQL的全备份、增量备份以及还原脚本的实现方法,旨在帮助你构建一个有效的数据库管理策略。 全备份是备份数据库的全部内容,包括所有表、触发器、存储过程等。在MySQL中,最常用的全备份工具是`...

    Windows下oracle的增量备份与恢复.docx

    - 累计备份脚本:结合所有之前的增量备份,形成一个包含所有更改的备份。 5. 步骤三:手工启动一次完全备份 - 使用rmanbackup_full.bat执行首次全量备份,生成相应的备份文件。 - 通过文件管理器检查备份文件,...

    oracle 11g rman 全备份脚本

    `**: 分配了一个名为`c1`的磁盘通道用于数据传输。 - **`allocate channel c2 type disk;`**: 再次分配了一个名为`c2`的磁盘通道。 - **`backup database format'*** / *** / full_%d_%T_%s_%p';`**: 备份整个...

    oracle_rman增量备份脚本

    在Oracle数据库管理中,备份是非常重要的环节之一,而RMAN(Recovery Manager)是Oracle提供的一个强大的备份工具,能够实现对整个数据库或者单独的数据文件进行备份,并且支持增量备份等功能。本文将详细介绍一种...

    mysql全库备份增量备份脚本

    `mysqldump`工具通常用于全量备份,而`xtrabackup`则常用于实现更高效的增量备份。下面将详细阐述这两个工具及其在备份过程中的应用。 ### mysqldump全量备份 `mysqldump`是MySQL官方提供的一款实用程序,用于导出...

    mysql增量备份还原

    增量备份是指只备份自上次全备或上一次增量备份以来发生改变的数据。这种备份策略显著减少了需要备份的数据量,尤其在数据增长不大的情况下,可以极大地提高备份效率。在MySQL中,通过启用binlog,我们可以实现增量...

    Oracle Rman全能备份脚本 DBA必备

    综上所述,这套“Oracle Rman全能备份脚本”提供了全方位的数据库保护策略,涵盖了全备、增量备份以及数据泵备份,结合Linux的定时任务调度,实现了数据库备份的自动化。对于DBA来说,掌握并灵活运用这些脚本,是...

    mysql的备份和恢复基础知识(全量备份和增量备份)-详细笔记文档总结

    MySQL 增量备份是指将数据库中的变化部分备份到一个文件中,以便在恢复时可以快速恢复到某个时间点。增量备份可以使用 mysqldump 的 --master-data 选项来实现。 MySQL 备份时切换刷新 bin-log 日志 在备份时,...

    Oracle RAC恢复到单机方案-仅有一个全备

    ### Oracle RAC恢复到单机方案—仅有一个全备 #### 概述 在Oracle Real Application Clusters (RAC)环境中,当面临只有历史全备(热备)且无增量备份和归档备份的情况下,若需要将数据恢复到单机环境,会面临一定...

Global site tag (gtag.js) - Google Analytics