天天看點

【MySql】mysql 資料庫資料訂正

       工作過程中時常遇到資料訂正的需求,該操作本身不難。操作時要求能夠保持復原~對于能夠滿足復原的要求,我通常執行備份表,然後執行變更!如果發送訂正錯誤或者使用者要求復原的時候,就完全恢複整個表,這樣做會有多餘的操作,因為我們隻要

實際上可以選擇備份要進行更正的資料!比如如下需求:

将表resource中usage_type='unused' 并且 user_id=166 的記錄更新為user_id=169 !更新100條!

1 首先備份表

create table test.resource_20120221 as 

select * from resource where usage_type='unused' and user_id=166 order by id limit 100;

2 執行資料訂正操作

update resource set user_id=169 where user_id=166 and id in ( select id from test.resource_20120221);

如果需要復原的話,隻需執行

update resource set user_id=166 where id in ( select id from test.resource_20120221);

即可!

這裡涉及到小批量資料的訂正,如果大量的資料,就要使用批量送出的方法了!

附上:

 M-M架構的DDL變更技巧

l  M-M 複制架構,隻有一台提供全部或主資料服務

推薦DDL語句,在當下M-M架構中屬于備用資料庫伺服器上優先執行,有四項優點:

1 不立即影響資料庫提供的 資料服務;

2 不阻塞主備之間資料複制的日志恢複操作;

3 DDL語句執行過程,若出問題隻影響備庫的穩定性,而很少會影響主庫;

4 若有資料服務無縫切換功能(例如:heartbeat、自主資料層等),可以在備庫執行完成後,進行資料服務提供的主備庫切換,尤其是資料容量大的表變更時,可以減少對業務影響程度及減少停機維護時間和次數;

具體操作