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