【MySql】mysql 資料庫資料訂正

楊奇龍發表於2012-02-26
       工作過程中時常遇到資料訂正的需求,該操作本身不難。操作時要求能夠保持回滾~對於能夠滿足回滾的要求,我通常執行備份表,然後執行變更!如果傳送訂正錯誤或者使用者要求回滾的時候,就完全恢復整個表,這樣做會有多餘的操作,因為我們只要
實際上可以選擇備份要進行更正的資料!比如如下需求:
將表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、自主資料層等),可以在備庫執行完成後,進行資料服務提供的主備庫切換,尤其是資料容量大的表變更時,可以減少對業務影響程度及減少停機維護時間和次數;
具體操作

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-717175/,如需轉載,請註明出處,否則將追究法律責任。

相關文章