外贸公司没网站 怎么做业务,wordpress win2008,简单wordpress,做网站带后台多少钱MySQL大表备份是一个我们常见的问题#xff0c;下面就为您介绍一个MySQL大表备份的简单方法#xff0c;希望对您学习MySQL大表备份方面能有所帮助。这里所说的大表是超过4G以上的表,我目前见到过最大为#xff16;#xff10;多#xff27;的单表#xff0c;对于这种表每…MySQL大表备份是一个我们常见的问题下面就为您介绍一个MySQL大表备份的简单方法希望对您学习MySQL大表备份方面能有所帮助。这里所说的大表是超过4G以上的表,我目前见到过最大为多的单表对于这种表每天一个全备可以说是一件很痛苦的事。那么有没有办法可以实现一个全备加增量的备份呢。答案当然是有的。在常规环境直可以用全备加binlog一同保存。这种环境大多可以用一个Slave上进行备份操作。思路先停止Slave的同步刷新buffer对于Innodb 如果想直接拷贝还需要把innodb_max_dirty_pages_pct这个值置为零然后在执行一次flush tables;就可以cp了。如果是Dump出来可以这这样做。这个方案目前来看也是比较完美的但一个并发力度大的应用一天的Binlog有可能能达到GG这样的系统开Binlog可以说是对系统的性能及整体性能都有早影响。另一种方案就是基于表的上数据的罗辑变化进行备份。主体思想全备加逻辑备份。逻辑备份当有数据插入时利用触发器同时写入另一个表当数据更新时我们同时记录一下更新后的数据情况到另一个表。当有删除操作时只需要记录一下删除的主建就行。例子要备份的表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)) ENGINEInnoDB DEFAULT CHARSETutf8;对于这个表我们需要建一个记录有新数据变化的表为mysql create table wubx_ii like wubx;Query OK, 0 rows affected (0.00 sec)mysql create table wubx_uu like wubx;Query OK, 0 rows affected (0.00 sec)mysql create table wubx_dd ( id int(11));Query OK, 0 rows affected (0.00 sec)建立相应的触发程器记录insert的操作delimiter //create trigger wubx_ii after insert on wubx for each row begin insert into wubx_ii set idnew.id,user_idnew.user_id,friend_idnew.friend_id,dir_idnew.dir_id,creatednew.created; end//记录update的操作create trigger wubx_uu after update on wubx for each row begin replace into wubx_uu set idnew.id,user_idnew.user_id,friend_idnew.friend_id,dir_idnew.dir_id,creatednew.created; end//记录删除的操作create trigger wubx_dd after delete on wubx for each row begin insert into wubx_dd values(old.id); end//delimiter ;操作先备份原始表wubx里的数据进行insert into wubx values(”,1,10,1,1198464252);insert into wubx values(”,1,11,1,1198464252);insert into wubx values(”,1,2,1,1198464252);insert into wubx values(”,2,10,1,1198464252);insert into wubx values(”,2,12,1,1198464252);insert into wubx values(”,3,12,1,1198464252);update wubx set dir_id5 where user_id3;update wubx set dir_id4 where user_id3;delete from wubx where user_id2 and friend_id12;现在要实现增量备份取出insert的操作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的操作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的操作mysql -e “select concat(‘delete from wubx where id’,id,’;‘) from wubx_dd”backup_dd.sql这样利用这些逻辑的备份加是完毕备份恢复到当前恢复点就很容易了。这里不演示。这个操作最好用一个程序完成当取完罗辑备份后做一个标记点去清楚备份完的数据以保证逻辑记录表里的数据量比较少是正确的。原文http://www.cnblogs.com/java-rookie/p/3927030.html