无论是在ORACLE、MSSQL中都会存在着扩容、缩容的操作,并且这个技能基本是DBA所必备的。下面是本人的一点理解:
而现在要说的扩容和缩容是结业某种业务场景的(其实就是分库分表的数据迁移):
扩容其实在之前分库分表的时候从操作过了。只是之前我们不知道那样就叫做扩容。
下面我们演示将test_3的库数据进行迁移
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | if __name__ == ‘__main__’ : # 设置公共库配置 db_config_common = { ‘user’ : ‘root’ , ‘password’ : ‘root’ , ‘host’ : ‘127.0.0.1’ , ‘port’ : 3306 , ‘database’ : ‘test’ } sharding = ShardingDatabase ( ) # 设置公共数据库配置 sharding . get_conn_cursor ( db_config_common , ‘common’ ) # 获得数据存在test_3的用户 select_sql = ” ‘ SELECT username FROM user where db_name = ‘ test _3 ‘ ‘ ” sharding . cursor_select_common . execute ( select_sql ) username_list = [ ] for ( username , ) in sharding . cursor_select_common : username_list . append ( username ) for username in username_list : # 指定用户数据到 test_2库 表7 sharding . move_data ( username , ‘test_2’ , 7 ) # 删除库 test_3 drop_db_sql = ” ‘ DROP DATABASE test_3 ‘ ” sharding . cursor_dml_common . execute ( drop_db_sql ) |
源码:reduce_capacity
查看迁移后数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | — 库test_3已经被删除 show databases; +——————–+ | Database | +——————–+ | test | | test_1 | | test_2 | +——————–+ — 在test_2库的用户数据 SELECT * FROM test. user WHERE db_name = ‘test_2’; +———+————+————+————+———+ | user_id | username | password | table_flag | db_name | +———+————+————+————+———+ | 3 | username3 | password3 | 7 | test_2 | | 7 | username7 | password7 | 3 | test_2 | | 55 | username55 | password55 | 6 | test_2 | +———+————+————+————+———+ SELECT * FROM buy_order_7 WHERE user_id = 3 LIMIT 0, 2; +———————+———+—————+——-+——–+ | buy_order_id | user_id | user_guide_id | price | status | +———————+———+—————+——-+——–+ | 3794292612787081217 | 3 | 1 | 0.00 | 0 | | 3794292612803858433 | 3 | 1 | 0.00 | 0 | +———————+———+—————+——-+——–+ SELECT * FROM order_goods_7 WHERE sell_order_id = 3794292749739495425 LIMIT 0, 1; +———————+———————+———————+—————+——–+——+ | order_goods_id | sell_order_id | goods_id | user_guide_id | price | num | +———————+———————+———————+—————+——–+——+ | 3794293053134475265 | 3794292749739495425 | 3794292588254597121 | 7 | 630.00 | 2 | +———————+———————+———————+—————+——–+——+ |
文章转载来自:trustauth.cn