mysql分表之后如何平滑上线详解 |
||||||
鍒嗚〃鐨勭洰鐨?br />椤圭洰寮鍙戜腑锛屾垜浠殑鏁版嵁搴撴暟鎹秺鏉ヨ秺澶э紝闅忎箣鑰屾潵鐨勬槸鍗曚釜琛ㄤ腑鏁版嵁澶銆備互鑷充簬鏌ヨ鏁版嵁鍙樻參锛岃屼笖鐢变簬琛ㄧ殑閿佹満鍒跺鑷村簲鐢ㄦ搷浣滀篃鍙楀埌涓ラ噸褰卞搷锛屽嚭鐜颁簡鏁版嵁搴撴ц兘鐡堕銆?/p> 褰撳嚭鐜拌繖绉嶆儏鍐垫椂锛屾垜浠彲浠ヨ冭檻鍒嗚〃锛屽嵆灏嗗崟涓暟鎹簱琛ㄨ繘琛屾媶鍒嗭紝鎷嗗垎鎴愬涓暟鎹〃锛岀劧鍚庣敤鎴疯闂殑鏃跺欙紝鏍规嵁涓瀹氱殑绠楁硶锛岃鐢ㄦ埛璁块棶涓嶅悓鐨勮〃锛岃繖鏍锋暟鎹垎鏁e埌澶氫釜鏁版嵁琛ㄤ腑锛屽噺灏戜簡鍗曚釜鏁版嵁琛ㄧ殑璁块棶鍘嬪姏銆傛彁鍗囦簡鏁版嵁搴撹闂ц兘銆?/p> 涓句釜鏍楀瓙
|
id | user_id | 鍏朵粬瀛楁 |
---|---|---|
涓婚敭id | 鐢ㄦ埛id | 鍏朵粬瀛楁 |
鍜变滑涓鑸兘浼氱敤user_id鍘绘煡璇㈠搴旂殑鐢ㄦ埛淇℃伅锛屼絾鏄殢鐫涓氬姟鐨勫闀匡紝杩欏紶琛ㄤ細瓒婃潵瓒婂ぇ锛岀敋鑷充笂浜匡紝涓ラ噸褰卞搷浜嗘煡璇㈡ц兘銆?鎵浠ュ挶浠氨浼氬杩欏紶琛ㄨ繘琛屽垎琛ㄥ鐞嗭紝鍒嗗埌澶氬紶琛ㄥ噺灏忔煡璇㈠帇鍔?/p>
浠ュ垎10寮犺〃涓轰緥(鍏蜂綋鍒嗗灏戝紶琛?鏍规嵁瀹為檯鎯呭喌鏉ヤ及绠? 棣栧厛鍜变滑寤?0寮犺〃 user1銆乽ser2銆乽ser3銆傘傘傘傘倁ser10
涓鑸儏鍐典笅锛屾垜浠兘浼氱敤浣滀负绱㈠紩鐨勫瓧娈?user_id)杩涜鍙栨ā澶勭悊銆傛兂鍒嗗灏戝紶琛紝灏辨寜鐓у灏戝彇妯★紝姣斿杩欎釜case灏辨槸10
$table_name = $user_id % 10;
鎸夌収涓婇潰鐨勫彇妯″叕寮?/p>
銆屾瘡娆URD鏍规嵁涓婇潰鏌ユ壘琛ㄧ殑绛栫暐杩涜灏辫浜嗐嶏紝杩欎釜闂涓嶅ぇ锛屾垜浠殏涓斿厛涓嶅璇淬?/p>
鍏跺疄涓婇潰鐨勬柟娉曞ぇ瀹跺簲璇ラ兘鐭ラ亾鎬庝箞鐢紝浣嗘槸鏈変釜闂锛屽凡缁忎笂绾夸簡鐨勮〃鎬庝箞鍔烇紵閭e紶琛ㄧ殑鏁版嵁鍦ㄧ嚎涓婃槸涓鐩磋鏌ユ壘鎴栬呮敼鍙樼殑銆傚浣曡兘澶熻繘琛屽钩婊戠殑鍒嗚〃锛屽苟涓旇鐢ㄦ埛鏃犳劅鐭ュ憿锛?/p>
鏂规硶1
鐩存帴涓婄嚎锛屾彁鍓嶅啓涓剼鏈紝鑴氭湰鍐呭鏄妸鏃ц〃(user)鐨勬暟鎹悓姝ュ埌user1琛ㄥ埌user10琛紝涓涓婄嚎浜嗚刀绱ф墽琛?/p>
杩欑鏂规硶鏄庢樉鏄涓嶉氱殑锛屼富瑕佹槸瀛樺湪浠ヤ笅闂
杩欐樉鐒舵槸琛屼笉閫氱殑锛屽绾夸笂褰卞搷寰堝ぇ銆?/p>
鏂规硶2
鍏堝啓涓悓姝ユ暟鎹殑鑴氭湰锛岃剼鏈唴瀹规槸鎶婃棫琛?user)鐨勬暟鎹悓姝ュ埌user1琛ㄥ埌user10琛紝鑴氭湰鍚屾瀹屼簡鍐嶄笂绾裤?/p>
杩欎釜鏂规硶鐪嬭捣鏉ュ弸濂戒簡涓浜涳紝涓嶈繃涔熷瓨鍦ㄤ竴浜涢棶棰樸?/p>
銆屼互涓婁袱绉嶆柟娉曠湅璧锋潵璨屼技閮借涓嶉氾紝鎵浠ョ湅鏉ュ緱鏉ョ偣涓嶄竴鏍风殑浜嗐傚挶浠洿鎺ョ湅缁撹銆傘?/p>
棣栧厛鍜变滑鎶婂弻鍐欎笂绾夸簡锛屼粈涔堟剰鎬濆憿锛熸瘮濡倁ser_id=123锛屽浜庡鍔狅紝鍒犻櫎锛屼慨鏀规搷浣滄潵璇达紝鍜变滑鏃㈡搷浣渦ser琛紝涔熸搷浣渦ser_id=123瀵瑰簲鐨剈ser3琛ㄣ?/p>
function modify($user_id){ //鍖呭惈澧炲姞锛屽垹闄わ紝淇敼鎿嶄綔 modify_user(); //modify user琛? $table_name = $user_id % 10; modify_user($table_name) //modify瀵瑰簲鐨勫垎琛? }
鍥犱负鏌ヨ鐨勯儴鍒嗚繕鏄湪user琛ㄤ腑鏌ヨ鐨勶紝鎵浠ヤ笂闈㈢殑鎿嶄綔瀵圭嚎涓婄敤鎴锋槸鏃犱换浣曞奖鍝嶇殑銆?/p>
鍐欎竴涓叏閲忓悓姝ser琛ㄥ埌user1-user10鐨勮〃锛屾渶濂芥壘涓綆宄版湡鎵ц鑴氭湰锛屼互闃蹭竾涓褰卞搷user琛ㄧ殑鏌ヨ
杩欎竴姝ユ墽琛屼箣鍚庯紝鍥犱负鍜变滑涔嬪墠涓婄嚎浜嗗弻鍐?瑙佹楠?)锛屾墍浠ser琛ㄥ拰user1-user10琛ㄤ箣闂寸殑鏁版嵁宸茬粡鏄畬鍏ㄤ竴鑷寸殑浜嗐?/p>
灏嗘煡璇㈢殑閮ㄥ垎鏀瑰埌user1-user10
鍥犱负鍓嶉潰涓や釜姝ラ鍜变滑宸茬粡淇濊瘉浜唘ser琛ㄥ拰鍚勪釜鍒嗚〃涔嬮棿鐨勬暟鎹畬鍏ㄤ竴鑷存э紝鎵浠ョ洿鎺ユ妸鏌ヨ鐨勯儴鍒嗘敼鎺夋槸娌℃湁浠讳綍闂鐨?/p>
濡傛灉鎸夌収浠ヤ笂姝ラ鎵ц锛岄偅涔堝绾夸笂鐨勬暟鎹槸娌℃湁浠讳綍褰卞搷鐨勶紝鑰屼笖鎴戜滑绾夸笂灏辨槸杩欎箞鎿嶄綔浜嗭紝缁忚繃浜嗗娆″疄璺电‘淇濅笉浼氬嚭闂锛屾斁蹇冧娇鐢ㄥ嵆鍙?/p>
鍒版杩欑瘒鍏充簬mysql鍒嗚〃涔嬪悗濡備綍骞虫粦涓婄嚎鐨勬枃绔犲氨浠嬬粛鍒拌繖浜?鏇村鐩稿叧mysql鍒嗚〃骞虫粦涓婄嚎鍐呭璇锋悳绱㈣剼鏈箣瀹朵互鍓嶇殑鏂囩珷鎴栫户缁祻瑙堜笅闈㈢殑鐩稿叧鏂囩珷甯屾湜澶у浠ュ悗澶氬鏀寔鑴氭湰涔嬪锛?/p>