mysql單錶增量 資料庫單錶增量備份方案

2021-10-17 16:11:47 字數 2070 閱讀 6035

方案1:

對於乙個表來說,我們要實現備份最簡單的方法就是直接備份,這張表包括資料與結構直接備份,這種情況對已小的資料庫表來說是行的通的,但是這種方法存在一些問題:例如,如果這個表的資料很大呢?達到上g、幾g、幾十個g之類的,這樣的話備份的時候很佔資源和時間,所以,我覺得這樣的備份不值得推薦。

所以針對上面的問題,我用觸發器來實現,具體思路如下:

1、  假設現在有乙個表mytest需要做備份,然後有mytest_backup表來儲存備份的資料,然後這兩個表的結構是一樣的;

例如:mytest:

create table `mytest` (

`id` bigint(20) not null auto_increment,

`colum1` varchar(50) default null,

`colum2` varchar(50) default null,

`colum3` varchar(50) default null,

primary key (`id`)

) engine=innodb auto_increment=3 default charset=utf8

mytest_backup:

create table mytest_backup like mytest;

2、  建立觸發器mytest_backup,每當mytest有資料插入的時候,就向mytest_backup中也插入剛才的資料,這樣就實現了備份,具體的實現如下:

begin

insert into mytest_backup

set id = new.id,

colum1 = new.colum1,

colum2 = new.colum2,

colum3 = new.colum3;

end3、  那更新的時候怎麼辦呢?新建乙個表mytest_update,新建乙個觸發器,每當我們修改過資料,就把修改的每一條資料都記錄下來,備份的時候只需在執行這些資料來更新就可以了:

mytest_update:

create table `mytest_update` (

`id` bigint(20) not null auto_increment,

`colum1` varchar(50) default null,

`colum2` varchar(50) default null,

`colum3` varchar(50) default null,

`update_id` bigint(20) default null,

primary key (`id`)

) engine=innodb auto_increment=4 default charset=utf8

觸發器如下:

begin

insert into mytest_update

set update_id = new.id,

colum1 = new.colum1,

colum2 = new.colum2,

colum3 = new.colum3;

end4、  那麼刪除以同樣的方法也就可以實現,新建mytest_delete表,然後每當有刪除操作的時候我們就把id儲存下來,備份的時候把備份表所對應的id刪除之後就可以了:

mytest_delete

create table `mytest_delete` (

`id` bigint(20) not null auto_increment,

`delete_id` bigint(20) not null,

primary key (`id`)

) engine=innodb auto_increment=2 default charset=utf8

觸發器:

begin

insert into mytest_delete

set delete_id = old.id;

end5、  恢復:恢復的時候,把test_backup的所有資料記錄恢復到原表,然後把test_update表中的所有資料都執行備份,然後再根據mytest_delete的所有id執行刪除,這樣就可以把這張表的資料實現恢復。

資料庫 單錶約束

約束 對錶中的資料可以進行進一步的限制,來保證資料的唯一性,正確性和完整性。約束種類 primary key 主鍵約束 代表該字段的資料不能為空且不可重複 not null 非空 代表該字段的資料不能為空 unique 唯一 代表該字段的資料不能重複 乙個表中都得需要主鍵約束,用來標註一條記錄的唯一...

資料庫,,插入表,修改單錶

dml語言 資料操作語言 插入 insert 修改 update 刪除 delete 一 插入語句 方式一 經典的插入 語法 insert into 表名 列名,values 值1,select from beauty 1.插入的值的型別要與列的型別一致或相容 insert into beauty ...

CRUD 資料庫的單錶操作增查改刪

crud就是增查改刪的意思 資料庫的單錶操作 增加 create 全列插入 insert into 表名 values 預設插入 insert into 表名 列1,values 值1,預設插入 insert into 表名 set field1 value1,field2 value2 同時插入多...