鐩綍
鏈珷鎻忚堪浜MySQL鎻愪緵鐨勫悇绉嶅鍒剁壒鎬с傚紩鍏ヤ簡澶嶅埗姒傚康锛屾樉绀哄浣曡缃鍒舵湇鍔″櫒鍜屾湇鍔′互鎸囧鐩稿簲鐨勫鍒堕夐」銆傝繕鎻愪緵浜FAQ(浠ュ強绛旀) 鍒楄〃锛屼互鍙婅В鍐冲鍒堕棶棰樼殑鎺掗敊寤鸿銆
鍏充簬澶嶅埗鐩稿叧鐨SQL璇彞鐨勮娉曟弿杩帮紝鍙傝13.6鑺傦紝鈥滃鍒惰鍙モ銆
鎴戜滑寤鸿浣犵粡甯歌闂垜浠殑缃戝潃http://www.mysql.com锛屽苟妫鏌ュ鏈珷鐨勪慨鏀广傚鍒跺湪涓嶆柇鍦板緱鍒版敼杩涳紝鎴戜滑鐢ㄦ渶鏂扮殑淇℃伅瀹氭湡鏇存柊鏈墜鍐屻
MySQL鏀寔鍗曞悜銆佸紓姝ュ鍒讹紝澶嶅埗杩囩▼涓竴涓湇鍔″櫒鍏呭綋涓绘湇鍔″櫒锛岃屼竴涓垨澶氫釜鍏跺畠鏈嶅姟鍣ㄥ厖褰撲粠鏈嶅姟鍣ㄣ(杩欎笌鍚屾澶嶅埗鍙互杩涜瀵规瘮锛鍚屾澶嶅埗鏄MySQL绨囩殑涓涓壒寰佲斿弬瑙绗17绔狅細MySQL绨锛銆涓绘湇鍔″櫒灏嗘洿鏂板啓鍏ヤ簩杩涘埗鏃ュ織鏂囦欢锛屽苟缁存姢鏂囦欢鐨勪竴涓储寮曚互璺熻釜鏃ュ織寰幆銆傝繖浜涙棩蹇楀彲浠ヨ褰曞彂閫佸埌浠庢湇鍔″櫒鐨勬洿鏂般傚綋涓涓粠鏈嶅姟鍣ㄨ繛鎺ヤ富鏈嶅姟鍣ㄦ椂锛屽畠閫氱煡涓绘湇鍔″櫒浠庢湇鍔″櫒鍦ㄦ棩蹇椾腑璇诲彇鐨勬渶鍚庝竴娆℃垚鍔熸洿鏂扮殑浣嶇疆銆備粠鏈嶅姟鍣ㄦ帴鏀朵粠閭f椂璧峰彂鐢熺殑浠讳綍鏇存柊锛岀劧鍚庡皝閿佸苟绛夊緟涓绘湇鍔″櫒閫氱煡鏂扮殑鏇存柊銆
濡傛灉浣犳兂瑕佽缃摼寮忓鍒舵湇鍔″櫒锛屼粠鏈嶅姟鍣ㄦ湰韬篃鍙互鍏呭綋涓绘湇鍔″櫒銆
璇锋敞鎰忓綋浣犺繘琛屽鍒舵椂锛屾墍鏈夊澶嶅埗涓殑琛ㄧ殑鏇存柊蹇呴』鍦ㄤ富鏈嶅姟鍣ㄤ笂杩涜銆傚惁鍒欙紝浣犲繀椤昏灏忓績锛屼互閬垮厤鐢ㄦ埛瀵逛富鏈嶅姟鍣ㄤ笂鐨勮〃杩涜鐨勬洿鏂颁笌瀵逛粠鏈嶅姟鍣ㄤ笂鐨勮〃鎵杩涜鐨勬洿鏂颁箣闂寸殑鍐茬獊銆
鍗曞悜澶嶅埗鏈夊埄浜庡仴澹с侀熷害鍜岀郴缁熺鐞嗭細
路 涓绘湇鍔″櫒/浠庢湇鍔″櫒璁剧疆澧炲姞浜嗗仴澹с備富鏈嶅姟鍣ㄥ嚭鐜伴棶棰樻椂锛屼綘鍙互鍒囨崲鍒颁粠鏈嶅姟鍣ㄤ綔涓哄浠姐
路 閫氳繃鍦ㄤ富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒涔嬮棿鍒囧垎澶勭悊瀹㈡埛鏌ヨ鐨勮礋鑽凤紝鍙互寰楀埌鏇村ソ鐨勫鎴峰搷搴旀椂闂淬SELECT鏌ヨ鍙互鍙戦佸埌浠庢湇鍔″櫒浠ラ檷浣庝富鏈嶅姟鍣ㄧ殑鏌ヨ澶勭悊璐熻嵎銆備絾淇敼鏁版嵁鐨勮鍙ヤ粛鐒跺簲鍙戦佸埌涓绘湇鍔″櫒锛屼互渚夸富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒淇濇寔鍚屾銆傚鏋滈潪鏇存柊鏌ヨ涓轰富锛岃璐熻浇鍧囪 绛栫暐寰堟湁鏁堬紝浣嗕竴鑸槸鏇存柊鏌ヨ銆
路 浣跨敤澶嶅埗鐨勫彟涓涓ソ澶勬槸鍙互浣跨敤涓涓粠鏈嶅姟鍣ㄦ墽琛屽浠斤紝鑰屼笉浼氬共鎵颁富鏈嶅姟鍣ㄣ傚湪澶囦唤杩囩▼涓富鏈嶅姟鍣ㄥ彲浠ョ户缁鐞嗘洿鏂般傚弬瑙5.9.1鑺傦紝鈥滄暟鎹簱澶囦唤鈥銆
MySQL澶嶅埗鍩轰簬涓绘湇鍔″櫒鍦ㄤ簩杩涘埗鏃ュ織涓窡韪墍鏈夊鏁版嵁搴撶殑鏇存敼(鏇存柊銆佸垹闄ょ瓑绛)銆傚洜姝わ紝瑕佽繘琛屽鍒讹紝蹇呴』鍦ㄤ富鏈嶅姟鍣ㄤ笂鍚敤浜岃繘鍒舵棩蹇椼傚弬瑙5.11.3鑺傦紝鈥滀簩杩涘埗鏃ュ織鈥銆
姣忎釜浠庢湇鍔″櫒浠庝富鏈嶅姟鍣ㄦ帴鏀朵富鏈嶅姟鍣ㄥ凡缁忚褰曞埌鍏朵簩杩涘埗鏃ュ織鐨勪繚瀛樼殑鏇存柊锛屼互渚夸粠鏈嶅姟鍣ㄥ彲浠ュ鍏舵暟鎹嫹璐濇墽琛岀浉鍚岀殑鏇存柊銆
璁よ瘑鍒颁簩杩涘埗鏃ュ織鍙槸涓涓粠鍚敤浜岃繘鍒舵棩蹇楃殑鍥哄畾鏃堕棿鐐瑰紑濮嬬殑璁板綍闈炲父閲嶈銆備换浣曡缃殑浠庢湇鍔″櫒闇瑕佷富鏈嶅姟鍣ㄤ笂鐨鍦ㄤ富鏈嶅姟鍣ㄤ笂鍚敤浜岃繘鍒舵棩蹇楁椂鐨鏁版嵁搴撴嫹璐濄傚鏋滃惎鍔ㄤ粠鏈嶅姟鍣ㄦ椂锛屽叾鏁版嵁搴撲笌涓绘湇鍔″櫒涓婄殑鍚姩浜岃繘鍒舵棩蹇楁椂鐨勭姸鎬佷笉鐩稿悓锛屼粠鏈嶅姟鍣ㄥ緢鍙兘澶辫触銆
灏嗕富鏈嶅姟鍣ㄧ殑鏁版嵁鎷疯礉鍒颁粠鏈嶅姟鍣ㄧ殑涓涓斿緞鏄娇鐢LOAD DATA FROM MASTER璇彞銆傝娉ㄦ剰LOAD DATA FROM MASTER鐩墠鍙湪鎵鏈夎〃浣跨敤MyISAM瀛樺偍寮曟搸鐨勪富鏈嶅姟鍣ㄤ笂宸ヤ綔銆傚苟涓旓紝璇ヨ鍙ュ皢鑾峰緱鍏ㄥ眬璇婚攣瀹氾紝鍥犳褰撹〃姝e鍒跺埌浠庢湇鍔″櫒涓婃椂锛屼笉鍙兘鍦ㄤ富鏈嶅姟鍣ㄤ笂杩涜鏇存柊銆傚綋鎴戜滑鎵ц琛ㄧ殑鏃犻攣鐑浠芥椂锛屽垯涓嶅啀闇瑕佸叏灞璇婚攣瀹氥
鐢变簬杩欎簺闄愬埗锛屾垜浠缓璁彧鏈変富鏈嶅姟鍣ㄤ笂鐨勬暟鎹泦鐩稿杈冨皬锛屾垨鑰呬富鏈嶅姟鍣ㄤ笂寤惰繜璇婚攣瀹氬凡缁忚鎺ュ彈锛屾墠鍙互浣跨敤LOAD DATA FROM MASTER銆傝LOAD DATA FROM MASTER鐨勫疄闄呴熷害闅忕郴缁熺殑涓嶅悓鑰屼笉鍚岋紝瀵逛簬鎵ц鏃堕棿锛屾渶濂界殑瑙勫垯鏄瘡1MB鐨勬暟鎹敤1绉掗挓銆傝繖鏄竴涓矖鐣ョ殑浼拌锛屼絾浣犱細鍙戠幇濡傛灉涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄧ殑鎬ц兘涓婄瓑浠蜂簬700MHz Pentium CPU锛岄氳繃100Mbps鐨勭綉缁滆繘琛岃繛鎺ワ紝鍒欒浼拌鐩稿綋鍑嗙‘銆
浠庢湇鍔″櫒璁剧疆涓哄鍒朵富鏈嶅姟鍣ㄧ殑鏁版嵁鍚庯紝瀹冭繛鎺ヤ富鏈嶅姟鍣ㄥ苟绛夊緟鏇存柊杩囩▼銆傚鏋滀富鏈嶅姟鍣ㄥけ璐ワ紝鎴栬呬粠鏈嶅姟鍣ㄥけ鍘讳笌涓绘湇鍔″櫒涔嬮棿鐨勮繛鎺ワ紝浠庢湇鍔″櫒淇濇寔瀹氭湡灏濊瘯杩炴帴锛岀洿鍒板畠鑳藉缁х画甯у惉鏇存柊銆傜敱--master-connect-retry閫夐」鎺у埗閲嶈瘯闂撮殧銆 榛樿涓60绉掋
姣忎釜浠庢湇鍔″櫒璺熻釜澶嶅埗鏃堕棿銆備富鏈嶅姟鍣ㄤ笉鐭ラ亾鏈夊灏戜釜浠庢湇鍔″櫒鎴栧湪鏌愪竴鏃跺埢鏈夊摢浜涜鏇存柊浜嗐
MySQL浣跨敤3涓嚎绋嬫潵鎵ц澶嶅埗鍔熻兘(鍏朵腑1涓湪涓绘湇鍔″櫒涓婏紝鍙︿袱涓湪浠庢湇鍔″櫒涓娿傚綋鍙戝嚭START SLAVE鏃讹紝浠庢湇鍔″櫒鍒涘缓涓涓I/O绾跨▼锛屼互杩炴帴涓绘湇鍔″櫒骞惰瀹冨彂閫佽褰曞湪鍏朵簩杩涘埗鏃ュ織涓殑璇彞銆備富鏈嶅姟鍣ㄥ垱寤轰竴涓嚎绋嬪皢浜岃繘鍒舵棩蹇椾腑鐨勫唴瀹瑰彂閫佸埌浠庢湇鍔″櫒銆傝绾跨▼鍙互璇嗗埆涓轰富鏈嶅姟鍣ㄤ笂SHOW PROCESSLIST鐨勮緭鍑轰腑鐨Binlog Dump绾跨▼銆備粠鏈嶅姟鍣I/O绾跨▼璇诲彇涓绘湇鍔″櫒Binlog Dump绾跨▼鍙戦佺殑鍐呭骞跺皢璇ユ暟鎹嫹璐濆埌浠庢湇鍔″櫒鏁版嵁鐩綍涓殑鏈湴鏂囦欢涓紝鍗涓户鏃ュ織銆傜3涓嚎绋嬫槸SQL绾跨▼锛屾槸浠庢湇鍔″櫒鍒涘缓鐢ㄤ簬璇诲彇涓户鏃ュ織骞舵墽琛屾棩蹇椾腑鍖呭惈鐨勬洿鏂般
鍦ㄥ墠闈㈢殑鎻忚堪涓紝姣忎釜浠庢湇鍔″櫒鏈3涓嚎绋嬨傛湁澶氫釜浠庢湇鍔″櫒鐨勪富鏈嶅姟鍣ㄥ垱寤轰负姣忎釜褰撳墠杩炴帴鐨勪粠鏈嶅姟鍣ㄥ垱寤轰竴涓嚎绋嬶紱姣忎釜浠庢湇鍔″櫒鏈夎嚜宸辩殑I/O鍜SQL绾跨▼銆
杩欐牱璇诲彇鍜屾墽琛岃鍙ヨ鍒嗘垚涓や釜鐙珛鐨勪换鍔°傚鏋滆鍙ユ墽琛岃緝鎱㈠垯璇彞璇诲彇浠诲姟娌℃湁鎱笅鏉ャ備緥濡傦紝濡傛灉浠庢湇鍔″櫒鏈変竴娈垫椂闂存病鏈夎繍琛屼簡锛屽綋浠庢湇鍔″櫒鍚姩鏃讹紝鍏I/O绾跨▼鍙互寰堝揩鍦颁粠涓绘湇鍔″櫒绱㈠彇鎵鏈変簩杩涘埗鏃ュ織鍐呭锛屽嵆浣SQL绾跨▼杩滆繙婊炲悗銆傚鏋滀粠鏈嶅姟鍣ㄥ湪SQL绾跨▼鎵ц瀹屾墍鏈夌储鍙栫殑璇彞鍓嶅仠姝紝I/O 绾跨▼鑷冲皯宸茬粡绱㈠彇浜嗘墍鏈夊唴瀹癸紝浠ヤ究璇彞鐨勫畨鍏ㄦ嫹璐濅繚瀛樺埌鏈湴浠庢湇鍔″櫒鐨勪腑缁ф棩蹇椾腑锛屼緵浠庢湇鍔″櫒涓嬫鍚姩鏃舵墽琛屻傝繖鏍峰厑璁告竻绌轰富鏈嶅姟鍣ㄤ笂鐨勪簩杩涘埗鏃ュ織锛屽洜涓轰笉鍐嶉渶瑕佺瓑鍊欎粠鏈嶅姟鍣ㄦ潵绱㈠彇鍏跺唴瀹广
SHOW PROCESSLIST璇彞鍙互鎻愪緵鍦ㄤ富鏈嶅姟鍣ㄤ笂鍜屼粠鏈嶅姟鍣ㄤ笂鍙戠敓鐨勫叧浜庡鍒剁殑淇℃伅銆
涓嬮潰鐨勪緥瀛愯鏄庝簡杩3涓嚎绋嬪湪SHOW PROCESSLIST涓殑鏄剧ず銆
鍦ㄤ富鏈嶅姟鍣ㄤ笂锛SHOW PROCESSLIST鐨勮緭鍑虹湅涓婂幓搴斾负锛
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL
杩欏効锛岀嚎绋2鏄竴涓繛鎺ヤ粠鏈嶅姟鍣ㄧ殑澶嶅埗绾跨▼銆傝淇℃伅琛ㄧず鎵鏈変富瑕佹洿鏂板凡缁忚鍙戦佸埌浠庢湇鍔″櫒锛屼富鏈嶅姟鍣ㄦ绛夊緟鏇村鐨勬洿鏂板嚭鐜般
鍦ㄤ粠鏈嶅姟鍣ㄤ笂锛SHOW PROCESSLIST鐨勮緭鍑虹湅涓婂幓搴斾负锛
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 10
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 11
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Has read all relay log; waiting for the slave I/O
thread to update it
Info: NULL
璇ヤ俊鎭〃绀虹嚎绋10鏄悓涓绘湇鍔″櫒閫氫俊鐨I/O绾跨▼锛岀嚎绋11鏄鐞嗕繚瀛樺湪涓户鏃ュ織涓殑鏇存柊鐨SQL绾跨▼銆SHOW PROCESSLIST杩愯鏃讹紝涓や釜绾跨▼鍧囩┖闂诧紝绛夊緟鍏跺畠鏇存柊銆
璇锋敞鎰Time鍒楃殑鍊煎彲浠ユ樉绀轰粠鏈嶅姟鍣ㄦ瘮涓绘湇鍔″櫒婊炲悗澶氶暱鏃堕棿銆傚弬瑙6.9鑺傦紝鈥滃鍒禙AQ鈥銆
路 Sending binlog event to slave
浜岃繘鍒舵棩蹇楃敱鍚勭浜嬩欢缁勬垚锛屼竴涓簨浠堕氬父涓轰竴涓洿鏂板姞涓浜涘叾瀹冧俊鎭傜嚎绋嬪凡缁忎粠浜岃繘鍒舵棩蹇楄鍙栦簡涓涓簨浠跺苟涓旀灏嗗畠鍙戦佸埌浠庢湇鍔″櫒銆
路 Finished reading one binlog; switching to next binlog
绾跨▼宸茬粡璇诲畬浜岃繘鍒舵棩蹇楁枃浠跺苟涓旀鎵撳紑涓嬩竴涓鍙戦佸埌浠庢湇鍔″櫒鐨勬棩蹇楁枃浠躲
路 Has sent all binlog to slave; waiting for binlog to be updated
绾跨▼宸茬粡浠庝簩杩涘埗鏃ュ織璇诲彇鎵鏈変富瑕佺殑鏇存柊骞跺凡缁忓彂閫佸埌浜嗕粠鏈嶅姟鍣ㄣ傜嚎绋嬬幇鍦ㄦ绌洪棽锛岀瓑寰呯敱涓绘湇鍔″櫒涓婃柊鐨勬洿鏂板鑷寸殑鍑虹幇鍦ㄤ簩杩涘埗鏃ュ織涓殑鏂颁簨浠躲
路 Waiting to finalize termination
绾跨▼鍋滄鏃跺彂鐢熺殑涓涓緢绠鍗曠殑鐘舵併
路 Connecting to master
绾跨▼姝h瘯鍥捐繛鎺ヤ富鏈嶅姟鍣ㄣ
路 Checking master version
寤虹珛鍚屼富鏈嶅姟鍣ㄤ箣闂寸殑杩炴帴鍚庣珛鍗充复鏃跺嚭鐜扮殑鐘舵併
路 Registering slave on master
寤虹珛鍚屼富鏈嶅姟鍣ㄤ箣闂寸殑杩炴帴鍚庣珛鍗充复鏃跺嚭鐜扮殑鐘舵併
路 Requesting binlog dump
寤虹珛鍚屼富鏈嶅姟鍣ㄤ箣闂寸殑杩炴帴鍚庣珛鍗充复鏃跺嚭鐜扮殑鐘舵併傜嚎绋嬪悜涓绘湇鍔″櫒鍙戦佷竴鏉¤姹傦紝绱㈠彇浠庤姹傜殑浜岃繘鍒舵棩蹇楁枃浠跺悕鍜屼綅缃紑濮嬬殑浜岃繘鍒舵棩蹇楃殑鍐呭銆
路 Waiting to reconnect after a failed binlog dump request
濡傛灉浜岃繘鍒舵棩蹇楄浆鍌ㄨ姹傚け璐(鐢变簬娌℃湁杩炴帴)锛岀嚎绋嬭繘鍏ョ潯鐪犵姸鎬侊紝鐒跺悗瀹氭湡灏濊瘯閲嶆柊杩炴帴銆傚彲浠ヤ娇鐢--master-connect-retry閫夐」鎸囧畾閲嶈瘯涔嬮棿鐨勯棿闅斻
路 Reconnecting after a failed binlog dump request
绾跨▼姝e皾璇曢噸鏂拌繛鎺ヤ富鏈嶅姟鍣ㄣ
路 Waiting for master to send event
绾跨▼宸茬粡杩炴帴涓婁富鏈嶅姟鍣紝姝g瓑寰呬簩杩涘埗鏃ュ織浜嬩欢鍒拌揪銆傚鏋滀富鏈嶅姟鍣ㄦ绌洪棽锛屼細鎸佺画杈冮暱鐨勬椂闂淬傚鏋滅瓑寰呮寔缁slave_read_timeout绉掞紝鍒欏彂鐢熻秴鏃躲傛鏃讹紝绾跨▼璁や负杩炴帴琚腑鏂苟浼佸浘閲嶆柊杩炴帴銆
路 Queueing master event to the relay log
绾跨▼宸茬粡璇诲彇涓涓簨浠讹紝姝e皢瀹冨鍒跺埌涓户鏃ュ織渚SQL绾跨▼鏉ュ鐞嗐
路 Waiting to reconnect after a failed master event read
璇诲彇鏃(鐢变簬娌℃湁杩炴帴)鍑虹幇閿欒銆傜嚎绋嬩紒鍥鹃噸鏂拌繛鎺ュ墠灏嗙潯鐪master-connect-retry绉掋
路 Reconnecting after a failed master event read
绾跨▼姝e皾璇曢噸鏂拌繛鎺ヤ富鏈嶅姟鍣ㄣ傚綋杩炴帴閲嶆柊寤虹珛鍚庯紝鐘舵佸彉涓Waiting for master to send event銆
路 Waiting for the slave SQL thread to free enough relay log space
姝d娇鐢ㄤ竴涓潪闆relay_log_space_limit鍊硷紝涓户鏃ュ織宸茬粡澧為暱鍒板叾缁勫悎澶у皬瓒呰繃璇ュ笺I/O绾跨▼姝g瓑寰呯洿鍒SQL绾跨▼澶勭悊涓户鏃ュ織鍐呭骞跺垹闄ら儴鍒嗕腑缁ф棩蹇楁枃浠舵潵閲婃斁瓒冲鐨勭┖闂淬
路 Waiting for slave mutex on exit
绾跨▼鍋滄鏃跺彂鐢熺殑涓涓緢绠鍗曠殑鐘舵併
路 Reading event from the relay log
绾跨▼宸茬粡浠庝腑缁ф棩蹇楄鍙栦竴涓簨浠讹紝鍙互瀵逛簨浠惰繘琛屽鐞嗕簡銆
路 Has read all relay log; waiting for the slave I/O thread to update it
绾跨▼宸茬粡澶勭悊浜嗕腑缁ф棩蹇楁枃浠朵腑鐨勬墍鏈変簨浠讹紝鐜板湪姝g瓑寰I/O绾跨▼灏嗘柊浜嬩欢鍐欏叆涓户鏃ュ織銆
路 Waiting for slave mutex on exit
绾跨▼鍋滄鏃跺彂鐢熺殑涓涓緢绠鍗曠殑鐘舵併
I/O绾跨▼鐨State鍒椾篃鍙互鏄剧ず璇彞鐨勬枃鏈傝繖璇存槑绾跨▼宸茬粡浠庝腑缁ф棩蹇楄鍙栦簡涓涓簨浠讹紝浠庝腑鎻愬彇浜嗚鍙ワ紝骞朵笖姝e湪鎵ц璇彞銆
榛樿鎯呭喌锛屼腑缁ф棩蹇椾娇鐢host_name-relay-bin.nnnnnn褰㈠紡鐨勬枃浠跺悕锛屽叾涓host_name鏄粠鏈嶅姟鍣ㄤ富鏈哄悕锛nnnnnn鏄簭鍒楀彿銆傜敤杩炵画搴忓垪鍙锋潵鍒涘缓杩炵画涓户鏃ュ織鏂囦欢锛屼粠000001寮濮銆浠庢湇鍔″櫒璺熻釜绱㈠紩鏂囦欢涓洰鍓嶆浣跨敤鐨勪腑缁ф棩蹇椼 榛樿涓户鏃ュ織绱㈠紩鏂囦欢鍚嶄负host_name-relay-bin.index銆傞粯璁ゆ儏鍐碉紝鍦ㄤ粠鏈嶅姟鍣ㄧ殑鏁版嵁鐩綍涓垱寤鸿繖浜涙枃浠躲傚彲浠ョ敤--relay-log鍜--relay-log-index鏈嶅姟鍣ㄩ夐」瑕嗙洊 榛樿鏂囦欢鍚嶃傚弬瑙6.8鑺傦紝鈥滃鍒跺惎鍔ㄩ夐」鈥銆
涓户鏃ュ織涓庝簩杩涘埗鏃ュ織鐨勬牸寮忕浉鍚岋紝骞朵笖鍙互鐢mysqlbinlog璇诲彇銆SQL绾跨▼鎵ц瀹屼腑缁ф棩蹇椾腑鐨勬墍鏈変簨浠跺苟涓斾笉鍐嶉渶瑕佷箣鍚庯紝绔嬪嵆鑷姩鍒犻櫎瀹冦傛病鏈夌洿鎺ョ殑鍒犻櫎涓户鏃ュ織鐨勬満鍒讹紝鍥犱负SQL绾跨▼鍙互璐熻矗瀹屾垚銆傜劧鑰岋紝FLUSH LOGS鍙互寰幆涓户鏃ュ織锛屽綋SQL绾跨▼鍒犻櫎鏃ュ織鏃朵細鏈夊奖鍝嶃
鍦ㄤ笅闈㈢殑鏉′欢涓嬪垱寤烘柊鐨勪腑缁ф棩蹇楋細
路 姣忔I/O绾跨▼鍚姩鏃跺垱寤轰竴涓柊鐨勪腑缁ф棩蹇椼
路 褰撴棩蹇楄鍒锋柊鏃讹紱渚嬪锛岀敤FLUSH LOGS鎴mysqladmin flush-logs銆
路 褰撳綋鍓嶇殑涓户鏃ュ織鏂囦欢鍙樺緱澶ぇ鏃躲傗澶ぇ鈥濆惈涔夌殑纭畾鏂规硶锛
o max_relay_log_size锛屽鏋max_relay_log_size > 0
o max_binlog_size锛屽鏋max_relay_log_size = 0
浠庡睘澶嶅埗鏈嶅姟鍣ㄥ湪鏁版嵁鐩綍涓彟澶栧垱寤轰袱涓皬鏂囦欢銆傝繖浜鐘舵佹枃浠榛樿鍚嶄负涓master.info鍜relay-log.info銆傚畠浠寘鍚SHOW SLAVE STATUS璇彞鐨勮緭鍑烘墍鏄剧ず鐨勪俊鎭(鍏充簬璇ヨ鍙ョ殑鎻忚堪鍙傝13.6.2鑺傦紝鈥滅敤浜庢帶鍒朵粠鏈嶅姟鍣ㄧ殑SQL璇彞鈥)銆傜姸鎬佹枃浠朵繚瀛樺湪纭洏涓婏紝浠庢湇鍔″櫒鍏抽棴鏃朵笉浼氫涪澶便備笅娆′粠鏈嶅姟鍣ㄥ惎鍔ㄦ椂锛岃鍙栬繖浜涙枃浠朵互纭畾瀹冨凡缁忎粠涓绘湇鍔″櫒璇诲彇浜嗗灏戜簩杩涘埗鏃ュ織锛屼互鍙婂鐞嗚嚜宸辩殑涓户鏃ュ織鐨勭▼搴︺
鐢I/O绾跨▼鏇存柊master.info鏂囦欢銆傛枃浠朵腑鐨勮鍜SHOW SLAVE STATUS鏄剧ず鐨勫垪鐨勫搴斿叧绯讳负锛
琛 |
鎻忚堪 |
1 |
鏂囦欢涓殑琛屽彿 |
2 |
Master_Log_File |
3 |
Read_Master_Log_Pos |
4 |
Master_Host |
5 |
Master_User |
6 |
瀵嗙爜(涓嶇敱SHOW SLAVE STATUS鏄剧ず) |
7 |
Master_Port |
8 |
Connect_Retry |
9 |
Master_SSL_Allowed |
10 |
Master_SSL_CA_File |
11 |
Master_SSL_CA_Path |
12 |
Master_SSL_Cert |
13 |
Master_SSL_Cipher |
14 |
Master_SSL_Key |
鐢SQL绾跨▼鏇存柊relay-log.info鏂囦欢銆傛枃浠朵腑鐨勮鍜SHOW SLAVE STATUS鏄剧ず鐨勫垪鐨勫搴斿叧绯讳负锛
琛 |
鎻忚堪 |
1 |
Relay_Log_File |
2 |
Relay_Log_Pos |
3 |
Relay_Master_Log_File |
4 |
Exec_Master_Log_Pos |
褰撳浠戒粠鏈嶅姟鍣ㄧ殑鏁版嵁鏃讹紝浣犺繕搴斿浠借繖涓や釜灏忔枃浠朵互鍙婁腑缁ф棩蹇楁枃浠躲傚畠浠敤鏉ュ湪鎭㈠浠庢湇鍔″櫒鐨勬暟鎹悗缁х画杩涜澶嶅埗銆傚鏋滀涪澶变簡涓户鏃ュ織浣嗕粛鐒舵湁relay-log.info鏂囦欢锛屼綘鍙互閫氳繃妫鏌ヨ鏂囦欢鏉ョ‘瀹SQL绾跨▼宸茬粡鎵ц鐨勪富鏈嶅姟鍣ㄤ腑浜岃繘鍒舵棩蹇楃殑绋嬪害銆傜劧鍚庡彲浠ョ敤Master_Log_File鍜Master_LOG_POS閫夐」鎵цCHANGE MASTER TO鏉ュ憡璇変粠鏈嶅姟鍣ㄩ噸鏂颁粠璇ョ偣璇诲彇浜岃繘鍒舵棩蹇椼傚綋鐒讹紝瑕佹眰浜岃繘鍒舵棩蹇椾粛鐒跺湪涓绘湇鍔″櫒涓娿
濡傛灉浠庢湇鍔″櫒姝e鍒LOAD DATA INFILE璇彞锛屼綘搴斾篃澶囦唤璇ョ洰褰曞唴浠庢湇鍔″櫒鐢ㄤ簬璇ョ洰鐨勭殑浠讳綍SQL_LOAD-*鏂囦欢銆備粠鏈嶅姟鍣ㄩ渶瑕佽繖浜涙枃浠剁户缁鍒朵换浣曚腑鏂殑LOAD DATA INFILE鎿嶄綔銆傜敤--slave-load-tmpdir閫夐」鏉ユ寚瀹氱洰褰曠殑浣嶇疆銆傚鏋滄湭鎸囧畾锛 榛樿鍊间负tmpdir鍙橀噺鐨勫笺
杩欓噷绠鍗曟弿杩颁簡濡備綍涓轰綘褰撳墠鐨MySQL鏈嶅姟鍣ㄨ缃畬鏁寸殑澶嶅埗銆傚亣璁句綘鎯宠澶嶅埗涓绘湇鍔″櫒涓婄殑鎵鏈夋暟鎹簱锛屽苟涓旇繕娌℃湁閰嶇疆鐨勫鍒躲備綘闇瑕佸叧闂富鏈嶅姟鍣ㄦ潵瀹屾垚涓嬮潰鎵鍒楃殑姝ラ銆
涓嬮潰鐨勭▼搴忛拡瀵硅缃竴涓粠鏈嶅姟鍣紝浣犲彲浠ョ敤鏉ヨ缃涓粠鏈嶅姟鍣ㄣ
铏界劧璇ユ柟娉曟槸璁剧疆浠庢湇鍔″櫒鐨勬渶鐩存帴鐨勯斿緞锛屽畠骞朵笉鏄敮涓鐨勪竴涓備緥濡傦紝濡傛灉浣犳湁涓涓富鏈嶅姟鍣ㄧ殑鏁版嵁蹇収锛屽苟涓斾富鏈嶅姟鍣ㄥ凡缁忚缃簡鏈嶅姟鍣ID锛屽惎鐢ㄤ簡浜岃繘鍒舵棩蹇楋紝涓嶉渶瑕佸叧闂富鏈嶅姟鍣ㄦ垨鍋滄瀵瑰畠鐨勬洿鏂颁篃鍙互璁剧疆浠庢湇鍔″櫒銆傝鎯呰鍙傝6.9鑺傦紝鈥滃鍒禙AQ鈥銆
濡傛灉鎯宠绠$悊MySQL澶嶅埗璁剧疆锛屾垜浠缓璁綘閫氳鏈珷锛屽苟灏濊瘯13.6.1鑺傦紝鈥滅敤浜庢帶鍒朵富鏈嶅姟鍣ㄧ殑SQL璇彞鈥鍜13.6.2鑺傦紝鈥滅敤浜庢帶鍒朵粠鏈嶅姟鍣ㄧ殑SQL璇彞鈥涓殑鎵鏈夎鍙ャ傝繕搴旂啛鎮6.8鑺傦紝鈥滃鍒跺惎鍔ㄩ夐」鈥涓弿杩扮殑澶嶅埗鍚姩閫夐」銆
娉ㄩ噴锛璇ョ▼搴忓拰鍚庨潰绔犺妭鎵绀虹殑澶嶅埗SQL璇彞闇瑕SUPER鏉冮檺銆
1. 纭繚鍦ㄦ湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄤ笂瀹夎鐨MySQL鐗堟湰涓6.5鑺傦紝鈥滀笉鍚孧ySQL鐗堟湰涔嬮棿鐨勫鍒跺吋瀹规р鎵绀虹殑琛ㄥ吋瀹广傜悊鎯虫儏鍐碉紝搴斿湪涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄤ笂浣跨敤鏈杩戠増鏈殑MySQL銆
璇峰厛璇佸疄闂涓嶆槸鍑虹幇鍦ㄦ渶鏂扮殑MySQL鐗堟湰涓啀閫氭姤bug銆
2. 鍦ㄤ富鏈嶅姟鍣ㄤ笂涓烘湇鍔″櫒璁剧疆涓涓繛鎺ヨ处鎴枫傝璐︽埛蹇呴』鎺堜簣REPLICATION SLAVE鏉冮檺銆傚鏋滆处鎴蜂粎鐢ㄤ簬澶嶅埗(鎺ㄨ崘杩欐牱鍋)锛屽垯涓嶉渶瑕佸啀鎺堜簣浠讳綍鍏跺畠鏉冮檺銆(鍏充簬璁剧疆鐢ㄦ埛 璐︽埛鍜屾潈闄愮殑淇℃伅锛屽弬瑙5.8鑺傦紝鈥淢ySQL鐢ㄦ埛璐︽埛绠$悊鈥锛銆
鍋囧畾浣犵殑鍩熶负mydomain.com,鎯宠鍒涘缓鐢ㄦ埛鍚嶄负repl鐨勪竴涓处鎴凤紝浠庢湇鍔″櫒鍙互浣跨敤璇ヨ处鎴蜂粠浣犵殑鍩熷唴鐨勪换浣曚富鏈轰娇鐢ㄥ瘑鐮slavepass鏉ヨ闂富鏈嶅姟鍣ㄣ傝鍒涘缓璇 璐︽埛锛屽彲浣跨敤GRANT璇彞锛
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
濡傛灉浣犺鍒掍粠浠庡睘鏈嶅姟鍣ㄤ富鏈轰娇鐢LOAD TABLE FROM MASTER鎴LOAD DATA FROM MASTER璇彞锛屼綘闇瑕佹巿浜堣璐︽埛鍏跺畠鏉冮檺锛
路 鎺堜簣璐︽埛SUPER鍜RELOAD鍏ㄥ眬鏉冮檺銆
路 涓烘墍鏈夋兂瑕佽杞界殑琛ㄦ巿浜SELECT鏉冮檺銆備换浣曡 璐︽埛涓嶈兘SELECT鐨勪富鏈嶅姟鍣ㄤ笂鐨勮〃琚LOAD DATA FROM MASTER蹇界暐鎺夈
3. 鎵цFLUSH TABLES WITH READ LOCK璇彞娓呯┖鎵鏈夎〃鍜屽潡鍐欏叆璇彞锛
4. mysql> FLUSH TABLES WITH READ LOCK锛
瀵逛簬InnoDB琛紝璇锋敞鎰忥細FLUSH TABLES WITH READ LOCK杩橀攣瀹COMMIT鎿嶄綔銆傚綋鑾峰緱鍏ㄥ眬璇婚攣瀹氬悗锛屽彲浠ュ紑濮InnoDB琛ㄧ殑鏂囦欢绯荤粺蹇収銆傚揩鐓т笉鑳戒繚璇佸唴閮(鍦InnoDB瀛樺偍寮曟搸鍐呴儴)涓鑷存(鍥犱负InnoDB缂撳瓨娌℃湁鍒锋柊)锛屼絾骞朵笉闇瑕佸叧蹇冭闂锛屽洜涓InnoDB鍙互鍦ㄥ惎鍔ㄦ椂瑙e喅璇ラ棶棰樺苟缁欏嚭涓鑷寸殑缁撴灉銆傝繖璇存槑InnoDB鍦ㄥ惎鍔ㄥ揩鐓ф椂鍙互杩涜宕╂簝鎭㈠锛岃屼笉浼氱牬鍧忋傜劧鑰岋紝褰撲繚璇佷竴鑷寸殑InnoDB琛ㄥ揩鐓ф椂锛岃繕娌℃湁閫斿緞鏉ュ仠姝MySQL鏈嶅姟鍣ㄣ
璁╁鎴风▼搴忎繚鎸佽繍琛岋紝鍙戝嚭FLUSH TABLES璇彞璁╄閿佸畾淇濇寔鏈夋晥銆(濡傛灉閫鍑哄鎴风▼搴忥紝閿佽閲婃斁锛銆鐒跺悗瀵逛富鏈嶅姟鍣ㄤ笂鐨勬暟鎹繘琛屽揩鐓с
鍒涘缓蹇収鏈绠鍗曠殑閫斿緞鏄娇鐢ㄥ綊妗g▼搴忓涓绘湇鍔″櫒涓婄殑鏁版嵁鐩綍涓殑鏁版嵁搴撹繘琛屼簩杩涘埗澶囦唤銆備緥濡傦紝鍦Unix涓娇鐢tar锛屾垨鑰呭湪Windows涓娇鐢PowerArchiver銆WinRAR銆WinZip鎴栬呯被浼肩殑杞欢銆傝浣跨敤tar鏉ュ垱寤哄寘鎷墍鏈夋暟鎹簱鐨勫綊妗f枃浠讹紝杩涘叆涓绘湇鍔″櫒鐨勬暟鎹洰褰曪紝鐒跺悗鎵ц鍛戒护锛
shell> tar -cvf /tmp/mysql-snapshot.tar .
濡傛灉浣犳兂璁╁綊妗e彧鍖呮嫭this_db鏁版嵁搴擄紝搴斾娇鐢ㄥ懡浠わ細
shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db
鐒跺悗灏嗗綊妗f枃浠跺鍒跺埌浠庢湇鍔″櫒涓绘満鐨/tmp鐩綍銆傚湪璇ユ満鍣ㄤ笂锛岃繘鍏ヤ粠鏈嶅姟鍣ㄧ殑鏁版嵁鐩綍锛屽苟浣跨敤涓嬭堪鍛戒护瑙e帇缂╁綊妗f枃浠讹細
shell> tar -xvf /tmp/mysql-snapshot.tar
濡傛灉浠庢湇鍔″櫒鐨勭敤鎴疯处鎴蜂笌涓绘湇鍔″櫒鐨勪笉鍚岋紝浣犲彲鑳戒笉鎯冲鍒mysql鏁版嵁搴撱傚湪杩欑鎯呭喌涓嬶紝搴斾粠褰掓。涓帓闄よ鏁版嵁搴撱備綘涔熶笉闇瑕佸湪褰掓。涓寘鎷换浣曟棩蹇楁枃浠舵垨鑰master.info鎴relay-log.info鏂囦欢銆
褰FLUSH TABLES WITH READ LOCK鎵缃閿佸畾鏈夋晥鏃讹紝璇诲彇涓绘湇鍔″櫒涓婂綋鍓嶇殑浜岃繘鍒舵棩蹇楀悕鍜屽亸绉婚噺鍊硷細
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
File鍒楁樉绀烘棩蹇楀悕锛岃Position鏄剧ず鍋忕Щ閲忋傚湪璇ヤ緥瀛愪腑锛屼簩杩涘埗鏃ュ織鍊间负mysql-bin.003锛屽亸绉婚噺涓73銆傝褰曡鍊笺備互鍚庤缃粠鏈嶅姟鍣ㄦ椂闇瑕佷娇鐢ㄨ繖浜涘笺傚畠浠〃绀哄鍒跺潗鏍囷紝浠庢湇鍔″櫒搴斾粠璇ョ偣寮濮嬩粠涓绘湇鍔″櫒涓婅繘琛屾柊鐨勬洿鏂般
鍙栧緱蹇収骞惰褰曟棩蹇楀悕鍜屽亸绉婚噺鍚庯紝鍙互鍦ㄤ富鏈嶅姟鍣ㄤ笂閲嶆柊鍚敤鍐欐椿鍔細
mysql> UNLOCK TABLES锛
濡傛灉浣犳浣跨敤InnoDB琛紝鐞嗘兂鎯呭喌搴斾娇鐢InnoDB Hot Backup宸ュ叿锛屼娇鐢ㄨ宸ュ叿鍙互鑾峰緱涓鑷寸殑蹇収鑰屼笉闇瑕佸湪涓绘湇鍔″櫒涓婅繘琛岄攣瀹氾紝骞朵笖鍙互瀵瑰簲浠庢湇鍔″櫒涓婁娇鐢ㄧ殑蹇収鏉ヨ褰曟棩蹇楀悕鍜屽亸绉婚噺銆Hot Backup鏄竴涓檮鍔犵殑闈炲厤璐(鍟嗕笟)宸ュ叿锛屾病鏈夊寘鍚湪鏍囧噯 MySQL鍒嗗彂涓傝缁嗕俊鎭弬瑙http://www.innodb.com/manual.php鐨InnoDB Hot Backup涓婚〉銆
涓嶄娇鐢Hot Backup宸ュ叿锛屾渶蹇嵎鐨勯斿緞鏄娇鐢InnoDB琛ㄧ殑浜岃繘鍒跺揩鐓ф潵鍏抽棴涓绘湇鍔″櫒骞跺鍒InnoDB鏁版嵁鏂囦欢銆佹棩蹇楁枃浠跺拰琛ㄥ畾涔夋枃浠(.frm鏂囦欢)銆傝璁板綍褰撳墠鐨勬棩蹇楁枃浠跺悕鍜屽亸绉婚噺锛屽叧闂湇鍔″櫒涔嬪墠搴斿彂鍑轰笅闈㈢殑璇彞锛
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
鐒跺悗璁板綍鍓嶉潰鎵绀虹殑SHOW MASTER STATUS鐨勮緭鍑轰腑鏄剧ず鐨勬棩蹇楀悕鍜屽亸绉婚噺銆傝褰曟棩蹇楀悕鍜屽亸绉婚噺鍚庯紝涓瑙i攣琛ㄥ叧闂湇鍔″櫒浠ョ‘淇 鏈嶅姟鍣ㄥ叧闂椂鐨勫揩鐓т笌褰撳墠鐨勬棩蹇楁枃浠跺拰鍋忕Щ閲忕浉瀵瑰簲锛
shell> mysqladmin -u root shutdown
閫傚悎MyISAM鍜InnoDB琛ㄧ殑鍙︿竴涓柟娉曟槸瀵逛富鏈嶅姟鍣ㄤ笂鐨SQL杩涜杞偍鑰屼笉鏄鍓嶉潰璁ㄨ鐨勪簩杩涘埗澶嶅埗杩涜杞偍銆備负浜嗗疄鐜帮紝鍙互鍦ㄤ富鏈嶅姟鍣ㄤ笂浣跨敤mysqldump --master-data锛屼互鍚庡皢SQL杞偍鏂囦欢瑁呭叆浠庢湇鍔″櫒銆備絾鏄紝杩欐牱姣斾簩杩涘埗澶嶅埗瑕佹參涓浜涖
濡傛灉涓绘湇鍔″櫒杩愯鏃舵病鏈夊惎鐢--logs-bin锛SHOW MASTER STATUS鎴mysqldump --master-data鏄剧ず鐨勬棩蹇楀悕鍜屼綅缃间负绌恒傚湪杩欑鎯呭喌涓嬶紝褰撲互鍚庢寚瀹氫粠鏈嶅姟鍣ㄧ殑鏃ュ織鏂囦欢鍜屼綅缃椂闇瑕佷娇鐢ㄧ殑鍊间负绌哄瓧绗︿覆('')鍜4.
5. 纭繚涓绘湇鍔″櫒涓绘満涓my.cnf鏂囦欢鐨[mysqld]閮ㄥ垎鍖呮嫭涓涓log-bin閫夐」銆傝閮ㄥ垎杩樺簲鏈変竴涓server-id=Master_id閫夐」锛屽叾涓master_id蹇呴』涓1鍒232鈥1涔嬮棿鐨勪竴涓鏁存暟鍊笺備緥濡傦細
6. [mysqld]
7. log-bin=mysql-bin
8. server-id=1
濡傛灉娌℃湁鎻愪緵閭d簺閫夐」锛屽簲娣诲姞瀹冧滑骞堕噸鍚湇鍔″櫒銆
9. 鍋滄鐢ㄤ簬浠庢湇鍔″櫒鐨勬湇鍔″櫒骞跺湪鍏my.cnf鏂囦欢涓坊鍔犱笅闈㈢殑琛岋細
10. [mysqld]
11. server-id=slave_id
slave_id鍊煎悓Master_id鍊间竴鏍凤紝蹇呴』涓1鍒232鈥1涔嬮棿鐨勪竴涓鏁存暟鍊笺傚苟涓旓紝浠庢湇鍔″櫒鐨ID蹇呴』涓庝富鏈嶅姟鍣ㄧ殑ID涓嶇浉鍚屻備緥濡傦細
[mysqld]
server-id=2
濡傛灉璁剧疆澶氫釜浠庢湇鍔″櫒锛屾瘡涓粠鏈嶅姟鍣ㄥ繀椤绘湁涓涓敮涓鐨server-id鍊硷紝蹇呴』涓庝富鏈嶅姟鍣ㄧ殑浠ュ強鍏跺畠浠庢湇鍔″櫒鐨勪笉鐩稿悓銆傚彲浠ヨ涓server-id鍊肩被浼间簬IP鍦板潃锛氳繖浜ID鍊艰兘鍞竴璇嗗埆澶嶅埗鏈嶅姟鍣ㄧ兢闆嗕腑鐨勬瘡涓湇鍔″櫒瀹炰緥銆
濡傛灉涓嶆寚瀹氫竴涓server-id鍊硷紝濡傛灉娌℃湁瀹氫箟master-host锛屽垯灏嗗畠璁剧疆涓1锛涘惁鍒欒缃负2銆傝娉ㄦ剰濡傛灉server-id澶暱锛屼富鏈嶅姟鍣 鎷掔粷鎵鏈夋潵鑷粠鏈嶅姟鍣ㄧ殑杩炴帴锛屽苟涓斾粠鏈嶅姟鍣ㄦ嫆缁濊繛鎺ュ埌涓绘湇鍔″櫒銆傝繖鏍凤紝鐪佺暐server-id鍙傚悎鐢ㄤ簩杩涘埗鏃ュ織澶囦唤銆
12.濡傛灉瀵逛富鏈嶅姟鍣ㄧ殑鏁版嵁杩涜浜岃繘鍒跺浠斤紝鍚姩浠庢湇鍔″櫒涔嬪墠灏嗗畠澶嶅埗鍒颁粠鏈嶅姟鍣ㄧ殑鏁版嵁鐩綍涓傜‘淇濆杩欎簺鏂囦欢鍜岀洰褰曠殑鏉冮檺姝g‘銆傛湇鍔″櫒 MySQL杩愯鐨勭敤鎴峰繀椤昏兘澶熻鍐欐枃浠讹紝濡傚悓鍦ㄤ富鏈嶅姟鍣ㄤ笂涓鏍枫
濡傛灉浣跨敤mysqldum澶囦唤锛屽厛鍚姩浠庢湇鍔″櫒(鐪嬩笅涓姝)銆
13.鍚姩浠庢湇鍔″櫒銆傚鏋滃墠闈㈠凡缁忓鍒朵簡锛岀敤--skip-slave-start閫夐」鍚姩浠庢湇鍔″櫒锛屼互渚垮畠涓嶇珛鍗冲皾璇曡繛鎺ヤ富鏈嶅姟鍣ㄣ備綘涔熷彲鑳芥兂瑕佺敤--logs-warnings閫夐」鍚姩浠庢湇鍔″櫒(榛樿璁剧疆鍚敤)锛屼互渚垮湪閿欒鏃ュ織涓樉绀烘洿澶氱殑闂鐩稿叧鐨勪俊鎭(渚嬪锛岀綉缁滄垨杩炴帴闂)銆傛斁寮冪殑杩炴帴灏嗚鍏ラ敊璇棩蹇楋紝闄ら潪鍏跺煎ぇ浜1銆
14.濡傛灉浣跨敤mysqldump澶囦唤涓绘湇鍔″櫒鐨勬暟鎹紝灏嗚浆鍌ㄦ枃浠惰杞藉埌浠庢湇鍔″櫒锛
15. shell> mysql -u root -p < dump_file.sql
16. 鍦ㄤ粠鏈嶅姟鍣ㄤ笂鎵ц涓嬮潰鐨勮鍙ワ紝鐢ㄤ綘鐨勭郴缁熺殑瀹為檯鍊兼浛鎹㈤夐」鍊硷細
17. mysql> CHANGE MASTER TO
18. -> MASTER_HOST='master_host_name',
19. -> MASTER_USER='replication_user_name',
20. -> MASTER_PASSWORD='replication_password',
21. -> MASTER_LOG_FILE='recorded_log_file_name',
22. -> MASTER_LOG_POS=recorded_log_position;
涓嬮潰鐨勮〃鏄剧ず浜嗗瓧绗︿覆閫夐」鐨勬渶澶ч暱搴︼細
Master_Host |
60 |
Master_USER |
16 |
Master_PASSWORD |
32 |
Master_Log_File |
255 |
23.鍚姩浠庢湇鍔″櫒绾跨▼锛
24. mysql> START SLAVE锛
鎵ц杩欎簺绋嬪簭鍚庯紝浠庢湇鍔″櫒搴旇繛鎺ヤ富鏈嶅姟鍣紝骞惰ˉ鍏呰嚜浠庡揩鐓т互鏉ュ彂鐢熺殑浠讳綍鏇存柊銆
濡傛灉浣犲繕璁拌缃富鏈嶅姟鍣ㄧ殑server-id鍊硷紝浠庢湇鍔″櫒涓嶈兘杩炴帴涓绘湇鍔″櫒銆
濡傛灉浣犲繕璁拌缃粠鏈嶅姟鍣ㄧ殑server-id鍊硷紝鍦ㄤ粠鏈嶅姟鍣ㄧ殑閿欒鏃ュ織涓細鍑虹幇涓嬮潰鐨勯敊璇細
Warning: You should set server-id to a non-0 value if master_host is set;
we will force server id to 2, but this MySQL server will not act as a slave.
濡傛灉鐢变簬鍏跺畠鍘熷洜涓嶈兘澶嶅埗锛屼粠鏈嶅姟鍣ㄧ殑閿欒鏃ュ織涓篃浼氬嚭鐜伴敊璇秷鎭
浠庢湇鍔″櫒澶嶅埗鏃讹紝浼氬湪鍏舵暟鎹洰褰曚腑鍙戠幇鏂囦欢dmaster.info鍜relay-log.info銆備粠鏈嶅姟鍣ㄤ娇鐢ㄨ繖涓や釜鏂囦欢璺熻釜宸茬粡澶勭悊浜嗗灏戜富鏈嶅姟鍣ㄧ殑浜岃繘鍒舵棩蹇椼備笉瑕佺Щ闄ゆ垨缂栬緫杩欎簺鏂囦欢锛岄櫎闈炰綘纭垏鐭ヤ綘姝e湪鍋氫粈涔堝苟瀹屽叏鐞嗚В鍏舵剰涔夈傚嵆浣胯繖鏍凤紝鏈濂芥槸浣跨敤CHANGE MASTER TO璇彞銆
娉ㄩ噴锛master.info鐨鍐呭浼氳鐩栧懡浠よ鎴in my.cnf涓寚瀹氱殑閮ㄥ垎閫夐」銆傝鎯呭弬瑙6.8鑺傦紝鈥滃鍒跺惎鍔ㄩ夐」鈥銆
鏈変簡涓涓揩鐓э紝浣犲彲浠ョ敤瀹冩牴鎹垰鍒氭弿杩扮殑浠庢湇鍔″櫒閮ㄥ垎鏉ヨ缃叾瀹冧粠鏈嶅姟鍣ㄣ備綘涓嶉渶瑕佷富鏈嶅姟鍣ㄧ殑鍙︿竴涓揩鐓э紱姣忎釜浠庢湇鍔″櫒鍙互浣跨敤鐩稿悓鐨勫揩鐓с
娉ㄩ噴锛氫负浜嗕繚璇佷簨鍔InnoDB澶嶅埗璁剧疆鐨勬渶澶у彲鑳界殑鑰愬彈鎬у拰涓鑷存э紝搴斿湪涓绘湇鍔″櫒鐨my.cnf鏂囦欢涓娇鐢innodb_flush_log_at_trx_commit=1鍜sync-binlog=1銆
MySQL 5.1涓娇鐢ㄧ殑浜岃繘鍒舵棩蹇楁牸寮忎笌浠ュ墠鐨勭増鏈腑鎵浣跨敤鐨勫ぇ澶т笉鍚岋紝鐗瑰埆鏄湪瀛楃闆嗗鐞嗐LOAD DATA INFILE浠ュ強鏃跺尯鏂归潰銆
娉ㄩ噴锛浣犱笉鑳戒粠浣跨敤鏂颁簩杩涘埗鏃ュ織鏍煎紡鐨勪富鏈嶅姟鍣ㄥ悜浣跨敤鏃т簩杩涘埗鏃ュ織鏍煎紡鐨勪粠鏈嶅姟鍣ㄥ鍒(渚嬪锛屼粠MySQL 5.0鍒MySQL 4.1锛銆銆傝繖鏍锋搷浣滃湪澶嶅埗璁剧疆鍗囩骇鏈嶅姟鍣ㄦ椂鍚庢灉涓ラ噸锛屽弬瑙6.6鑺傦紝鈥滃崌绾у鍒惰缃銆
鎴戜滑鎺ㄨ崘浣跨敤鏈杩戠殑MySQL鐗堟湰锛屽洜涓哄鍒跺姛鑳藉湪涓嶆柇鍦版敼杩涗腑銆傛垜浠繕鎺ㄨ崘涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄤ娇鐢ㄧ浉鍚岀殑鐗堟湰銆傛垜浠缓璁崌绾т富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒锛岃繍琛alpha鎴beta鐗堟湰鍒版柊鐨(浜у搧)鐗堟湰銆傚湪璁稿鎯呭喌涓嬶紝浠庢柊鐨勪富鏈嶅姟鍣ㄥ悜鏃х殑浠庢湇鍔″櫒澶嶅埗灏嗕細澶辫触銆備竴鑸師鍒欙紝杩愯MySQL 5.1.x鐨勪粠鏈嶅姟鍣ㄥ彲浠ヤ笌鏃х殑涓绘湇鍔″櫒(鍙互杩愯MySQL 3.23銆4.0鎴栬4.1)涓璧蜂娇鐢紝浣嗕笉鑳藉弽杩囨潵銆
鍓嶉潰鐨勪俊鎭傚悎鍗忚绾у鍒跺吋瀹规с傜劧鑰岋紝杩樹細鏈変竴涓害鏉熸潯浠讹紝渚嬪SQL绾у吋瀹规ч棶棰樸備緥濡傦紝 5.1鐗堟湰鐨勪富鏈嶅姟鍣ㄤ笉鑳藉鍒跺埌5.0鐗堟湰鐨勪粠鏈嶅姟鍣紝濡傛灉澶嶅埗璇彞浣跨敤5.1鐗堟湰鐨SQL鐗规ц屼笉鏄5.0鐗堟湰銆傝繖浜涢棶棰樺拰鍏跺畠闂鍧囧湪6.7鑺傦紝鈥滃鍒剁壒鎬у拰宸茬煡闂鈥涓璁恒
褰撳皢鏃╂湡MySQL鐗堟湰绯诲垪涓绘湇鍔″櫒鍗囩骇鍒5.1鏃讹紝搴斿厛纭繚璇ヤ富鏈嶅姟鍣ㄧ殑鎵鏈変粠鏈嶅姟鍣ㄤ娇鐢ㄤ簡鐩稿悓鐨5.1.x鐗堟湰銆傚鏋滀笉鏄繖鏍凤紝浣犲簲鍏堝崌绾т粠鏈嶅姟鍣ㄣ傚崌绾т粠鏈嶅姟鍣ㄦ椂锛屽簲鍏堝叧闂粠鏈嶅姟鍣紝鍗囩骇鍒扮浉搴5.1.x鐗堟湰锛岀劧鍚庨噸鍚粠鏈嶅姟鍣ㄥ苟閲嶆柊寮濮嬪鍒躲5.1鐗堟湰鐨勪粠鏈嶅姟鍣ㄨ兘澶熻鍙栧崌绾у墠鍐欏叆鐨勬棫鐨勪腑缁ф棩蹇楀苟鎵ц鏃ュ織涓寘鍚殑璇彞銆傚崌绾у悗浠庢湇鍔″櫒鍒涘缓鐨勪腑缁ф棩蹇椾负5.1鏍煎紡銆
浠庢湇鍔″櫒鍗囩骇鍚庯紝鍏抽棴涓绘湇鍔″櫒锛屽皢瀹冨崌绾у埌涓庝粠鏈嶅姟鍣ㄧ浉鍚岀殑5.1.x鐗堟湰骞堕噸鍚畠銆5.1涓绘湇鍔″櫒鑳藉璇诲彇鍗囩骇鍓嶅啓鍏ョ殑鏃х殑浜岃繘鍒舵棩蹇楀苟灏嗗畠浠彂閫佸埌5.1浠庢湇鍔″櫒銆備粠鏈嶅姟鍣ㄥ彲浠ヨ瘑鍒棫鐨勬牸寮忓苟姝g‘澶勭悊瀹冦傚崌绾у悗涓绘湇鍔″櫒鍒涘缓鐨勪簩杩涘埗鏃ュ織閲囩敤5.1鏍煎紡銆傝繖鏍蜂篃鍙互鐢5.1浠庢湇鍔″櫒璇嗗埆銆
鎹㈠彞璇濊锛屽綋鍗囩骇鍒5.1鏃舵病鏈変粈涔堟帾鏂斤紝鍙湁灏嗕富鏈嶅姟鍣ㄥ崌绾у埌5.1涔嬪墠鍏堝皢浠庢湇鍔″櫒鍗囩骇鍒5.1銆傝娉ㄦ剰浠5.1闄嶇骇鍒版棫鐗堟湰涓嶄細濡傛绠鍗曪細蹇呴』纭繚宸茬粡瀹屽叏澶勭悊鎵鏈5.1鐗堟湰鐨勪簩杩涘埗鏃ュ織鎴栦腑缁ф棩蹇楋紝浠ヤ究鍦ㄩ檷绾у墠鍙互绉婚櫎瀹冧滑銆
涓鑸師鍒欙紝SQL绾у鍒跺吋瀹规ц姹備富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒鍧囨敮鎸佷娇鐢ㄧ殑鐗规с備緥濡傦紝鍦MySQL 5.0.0涓紑濮嬩娇鐢TIMESTAMPADD()鍑芥暟銆傚鏋滃湪涓绘湇鍔″櫒涓婁娇鐢ㄨ鍑芥暟锛屼笉鑳藉鍒跺埌MySQL 5.0.0涔嬪墠鐨勪粠鏈嶅姟鍣ㄣ傚鏋滀綘璁″垝鍦5.1鍜屼互鍓嶇増鏈殑MySQL涔嬮棿杩涜澶嶅埗锛屼綘搴旀煡闃呭搴斾互鍓嶇増鏈郴鍒楃殑MySQL鍙傝冩墜鍐岋紝鏌ヨ璇ョ郴鍒楀鍒剁壒寰佺浉鍏充俊鎭
涓嬮潰鍒楀嚭浜嗗叧浜庢敮鎸佷粈涔堝拰涓嶆敮鎸佷粈涔堢殑璇︾粏淇℃伅銆傚叧浜庡鍒剁殑鍏跺畠InnoDB鍏蜂綋淇℃伅鍙傝15.2.6.5鑺傦紝鈥淚nnoDB鍜孧ySQL澶嶅埗鈥銆
鍏充簬淇濆瓨鐨勭▼搴忓拰瑙﹀彂鍣ㄧ殑澶嶅埗闂鍦20.4鑺傦紝鈥滃瓨鍌ㄥ瓙绋嬪簭鍜岃Е鍙戠▼搴忕殑浜岃繘鍒舵棩蹇楀姛鑳解涓璁恒
路 鐢AUTO_INCREMENT銆LAST_INSERT_ID()鍜TIMESTAMP鍊兼纭疄鐜板鍒躲
路 USER()銆UUID()鍜LOAD_FILE()鍑芥暟姣棤鏀瑰彉鍦拌锛岃繖鏍蜂笉鑳藉彲闈犲湴鍦ㄤ粠鏈嶅姟鍣ㄤ笂宸ヤ綔銆
路 涓嬮潰鐨勯檺鍒跺彧閫傚悎鍩轰簬璇彞鐨勫鍒讹紝鑰屼笉鏄熀浜庤鐨勫鍒躲澶勭悊鐢ㄦ埛绾ч攣瀹氱殑鍑芥暟GET_LOCK()銆RELEASE_LOCK()銆IS_FREE_LOCK()銆IS_USED_LOCK()澶嶅埗鏃朵粠鏈嶅姟鍣ㄤ笉鐭ラ亾鍦ㄤ富鏈嶅姟鍣ㄤ笂鍚屾椂杩涜鐨勭浉鍏虫枃鏈紱鍥犳濡傛灉浠庢湇鍔″櫒涓婄殑鍐呭涓嶅悓锛岃繖浜涘嚱鏁颁笉鐢ㄦ潵鎻掑叆鍒颁富鏈嶅姟鍣ㄧ殑琛ㄤ腑(渚嬪涓嶆墽琛INSERT INTO mytable VALUES(GET_LOCK(...)))銆
路 鍦MySQL 5.1涓FOREIGN_KEY_CHECKS銆SQL_MODE銆UNIQUE_CHECKS鍜SQL_AUTO_IS_NULL鍙橀噺鍧囧鍒躲備絾TABLE_TYPE锛屽嵆STORAGE_ENGINE鍙橀噺 涓嶅鍒讹紝鏈夊埄浜庡湪涓嶅悓鐨勫瓨鍌ㄥ紩鎿庝箣闂磋繘琛屽鍒躲
路 鍗充娇涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄦ湁涓嶅悓鐨勫叏灞瀛楃闆嗗彉閲忥紝浠ュ強鍗充娇鏈変笉鍚岀殑鍏ㄥ眬鏃跺尯鍙橀噺浠嶅彲浠ュ鍒躲
路 涓嬮潰閫傚悎浣跨敤涓嶅悓瀛楃闆嗙殑MySQL鏈嶅姟鍣ㄤ箣闂寸殑澶嶅埗锛
1. 蹇呴』鍦ㄤ富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒涓鎬绘槸浣跨敤鐩稿悓鐨鍏ㄥ眬瀛楃闆嗗拰鏍″瑙勫垯(--default-character-set銆--default-collation)銆傚惁鍒欙紝浼氬湪浠庢湇鍔″櫒涓婇亣鍒板鍒堕敭鍊奸敊璇紝鍥犱负鍦ㄤ富鏈嶅姟鍣ㄧ殑瀛楃闆嗕腑琚涓烘槸鍞竴鐨勯敭鍊煎湪浠庢湇鍔″櫒鐨勫瓧绗﹂泦涓彲鑳戒笉鏄敮涓鐨勩
2. 濡傛灉涓绘湇鍔″櫒鏃╀簬MySQL 4.1.3锛屽垯浼氳瘽涓殑瀛楃闆嗕笉搴斾笌鍏跺叏灞鍊间笉鍚(鎹㈠彞璇濊锛屼笉瑕佷娇鐢SET NAMES銆SET CHARACTER SET绛夌瓑)锛屽洜涓轰粠鏈嶅姟鍣ㄤ笉鐭ラ亾璇ュ瓧绗﹂泦鐨勬洿鏀广傚鏋滀富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒鍧囦负4.1.3鎴栨洿鏂扮増锛屽彲浠ラ殢渚垮皢浼氳瘽鐨勫瓧绗﹂泦鍙橀噺璁剧疆涓烘湰鍦板(渚嬪NAMES銆CHARACTER SET銆COLLATION_CLIENT鍜COLLATION_SERVER)锛屽洜涓鸿繖浜涜瀹氬艰鍐欏叆浜岃繘鍒舵棩蹇楋紝鍥犳浠庢湇鍔″櫒鐭ラ亾銆傜劧鑰岋紝绂佹鏇存敼浼氳瘽涓繖浜涘彉閲忕殑鍏ㄥ眬鍊硷紱濡傚墠闈㈡墍杩帮紝涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄥ繀椤诲叿鏈夊敮涓鐨勫叏灞瀛楃闆嗗笺
3. 濡傛灉鍦ㄤ富鏈嶅姟鍣ㄤ笂鐨勬暟鎹簱鐨勫瓧绗﹂泦涓庡叏灞collation_server鍊间笉鍚岋紝鍒欏簲璁捐CREATE TABLE璇彞锛屼互渚垮畠浠笉闅愬惈渚濊禆鏁版嵁搴撶殑榛樿瀛楃闆(Bug #2326)锛涗竴涓ソ鐨勮В鍐冲姙娉曟槸鍦CREATE TABLE涓槑鏄捐鏄庡瓧绗﹂泦鍜屾牎瀵硅鍒欍
路 搴斿湪涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄤ笂璁剧疆鐩稿悓鐨勭郴缁熸椂鍖恒傚惁鍒欎竴浜涜鍙ワ紝渚嬪浣跨敤NOW()鎴FROM_UNIXTIME()鍑芥暟鐨勮鍙ワ紝灏嗕笉浼氭纭鍒躲傚彲浠ヤ娇鐢ㄨ剼鏈mysqld_safe鐨--timezone=timezone_name閫夐」鎴栭氳繃璁剧疆TZ鐜鍙橀噺璁剧疆MySQL鏈嶅姟鍣ㄨ繍琛岀殑绯荤粺鐨勬椂鍖恒備富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒杩樺簲鏈夌浉鍚岀殑榛樿杩炴帴鏃跺尯璁剧疆锛涘嵆涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄥ簲鏈夌浉鍚岀殑--default-time-zone鍙傛暟鍊笺
路 CONVERT_TZ(...,...,@global.time_zone)涓嶈兘姝g‘澶嶅埗銆傚彧鏈変富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒鍧囦负5.0.4鎴栨洿鏂扮増鎵嶈兘姝g‘澶嶅埗CONVERT_TZ(...,...,@session.time_zone)銆
路 浼氳瘽鍙橀噺鍙湁鍦ㄦ洿鏂拌〃鐨勮鍙ヤ腑浣跨敤鏃舵墠鑳芥纭鍒讹紱渚嬪锛SET MAX_JOIN_SIZE=1000锛INSERT INTO mytable VALUES(@MAX_JOIN_SIZE)涓嶈兘灏嗙浉鍚岀殑鏁版嵁鎻掑叆鍒颁富鏈嶅姟鍣ㄤ笂鍜屼粠鏈嶅姟鍣ㄤ笂銆備笉閫傜敤浜庨氱敤鐨SET TIME_ZONE=...锛INSERT INTO mytable VALUES(CONVERT_TZ(...,...,@time_zone))銆
路 鍙互灏嗕粠鏈嶅姟鍣ㄤ笂鐨勯潪浜嬪姟琛ㄥ涓轰富鏈嶅姟鍣ㄤ笂鐨勪簨鍔¤〃銆備緥濡傦紝鍙互灏嗕富鏈嶅姟鍣ㄤ笂鐨InnoDB琛ㄥ鍒朵负浠庢湇鍔″櫒涓婄殑MyISAM琛ㄣ傜劧鑰岋紝澶嶅埗杩囩▼涓紝濡傛灉浠庢湇鍔″櫒鍦BEGIN/COMMIT鍧楄繃绋嬩腑鍋滄鍒欎細浜х敓闂锛屽洜涓轰粠鏈嶅姟鍣ㄥ湪BEGIN鍧楀紑濮嬫椂浼氶噸鍚傝闂鍑虹幇鍦TODO涓紝涓嶄箙灏嗕細寰楀埌淇銆
路 鍦MySQL 5.1涓彲浠ユ纭鍒跺紩鐢ㄧ敤鎴峰彉閲(鍗@var_name褰㈠紡鐨勫彉閲)鐨勬洿鏂拌鍙ワ紱浣嗗湪4.1浠ュ墠鐨勭増鏈腑鍗翠笉鍙兘銆傝娉ㄦ剰浠MySQL 5.1寮濮嬪鐢ㄦ埛鍙橀噺鍚嶇殑澶у皬鍐欎笉鍐嶆晱鎰燂紱褰撳湪5.1鍜屾棫鐗堟湰涔嬮棿璁剧疆澶嶅埗鏃跺簲鑰冭檻璇ラ棶棰樸
路 浠庢湇鍔″櫒鍙互浣跨敤SSL杩炴帴鍒颁富鏈嶅姟鍣ㄣ
路 鏈変竴涓叏灞绯荤粺鍙橀噺slave_transaction_retries锛氬鏋滃洜涓烘煇涓InnoDB姝婚攣鎴栬秴杩 InnoDB鐨innodb_lock_wait_timeout鎴NDB绨囩殑TransactionDeadlockDetectionTimeout鎴TransactionInactiveTimeout锛REPLICATION SLAVESQL绾跨▼鏈兘鎵ц鏌愪釜浜嬪姟锛屽湪缁欏嚭閿欒鍋滄鍓嶈嚜鍔ㄩ噸璇slave_transaction_retries娆° 榛樿鍊兼槸10銆備粠MySQL 5.0.4寮濮嬶紝鍙互浠SHOW STATUS鐨勮緭鍑轰腑鐪嬪埌閲嶈瘯鎬绘鏁帮紱鍙傝5.3.4鑺傦紝鈥滄湇鍔″櫒鐘舵佸彉閲忊銆
路 濡傛灉鍦ㄤ富鏈嶅姟鍣ㄤ笂鐨CREATE TABLE璇彞涓娇鐢ㄤ簡DATA DIRECTORY鎴INDEX DIRECTORY瀛愬彞锛屽瓙鍙ヤ篃鍙互鍦ㄤ粠鏈嶅姟鍣ㄤ笂浣跨敤銆傚鏋滃湪浠庢湇鍔″櫒涓绘満鏂囦欢绯荤粺涓笉瀛樺湪涓鑷寸殑鐩綍鎴栬櫧鐒跺瓨鍦ㄤ絾涓嶈兘琚粠鏈嶅姟鍣ㄨ闂紝鍒欎細甯︽潵闂銆MySQL 5.1鏀寔涓涓О涓NO_DIR_IN_CREATE鐨sql_mode閫夐」銆傚鏋滀粠鏈嶅姟鍣ㄨ繍琛屾椂灏SQL妯″紡璁剧疆涓哄寘鎷閫夐」锛屽鍒CREATE TABLE璇彞鏃跺皢蹇界暐杩欎簺瀛愬彞銆傜粨鏋滄槸鍦ㄨ〃鐨勬暟鎹簱鐩綍涓垱寤轰簡MyISAM鏁版嵁鍜岀储寮曟枃浠躲
路 涓嬮潰鐨勯檺鍒跺彧閫傚悎鍩轰簬璇彞鐨勫鍒讹紝鑰屼笉鏄熀浜庤鐨勫鍒锛氬鏋滃湪鏌ヨ涓暟鎹慨鏀逛笉纭畾锛屼富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒涓婄殑鏁版嵁鍙互涓嶅悓锛涗篃灏辨槸鐢辨煡璇紭鍖栧櫒纭畾銆(杩欐槸甯哥敤鐨勪絾涓嶆槸寰堝ソ鐨勪範鎯紝鍗充娇涓嶆槸鍦ㄥ鍒朵腑涔熶笉濂斤級銆鍏充簬璇ラ棶棰樼殑璇︾粏瑙i噴锛屽弬瑙A.8.1鑺傦紝鈥淢ySQL涓殑鎵撳紑浜嬪疁鈥銆
路 甯READ LOCK鐨FLUSH LOGS銆FLUSH MASTER銆FLUSH SLAVE鍜FLUSH TABLES涓嶈鍏ユ棩蹇楋紝鍥犱负濡傛灉澶嶅埗鍒颁粠鏈嶅姟鍣ㄤ細閫犳垚闂銆傚叧浜庤娉曠ず渚嬶紝鍙傝13.5.5.2鑺傦紝鈥淔LUSH璇硶鈥銆FLUSH TABLES銆ANALYZE TABLE銆OPTIMIZE TABLE鍜REPAIR TABLE璇彞琚啓鍏ヤ簩杩涘埗鏃ュ織骞朵細澶嶅埗鍒颁粠鏈嶅姟鍣ㄣ備竴鑸儏鍐典笉浼氶犳垚闂锛屽洜涓鸿繖浜涜鍙ヤ笉淇敼琛ㄧ殑鏁版嵁銆備絾鏄湪鏌愪簺鎯呭喌涓嬩細甯︽潵闂銆傚鏋滀綘澶嶅埗mysql鏁版嵁搴撲腑鐨勬巿鏉冭〃骞朵笖涓嶄娇鐢GRANT鐩存帴鏇存柊閭d簺琛紝蹇呴』鍦ㄤ粠鏈嶅姟鍣ㄤ笂鎵цFLUSH PRIVILEGES浣挎柊鐨勬潈闄愮敓鏁堛傚苟涓旓紝濡傛灉浣跨敤FLUSH TABLES閲嶆柊鍛藉悕MERGE琛ㄧ殑MyISAM琛紝蹇呴』鎵嬪姩鍦ㄤ粠鏈嶅姟鍣ㄤ笂鎵цFLUSH TABLES銆傚鏋滀笉鎸囧畾NO_WRITE_TO_BINLOG鎴栧叾鍒悕LOCAL锛屽垯杩欎簺璇彞琚啓鍏ヤ簩杩涘埗鏃ュ織銆
路 MySQL鍙敮鎸佷竴涓富鏈嶅姟鍣ㄥ拰澶氫釜浠庢湇鍔″櫒銆傛垜浠鍒掑皢鏉ユ坊鍔犱竴涓姇绁ㄧ畻娉曪紝褰撳墠鐨勪富鏈嶅姟鍣ㄥ嚭鐜伴棶棰樻椂鑷姩鍒囨崲銆傛垜浠繕璁″垝寮曞叆浠g悊杩囩▼閫氳繃鍚戜笉鍚岀殑浠庢湇鍔″櫒鍙戦SELECT鏌ヨ浠ュ府鍔╄繘琛岃礋杞藉潎琛°
路 褰撴湇鍔″櫒鍏抽棴銆侀噸鍚椂锛屽叾MEMORY琛ㄥ皢鍙樹负绌恒備富鏈嶅姟鍣ㄦ寜涓嬭堪鏂规硶澶嶅埗璇ョ粨鏋滐細鍚姩鍚庣1娆′富鏈嶅姟鍣ㄤ娇鐢ㄦ瘡涓MEMORY琛紝瀹冮氱煡浠庢湇鍔″櫒闇瑕佸悜琛ㄥ啓鍏DELETE FROM璇彞鏉ユ竻绌轰簩杩涘埗鏃ュ織鐨勮〃銆傝缁嗕俊鎭弬瑙15.4鑺傦紝鈥淢EMORY (HEAP)瀛樺偍寮曟搸鈥銆
路 闄や簡鍏抽棴浠庢湇鍔″櫒(鑰屼笉浠呬粎鏄粠鏈嶅姟鍣ㄧ嚎绋) 涓存椂琛ㄩ兘琚鍒讹紝骞朵笖杩樻病鏈夊湪浠庢湇鍔″櫒涓婃墽琛岀殑鏇存柊鎵浣跨敤鐨勪复鏃惰〃涔熷凡缁忓鍒躲傚鏋滃叧闂粠鏈嶅姟鍣紝浠庢湇鍔″櫒閲嶅惎鍚庢洿鏂伴渶瑕佺殑閭d簺涓存椂琛ㄤ笉鍙啀鐢ㄣ備负浜嗛伩鍏嶈闂锛屼复鏃惰〃鎵撳紑鏃朵笉瑕佸叧闂粠鏈嶅姟鍣ㄣ傝屽簲閬电収涓嬮潰鐨勭▼搴忥細
1. 鎵цSTOP SLAVE璇彞銆
2. 浣跨敤SHOW STATUS妫鏌slave_open_temp_tables鍙橀噺鐨勫笺
3. 濡傛灉鍊间负0锛屼娇鐢mysqladmin shutdown鍛戒护鍏抽棴浠庢湇鍔″櫒銆
4. 濡傛灉鍊间笉涓0锛岀敤START SLAVE閲嶅惎浠庢湇鍔″櫒绾跨▼銆
5. 鍚庨潰鍐嶉噸澶嶈绋嬪簭鐪嬩笅娆$殑杩愭皵鏄惁濂戒竴浜涖
鎴戜滑璁″垝鍦ㄤ笉涔呯殑灏嗘潵淇璇ラ棶棰樸
路 鍙互寰堝畨鍏ㄥ湴杩炴帴鐢--logs-slave-updates閫夐」鎸囧畾鐨勫惊鐜富鏈嶅姟鍣/浠庢湇鍔″櫒鍏崇郴涓殑鏈嶅姟鍣ㄣ備絾璇锋敞鎰忚澶氳鍙ュ湪杩欑璁剧疆涓笉鑳芥纭伐浣滐紝闄ら潪浣犵殑瀹㈡埛浠g爜鍏虫敞浜嗘綔鍦ㄧ殑鍦ㄤ笉鍚岀殑鏈嶅姟鍣ㄤ笉鍚岄『搴忕殑鏇存柊涓彲鑳藉彂鐢熺殑杩欑被闂銆
杩欒鏄庝綘鍙互璞¤繖鏍峰垱寤鸿缃細
A -> B -> C -> A
鏈嶅姟鍣ID琚紪鐮佸湪浜岃繘鍒舵棩蹇椾簨浠朵腑锛屽洜姝ゆ湇鍔″櫒A鐭ラ亾浣曟椂鑷繁棣栨鍒涘缓瀹冭鍙栫殑浜嬩欢骞朵笖涓嶆墽琛屼簨浠(闄ら潪鐢--replicate-same-server-id閫夐」鍚姩浜嗘湇鍔″櫒A锛屽彧鍦ㄥ緢灏戞儏鍐典笅鏈夋剰涔)銆傝繖鏍凤紝娌℃湁鏃犻檺寰幆銆傚彧鏈夊琛ㄦ墽琛屾病鏈夊啿绐佺殑鏇存柊鏃惰绫诲惊鐜缃墠鑳藉伐浣溿傛崲鍙ヨ瘽璇达紝濡傛灉鍦A鍜C涓彃鍏ユ暟鎹紝缁濆涓嶅簲鍦A涓彃鍏ラ敭鍊煎彲鑳戒笌鎻掑叆鍒C涓殑琛岀浉鍐茬獊鐨勪竴琛屻傚鏋滄洿鏂扮殑椤哄簭寰堥噸瑕侊紝杩樹笉搴旀洿鏂颁袱涓湇鍔″櫒涓婄浉鍚岀殑琛屻
路 濡傛灉浠庢湇鍔″櫒涓婄殑鏌愪釜璇彞浜х敓閿欒锛屽垯浠庢湇鍔″櫒涓婄殑SQL绾跨▼缁堟锛屽苟涓斾粠鏈嶅姟鍣ㄥ悜閿欒鏃ュ織鍐欏叆涓鏉℃秷鎭傛鏃跺簲鎵嬪姩杩炴帴浠庢湇鍔″櫒锛屼慨澶嶈闂(渚嬪锛屼竴涓笉瀛樺湪鐨勮〃)锛岀劧鍚庤繍琛START SLAVE銆
路 鍙互寰堝畨鍏ㄥ湴鍏抽棴涓绘湇鍔″櫒骞跺湪浠ュ悗閲嶅惎銆傚鏋滄煇涓粠鏈嶅姟鍣ㄤ涪澶变笌涓绘湇鍔″櫒鐨勮繛鎺ワ紝浠庢湇鍔″櫒灏濊瘯绔嬪嵆閲嶆柊杩炴帴銆傚鏋滃け璐ワ紝浠庢湇鍔″櫒瀹氭湡閲嶈瘯銆(榛樿璁剧疆鏄瘡60绉掗噸璇曚竴娆°傚彲浠ラ氳繃--master-connect-retry閫夐」鏇存敼锛銆浠庢湇鍔″櫒涔熻兘澶熷鐞嗙綉缁滆繛鎺ヤ腑鏂備絾鏄紝鍙湁浠庢湇鍔″櫒瓒呰繃slave_net_timeout绉掓病鏈変粠涓绘湇鍔″櫒鏀跺埌鏁版嵁鎵嶉氱煡缃戠粶涓柇銆傚鏋滀腑鏂椂闂寸煭锛屽彲浠ラ檷浣slave_net_timeout銆傚弬瑙5.3.3鑺傦紝鈥滄湇鍔″櫒绯荤粺鍙橀噺鈥銆
路 鍏抽棴浠庢湇鍔″櫒锛堝噣鍏抽棴锛変篃寰堝畨鍏紝鍥犱负瀹冨彲浠ヨ窡韪畠绂诲紑鐨勫湴鐐广備笉绾噣鐨勫叧闂搷浣滀細浜х敓闂锛岀壒鍒槸绯荤粺鍏抽棴鍓嶇‖鐩樼紦瀛樻湭鍒锋柊鍒扮‖鐩樹笂鏃躲傚鏋滄湁涓嶉棿鏂數婧愶紝鍙互澶уぇ鎻愰珮绯荤粺瀹归敊鑳藉姏銆備笉绾噣鐨勫叧闂富鏈嶅姟鍣ㄤ細閫犳垚涓绘湇鍔″櫒涓婄殑琛ㄥ拰浜岃繘鍒舵棩蹇楀唴瀹逛箣闂寸殑涓嶄竴鑷存э紱鍦ㄤ富鏈嶅姟鍣ㄤ笂浣跨敤InnoDB琛ㄥ拰--innodb-safe-binlog閫夐」鍙互閬垮厤璇ラ棶棰樸傚弬瑙5.11.3鑺傦紝鈥滀簩杩涘埗鏃ュ織鈥銆(娉ㄩ噴锛MySQL 5.1涓笉闇瑕--innodb-safe-binlog锛岀敱浜庡紩鍏ヤ簡XA浜嬪姟鏀寔宸茬粡浣滃簾浜嗭級銆
路 鐢变簬MyISAM琛ㄧ殑闈炰簨鍔″睘鎬э紝鍙互鏈変竴涓鍙ュ彧鏄洿鏂颁竴涓〃骞惰繑鍥為敊璇唬鐮併備緥濡傦紝澶氳鎻掑叆鏃舵湁涓涓瓒呰繃閿肩害鏉燂紝鎴栬呭鏋滈暱鐨勬洿鏂拌鍙ユ洿鏂伴儴鍒嗚鍚庤鏉鎺変簡銆傚鏋滃彂鐢熷湪涓绘湇鍔″櫒涓婏紝闄ら潪閿欒浠g爜鍚堟硶骞朵笖璇彞鎵ц浜х敓鐩稿悓鐨勯敊璇唬鐮侊紝浠庢湇鍔″櫒绾跨▼灏嗛鍑哄苟绛夊緟鏁版嵁搴撶鐞嗗憳鍐冲畾濡備綍鍋氥傚鏋滆閿欒浠g爜楠岃瘉琛屼负涓嶇悊鎯筹紝鍙互鐢--slave-skip-errors閫夐」鎺╃洊(蹇借)閮ㄥ垎鎴栧叏閮ㄩ敊璇
路 濡傛灉浠BEGIN/COMMIT绯诲垪鐨勯潪浜嬪姟琛ㄦ洿鏂颁簨鍔¤〃锛屽鏋滄彁浜や簨鍔″墠鏇存柊闈炰簨鍔¤〃锛屽浜岃繘鍒舵棩蹇楃殑鏇存柊鍙兘浼氫笉鍚屾銆傝繖鏄洜涓轰簨鍔℃彁浜ゅ悗鎵嶈鍐欏叆浜岃繘鍒舵棩蹇椼
路 浜嬪姟娣峰悎鏇存柊浜嬪姟琛ㄥ拰闈炰簨鍔¤〃鏃讹紝浜岃繘鍒舵棩蹇椾腑璇彞鐨勯『搴忔槸姝g‘鐨勶紝鍗充娇鍦ROLLBACK鏃讹紝鎵鏈夐渶瑕佺殑璇彞涔熶細鍐欏叆浜岃繘鍒舵棩蹇椼備絾鏄鏋滃湪绗1涓繛鎺ョ殑浜嬪姟瀹屾垚鍓嶏紝绗2涓繛鎺ユ洿鏂伴潪浜嬪姟琛紝璇彞璁板叆鏃ュ織鏃朵細鍑虹幇椤哄簭閿欒锛屽洜涓虹2涓繛鎺ョ殑鏇存柊鎵ц瀹屽悗绔嬪嵆鍐欏叆鏃ュ織锛岃屼笉绠$1涓繛鎺ユ墽琛岀殑浜嬪姟鐨勭姸鎬佸浣曘
鍦ㄤ富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒涓婏紝鍧囧繀椤讳娇鐢server-id閫夐」涓烘瘡涓湇鍔″櫒寤虹珛鍞竴鐨勫鍒ID銆備綘搴斾负姣忎釜涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄤ粠1鍒232鈥1鐨勮寖鍥存寫涓涓敮涓鐨勬鏁存暟銆備緥濡傦細server-id=3
鐢ㄤ簬涓绘湇鍔″櫒涓婃帶鍒朵簩杩涘埗鏃ュ織鐨勯夐」鐨勭浉鍏虫弿杩拌5.11.3鑺傦紝鈥滀簩杩涘埗鏃ュ織鈥銆
涓嬭〃鎻忚堪浜嗗彲浠ョ敤浜MySQL 5.1浠庡睘澶嶅埗鏈嶅姟鍣ㄧ殑閫夐」銆備綘鍙互鍦ㄥ懡浠よ涓垨鍦ㄩ夐」鏂囦欢涓寚瀹氳繖浜涢夐」銆
鏌愪簺浠庢湇鍔″櫒澶嶅埗閫夐」鎸夌壒娈婃柟寮忓鐞嗭紝褰撲粠鏈嶅姟鍣ㄥ惎鍔ㄦ椂濡傛灉master.info鏂囦欢瀛樺湪骞朵笖鍖呭惈閫夐」鍊硷紝瀹冧滑灏嗚蹇界暐鎺夈備笅闈㈢殑閫夐」鎸夎繖绉嶆柟寮忓鐞嗭細
路 --master-host
路 --master-user
路 --master-password
路 --master-port
路 --master-connect-retry
路 --master-ssl
路 --master-ssl-ca
路 --master-ssl-capath
路 --master-ssl-cert
路 --master-ssl-cipher
路 --master-ssl-key
5.1涓殑master.info鏂囦欢鏍煎紡鍖呮嫭瀵瑰簲SSL閫夐」鐨勫笺傚苟涓旓紝鏂囦欢鏍煎紡鍖呮嫭鏂囦欢涓殑琛屽彿锛屽鍚岀1琛屻傚鏋滀綘灏嗘棫鐨勬湇鍔″櫒鍗囩骇鍒版柊鐨勭増鏈紝鏂版湇鍔″櫒鍚姩鏃惰嚜鍔ㄥ皢smaster.info鏂囦欢鍗囩骇鍒版柊鐨勬牸寮忋傜劧鑰岋紝濡傛灉灏嗘柊鏈嶅姟鍣ㄩ檷绾у埌鏃х殑鐗堟湰锛岄娆″惎鍔ㄦ棫鐗堟湰鐨勬湇鍔″櫒涔嬪墠搴斿垹闄ょ1琛屻
濡傛灉浠庢湇鍔″櫒鍚姩鏃master.info鏂囦欢涓嶅瓨鍦紝閫夐」閲囩敤閫夐」鏂囦欢鎴栧懡浠よ涓寚瀹氱殑鍊笺傞娆″皢鏈嶅姟鍣ㄤ綔涓轰粠鏈嶅姟鍣ㄥ惎鍔ㄦ椂锛屾垨鑰呭凡缁忚繍琛RESET SLAVE鐒跺悗宸茬粡鍏抽棴骞堕噸鍚粠鏈嶅姟鍣ㄦ椂浼氬彂鐢熴
濡傛灉浠庢湇鍔″櫒鍚姩鏃master.info鏂囦欢瀛樺湪锛屾湇鍔″櫒蹇界暐閭d簺閫夐」銆備娇鐢master.info鏂囦欢涓彂鐜扮殑鍊笺
濡傛灉浣犱娇鐢ㄤ笌master.info鏂囦欢涓浉瀵瑰簲鐨勫惎鍔ㄩ夐」鐨勪笉鍚岀殑鍊奸噸鍚粠鏈嶅姟鍣紝鍚姩閫夐」鐨勪笉鍚岀殑鍊间笉浼氱敓鏁堬紝鍥犱负鏈嶅姟鍣ㄧ户缁娇鐢master.info鏂囦欢銆傝鎯充娇鐢ㄥ惎鍔ㄩ夐」鐨勪笉鍚岀殑鍊硷紝蹇呴』鍒犻櫎master.info鏂囦欢骞堕噸鍚粠鏈嶅姟鍣紝鎴(鏈濂芥槸)鍦ㄤ粠鏈嶅姟鍣ㄨ繍琛屾椂浣跨敤CHANGE MASTER TO璇彞閲嶆柊璁剧疆鍊笺
鍋囧畾鍦my.cnf鏂囦欢涓寚瀹氳閫夐」锛
[mysqld]
master-host=some_host
绗1娆′綔涓哄鍒朵粠鏈嶅姟鍣ㄥ惎鍔ㄦ湇鍔″櫒鏃讹紝浠my.cnf鏂囦欢璇诲彇骞朵娇鐢ㄩ夐」銆傛湇鍔″櫒鐒跺悗璁板綍master.info鏂囦欢涓殑鍊笺備笅娆″惎鍔ㄦ湇鍔″櫒鏃讹紝瀹冨彧浠庢湇鍔″櫒鐨master.info鏂囦欢璇诲彇涓绘湇鍔″櫒涓绘満鍊煎苟蹇界暐閫夐」鏂囦欢涓殑鍊笺傚鏋滀綘淇敼my.cnf鏂囦欢涓some_other_host鎸囧畾鍏跺畠涓绘湇鍔″櫒涓绘満锛屾洿鏀逛粛鐒朵笉浼氱敓鏁堛備綘搴斾娇鐢CHANGE MASTER TO銆
鍥犱负鏈嶅姟鍣ㄧ粰宸叉湁master.info鏂囦欢鐨勪紭鍏堟潈楂樹簬鍒氬垰鎻忚堪鐨勫惎鍔ㄩ夐」锛屽彲浠ラ夋嫨涓嶄娇鐢ㄨ繖浜涘肩殑鍚姩閫夐」锛岃屾槸浣跨敤CHANGE MASTER TO璇彞鏉ユ寚瀹氥傚弬瑙13.6.2.1鑺傦紝鈥淐HANGE MASTER TO璇硶鈥銆
涓嬮潰鐨勪緥瀛愭樉绀轰簡濡備綍鏇村箍娉涘湴浣跨敤鍚姩閫夐」鏉ラ厤缃粠鏈嶅姟鍣細
[mysqld]
server-id=2
master-host=db-master.mycompany.com
master-port=3306
master-user=pertinax
master-password=freitag
master-connect-retry=60
report-host=db-slave.mycompany.com
涓嬮潰鍒楀嚭浜嗘帶鍒跺鍒剁殑鍚姩閫夐」锛氳澶氶夐」鍙互鍦ㄦ湇鍔″櫒杩愯鏃堕氳繃CHANGE MASTER TO璇彞閲嶆柊杩涜璁剧疆銆傚叾瀹冮夐」锛屼緥濡--replicate-*閫夐」锛屽彧鑳藉湪浠庢湇鍔″櫒鍚姩鏃惰繘琛岃缃傛垜浠鍒掑皢淇璇ラ棶棰樸
路 --logs-slave-updates
閫氬父鎯呭喌锛屼粠鏈嶅姟鍣ㄤ粠涓绘湇鍔″櫒鎺ユ敹鍒扮殑鏇存柊涓嶈鍏ュ畠鐨勪簩杩涘埗鏃ュ織銆傝閫夐」鍛婅瘔浠庢湇鍔″櫒灏嗗叾SQL绾跨▼鎵ц鐨勬洿鏂拌鍏ュ埌浠庢湇鍔″櫒鑷繁鐨勪簩杩涘埗鏃ュ織銆備负浜嗕娇璇ラ夐」鐢熸晥锛岃繕蹇呴』鐢--logs-bin閫夐」鍚姩浠庢湇鍔″櫒浠ュ惎鐢ㄤ簩杩涘埗鏃ュ織銆傚鏋滄兂瑕佸簲鐢ㄩ摼寮忓鍒舵湇鍔″櫒锛屽簲浣跨敤--logs-slave-updates銆備緥濡傦紝鍙兘浣犳兂瑕佽繖鏍疯缃細
A -> B -> C
涔熷氨鏄锛A涓轰粠鏈嶅姟鍣B鐨勪富鏈嶅姟鍣紝B涓轰粠鏈嶅姟鍣C鐨勪富鏈嶅姟鍣ㄣ備负浜嗚兘宸ヤ綔锛B蹇呴』鏃负涓绘湇鍔″櫒鍙堜负浠庢湇鍔″櫒銆備綘蹇呴』鐢--logs-bin鍚姩A鍜B浠ュ惎鐢ㄤ簩杩涘埗鏃ュ織锛屽苟涓旂敤--logs-slave-updates閫夐」鍚姩B銆
路 --logs-warnings
璁╀粠鏈嶅姟鍣ㄥ悜閿欒鏃ュ織杈撳嚭鏇磋缁嗙殑鍏充簬鍏舵墽琛屾搷浣滅殑娑堟伅銆備緥濡傦紝閫氱煡浣犵綉缁/杩炴帴澶辫触鍚庡凡缁忔垚鍔熼噸鏂拌繛鎺ワ紝骞堕氱煡浣犳瘡涓粠鏈嶅姟鍣ㄧ嚎绋嬪浣曞惎鍔ㄣ傝閫夐」榛樿鍚敤锛涜鎯崇鐢ㄥ畠锛屼娇鐢--skip-logs-warnings銆傛斁寮冪殑杩炴帴涓嶈鍏ラ敊璇棩蹇楋紝闄ら潪璇ュ煎ぇ浜1銆
璇锋敞鎰忚閫夐」鐨勬晥鏋滀笉闄愪簬澶嶅埗銆傚彲浠ュ鏈嶅姟鍣ㄧ殑閮ㄥ垎鍔ㄤ綔浜х敓璀﹀憡銆
路 --master-connect-retry=seconds
鍦ㄤ富鏈嶅姟鍣ㄥ畷鏈烘垨杩炴帴涓㈠け鐨勬儏鍐典笅锛屼粠鏈嶅姟鍣ㄧ嚎绋嬮噸鏂板皾璇曡繛鎺ヤ富鏈嶅姟鍣ㄤ箣鍓嶇潯鐪犵殑绉掓暟銆傚鏋滀富鏈嶅姟鍣.info鏂囦欢涓殑鍊煎彲浠ヨ鍙栧垯浼樺厛浣跨敤銆傚鏋滄湭璁剧疆锛 榛樿鍊间负60銆
路 --master-host=host
涓诲鍒舵湇鍔″櫒鐨勪富鏈哄悕鎴IP鍦板潃銆傚鏋滄病鏈夌粰鍑鸿閫夐」锛屼粠鏈嶅姟鍣ㄧ嚎绋嬩笉鍚姩銆傚鏋滀富鏈嶅姟鍣.info鏂囦欢涓殑鍊煎彲浠ヨ鍙栧垯浼樺厛浣跨敤銆
路 --master-info-file=file_name
浠庢湇鍔″櫒鐢ㄤ簬璁板綍涓绘湇鍔″櫒鐨勭浉鍏充俊鎭娇鐢ㄧ殑鏂囦欢鍚嶃傞粯璁ゅ悕涓烘暟鎹洰褰曚腑鐨mysql.info銆
路 --master-password=password
杩炴帴涓绘湇鍔″櫒鏃朵粠鏈嶅姟鍣ㄧ嚎绋嬬敤浜庨壌瀹氱殑璐︽埛鐨勫瘑鐮併傚鏋滀富鏈嶅姟鍣.info鏂囦欢涓殑鍊煎彲浠ヨ鍙栧垯浼樺厛浣跨敤銆傚鏋滄湭璁剧疆锛屽亣瀹 瀵嗙爜涓虹┖銆
路 --master-port=port_number
涓绘湇鍔″櫒姝e抚鍚殑TCP/IP绔彛鍙枫傚鏋滀富鏈嶅姟鍣.info鏂囦欢涓殑鍊煎彲浠ヨ鍙栧垯浼樺厛浣跨敤銆傚鏋滄湭璁剧疆锛屽亣瀹氫娇鐢ㄧ紪璇戣繘鏉ョ殑璁惧畾鍊笺傚鏋滀綘鏈浘鐢configure閫夐」杩涜淇敼锛岃鍊煎簲涓3306銆
路 --master-ssl銆--master-ssl-ca=file_name銆--master-ssl-capath=directory_name銆--master-ssl-cert=file_name銆--master-ssl-cipher=cipher_list銆--master-ssl-key=file_name
杩欎簺閫夐」鐢ㄤ簬浣跨敤SSL璁剧疆涓庝富鏈嶅姟鍣ㄧ殑瀹夊叏澶嶅埗杩炴帴銆傚畠浠殑鍚箟涓5.8.7.6鑺傦紝鈥淪SL鍛戒护琛岄夐」鈥涓弿杩扮殑鐩稿簲鈥ssl銆--ssl-ca銆--ssl-capath銆--ssl-cert銆--ssl-cipher銆--ssl-key閫夐」鐩稿悓銆傚鏋滀富鏈嶅姟鍣.info鏂囦欢涓殑鍊煎彲浠ヨ鍙栧垯浼樺厛浣跨敤銆
路 --master-user=username
杩炴帴涓绘湇鍔″櫒鏃朵粠鏈嶅姟鍣ㄧ嚎绋嬬敤浜庨壌瀹氱殑璐︽埛鐨勭敤鎴峰悕銆傝璐︽埛蹇呴』鍏锋湁REPLICATION SLAVE鏉冮檺銆傚鏋滀富鏈嶅姟鍣.info鏂囦欢涓殑鍊煎彲浠ヨ鍙栧垯浼樺厛浣跨敤銆傚鏋滄湭璁剧疆涓绘湇鍔″櫒鐢ㄦ埛锛屽亣瀹氫娇鐢ㄧ敤鎴test銆
路 --max-relay-logs-size=size
鑷姩寰幆涓户鏃ュ織銆傚弬瑙5.3.3鑺傦紝鈥滄湇鍔″櫒绯荤粺鍙橀噺鈥銆
路 --read-only
璇ラ夐」璁╀粠鏈嶅姟鍣ㄥ彧鍏佽鏉ヨ嚜浠庢湇鍔″櫒绾跨▼鎴栧叿鏈SUPER鏉冮檺鐨勭敤鎴风殑鏇存柊銆傚彲浠ョ‘淇濅粠鏈嶅姟鍣ㄤ笉鎺ュ彈鏉ヨ嚜瀹㈡埛鐨勬洿鏂般
路 --relay-log=file_name
涓户鏃ュ織鍚嶃傞粯璁ゅ悕涓host_name-relay-bin.nnnnnn锛屽叾涓host_name鏄粠鏈嶅姟鍣ㄤ富鏈虹殑鍚嶏紝nnnnnn琛ㄧず涓户鏃ュ織鍦ㄧ紪鍙峰簭鍒椾腑鍒涘缓銆傚鏋滀腑缁ф棩蹇楀お澶(骞朵笖浣犱笉鎯抽檷浣max_relay_log_size)锛岄渶瑕佸皢瀹冧滑鏀惧埌鏁版嵁鐩綍涔嬪鐨勫叾瀹冨湴鏂癸紝鎴栬呭鏋滄兂瑕侀氳繃纭洏涔嬮棿鐨勮礋杞藉潎琛℃彁楂橀熷害锛屽彲浠ユ寚瀹氶夐」鍒涘缓涓庝富鏈哄悕鏃犲叧鐨勪腑缁ф棩蹇楀悕銆
路 --relay-log-index=file_name
涓户鏃ュ織绱㈠紩鏂囦欢浣跨敤鐨勪綅缃拰鍚嶇О銆傞粯璁ゅ悕涓host_name-relay-bin.index锛屽叾涓host_name涓轰粠鏈嶅姟鍣ㄥ悕銆
路 --relay-log-info-file=file_name
浠庢湇鍔″櫒鐢ㄤ簬璁板綍涓户鏃ュ織鐩稿叧淇℃伅鐨勬枃浠跺悕銆傞粯璁ゅ悕涓烘暟鎹洰褰曚腑鐨relay-log.info銆
路 --relay-log-purge={0|1}
绂佺敤鎴栧惎鐢ㄤ笉鍐嶉渶瑕佷腑缁ф棩蹇楁椂鏄惁鑷姩娓呯┖瀹冧滑銆傞粯璁ゅ间负1(鍚敤)銆傝繖鏄竴涓叏灞鍙橀噺锛屽彲浠ョ敤SET GLOBAL Relay_log_purge鍔ㄦ佹洿鏀广
路 --relay-log-space-limit=size
闄愬埗鎵鏈変腑缁ф棩蹇楀湪浠庢湇鍔″櫒涓婃墍鍗犵敤绌洪棿鐨勪笂闄(0鍊艰〃绀衡鏃犻檺鍒鈥)銆備粠鏈嶅姟鍣ㄤ富鏈虹‖鐩樼┖闂存湁闄愭椂寰堟湁鐢ㄣ傝揪鍒伴檺鍒跺悗锛I/O绾跨▼鍋滄浠庝富鏈嶅姟鍣ㄨ鍙栦簩杩涘埗鏃ュ織涓殑浜嬩欢锛岀洿鍒SQL绾跨▼琚棴閿佸苟涓斿垹闄や簡閮ㄥ垎鏈娇鐢ㄧ殑涓户鏃ュ織銆傝娉ㄦ剰璇ラ檺鍒跺苟涓嶆槸缁濆鐨勶細鏈夊彲鑳SQL绾跨▼鍒犻櫎涓户鏃ュ織鍓嶉渶瑕佹洿澶氱殑浜嬩欢銆傚湪杩欑鎯呭喌涓嬶紝I/O绾跨▼灏嗚秴杩囬檺鍒讹紝鐩村埌SQL绾跨▼鍙互鍒犻櫎閮ㄥ垎涓户鏃ュ織銆(涓嶈繖鏍峰仛灏嗕細閫犳垚姝婚攣锛銆--relay-log-space-limit鐨勫间笉鑳藉皬浜--max-relay-logs-size(鎴栧鏋--max-relay-logs-size涓0锛岄--max-binlog-size)鐨勫肩殑涓ゅ嶃傚湪杩欑鎯呭喌涓嬶紝鏈夊彲鑳I/O绾跨▼绛夊緟閲婃斁绌洪棿锛屽洜涓鸿秴杩囦簡--relay-log-space-limit锛屼絾SQL绾跨▼娌℃湁瑕佹竻绌虹殑涓户鏃ュ織锛屼笉鑳芥弧瓒I/O绾跨▼鐨勯渶姹傘傚己鍒I/O绾跨▼涓存椂蹇借--relay-log-space-limit銆
路 --replicate-do-db=db_name
鍛婅瘔浠庢湇鍔″櫒闄愬埗榛樿鏁版嵁搴(鐢USE鎵閫夋嫨)涓db_name鐨勮鍙ョ殑澶嶅埗銆傝鎸囧畾澶氫釜鏁版嵁搴擄紝搴斿娆′娇鐢ㄨ閫夐」锛屾瘡涓暟鎹簱浣跨敤涓娆°傝娉ㄦ剰涓嶅鍒惰法鏁版嵁搴撶殑璇彞锛屼緥濡傚綋宸茬粡閫夋嫨浜嗗叾瀹冩暟鎹簱鎴栨病鏈夋暟鎹簱鏃舵墽琛UPDATE some_db.some_table SET foo='bar'銆傚鏋滈渶瑕佽法鏁版嵁搴撹繘琛屾洿鏂帮紝浣跨敤--replicate-wild-do-table=db_name.%銆傝璇诲彇璇ラ夐」鍒楄〃鍚庨潰鐨勬敞鎰忎簨椤广
涓涓笉鑳芥寜鐓ф湡鏈涘伐浣滅殑渚嬪瓙锛氬鏋滅敤--replicate-do-db=sales鍚姩浠庢湇鍔″櫒锛屽苟涓斿湪涓绘湇鍔″櫒涓婃墽琛屼笅闈㈢殑璇彞锛UPDATE璇彞涓嶄細澶嶅埗锛
USE prices;
UPDATE sales.january SET amount=amount+1000;
濡傛灉闇瑕佽法鏁版嵁搴撹繘琛屾洿鏂帮紝搴斾娇鐢--replicate-wild-do-table=db_name.%銆
鈥鍙鏌ラ粯璁ゆ暟鎹簱鈥濊涓虹殑涓昏鍘熷洜鏄鍙ヨ嚜宸卞緢闅剧煡閬撳畠鏄惁搴旇澶嶅埗(渚嬪锛屽鏋滀綘姝d娇鐢ㄨ法鏁版嵁搴撶殑澶氳〃DELETE璇彞鎴栧琛UPDATE璇彞)銆傚鏋滀笉闇瑕侊紝鍙鏌ラ粯璁ゆ暟鎹簱姣旀鏌ユ墍鏈夋暟鎹簱瑕佸揩寰楀銆
路 --replicate-do-table=db_name.tbl_name
鍛婅瘔浠庢湇鍔″櫒绾跨▼闄愬埗瀵规寚瀹氳〃鐨勫鍒躲傝鎸囧畾澶氫釜琛紝搴斿娆′娇鐢ㄨ閫夐」锛屾瘡涓〃浣跨敤涓娆°傚悓--replicate-do-db瀵规瘮锛屽厑璁歌法鏁版嵁搴撴洿鏂般傝璇诲彇璇ラ夐」鍒楄〃鍚庨潰鐨勬敞鎰忎簨椤广
路 --replicate-ignore-db=db_name
鍛婅瘔浠庢湇鍔″櫒涓嶈澶嶅埗榛樿鏁版嵁搴(鐢USE鎵閫夋嫨)涓db_name鐨勮鍙ャ傝鎯冲拷鐣ュ涓暟鎹簱锛屽簲澶氭浣跨敤璇ラ夐」锛屾瘡涓暟鎹簱浣跨敤涓娆°傚鏋滄杩涜璺ㄦ暟鎹簱鏇存柊骞朵笖涓嶆兂澶嶅埗杩欎簺鏇存柊锛屼笉搴斾娇鐢ㄨ閫夐」銆傝璇诲彇璇ラ夐」鍚庨潰鐨勬敞鎰忎簨椤广
涓涓笉鑳芥寜鐓ф湡鏈涘伐浣滅殑渚嬪锛氬鏋滅敤--replicate-ignore-db=sales鍚姩浠庢湇鍔″櫒锛屽苟涓斿湪涓绘湇鍔″櫒涓婃墽琛屼笅闈㈢殑璇彞锛UPDATE璇彞涓嶄細澶嶅埗锛
路 USE prices;
路 UPDATE sales.january SET amount=amount+1000;
濡傛灉闇瑕佽法鏁版嵁搴撴洿鏂帮紝搴斾娇鐢--replicate-wild-ignore-table=db_name.%銆
路 --replicate-ignore-table=db_name.tbl_name
鍛婅瘔浠庢湇鍔″櫒绾跨▼涓嶈澶嶅埗鏇存柊鎸囧畾琛ㄧ殑浠讳綍璇彞(鍗充娇璇ヨ鍙ュ彲鑳芥洿鏂板叾瀹冪殑琛)銆傝鎯冲拷鐣ュ涓〃锛屽簲澶氭浣跨敤璇ラ夐」锛屾瘡涓〃浣跨敤涓娆°傚悓--replicate-ignore-db瀵规瘮锛岃閫夐」鍙互璺ㄦ暟鎹簱杩涜鏇存柊銆傝璇诲彇璇ラ夐」鍚庨潰鐨勬敞鎰忎簨椤广
路 --replicate-wild-do-table=db_name.tbl_name
鍛婅瘔浠庢湇鍔″櫒绾跨▼闄愬埗澶嶅埗鏇存柊鐨勮〃鍖归厤鎸囧畾鐨勬暟鎹簱鍜岃〃鍚嶆ā寮忕殑璇彞銆傛ā寮忓彲浠ュ寘鍚%鈥欏拰鈥_鈥欓氶厤绗︼紝涓LIKE妯″紡鍖归厤鎿嶄綔绗﹀叿鏈夌浉鍚岀殑鍚箟銆傝鎸囧畾澶氫釜琛紝搴斿娆′娇鐢ㄨ閫夐」锛屾瘡涓〃浣跨敤涓娆°傝閫夐」鍙互璺ㄦ暟鎹簱杩涜鏇存柊銆傝璇诲彇璇ラ夐」鍚庨潰鐨勬敞鎰忎簨椤广
渚嬪锛--replicate-wild-do-table=foo%.bar%鍙鍒舵暟鎹簱鍚嶄互foo寮濮嬪拰琛ㄥ悕浠bar寮濮嬬殑琛ㄧ殑鏇存柊銆
濡傛灉琛ㄥ悕妯″紡涓%锛屽彲鍖归厤浠讳綍琛ㄥ悕锛岄夐」涔熼傚悎鏁版嵁搴撶骇璇彞(CREATE DATABASE銆DROP DATABASE鍜ALTER DATABASE)銆備緥濡傦紝濡傛灉浣跨敤--replicate-wild-do-table=foo%.%锛屽鏋滄暟鎹簱鍚嶅尮閰嶆ā寮foo%锛屽垯澶嶅埗鏁版嵁搴撶骇璇彞銆
瑕佹兂鍦ㄦ暟鎹簱鎴栬〃鍚嶆ā寮忎腑鍖呮嫭閫氶厤绗︼紝鐢ㄥ弽鏂滅嚎瀵瑰畠浠繘琛岃浆涔夈備緥濡傦紝瑕佸鍒跺悕涓my_own%db鐨勬暟鎹簱鐨勬墍鏈夎〃锛屼絾涓嶅鍒my1ownAABCdb鏁版嵁搴撶殑琛紝搴旇繖鏍疯浆涔夆_鈥欏拰鈥%鈥欏瓧绗︼細--replicate-wild-do-table=my\_own\%db銆傚鏋滃湪鍛戒护琛屼腑浣跨敤閫夐」锛屽彲鑳介渶瑕佸弻鍙嶆枩绾挎垨灏嗛夐」鍊煎紩璧锋潵锛屽彇鍐充簬鍛戒护瑙i噴绗︺備緥濡傦紝鐢bash澶栧3鍒欓渶瑕佽緭鍏--replicate-wild-do-table=my\\_own\\%db銆
路 --replicate-wild-ignore-table=db_name.tbl_name
鍛婅瘔浠庢湇鍔″櫒绾跨▼涓嶈澶嶅埗琛ㄥ尮閰嶇粰鍑虹殑閫氶厤绗︽ā寮忕殑璇彞銆傝鎯冲拷鐣ュ涓〃锛屽簲澶氭浣跨敤璇ラ夐」锛屾瘡涓〃浣跨敤涓娆°傝閫夐」鍙互璺ㄦ暟鎹簱杩涜鏇存柊銆傝璇诲彇璇ラ夐」鍚庨潰鐨勬敞鎰忎簨椤广
渚嬪锛--replicate-wild-ignore-table=foo%.bar%涓嶅鍒舵暟鎹簱鍚嶄互foo寮濮嬪拰琛ㄥ悕浠bar寮濮嬬殑琛ㄧ殑鏇存柊銆
鍏充簬鍖归厤濡備綍宸ヤ綔鐨勪俊鎭紝鍙傝--replicate-wild-do-table閫夐」鐨勬弿杩般傚湪閫夐」鍊间腑鍖呮嫭閫氶厤绗︾殑瑙勫垯涓--replicate-wild-ignore-table鐩稿悓銆
路 --replicate-rewrite-db=from_name->to_name
鍛婅瘔浠庢湇鍔″櫒濡傛灉榛樿鏁版嵁搴(鐢USE鎵閫夋嫨)涓轰富鏈嶅姟鍣ㄤ笂鐨from_name锛屽垯缈昏瘧涓to_name銆傚彧褰卞搷鍚湁琛ㄧ殑璇彞(涓嶆槸绫讳技CREATE DATABASE銆DROP DATABASE鍜ALTER DATABASE鐨勮鍙)锛屽苟涓斿彧鏈from_name涓轰富鏈嶅姟鍣ㄤ笂鐨勯粯璁ゆ暟鎹簱鏃躲傝閫夐」涓嶅彲浠ヨ法鏁版嵁搴撹繘琛屾洿鏂般傝娉ㄦ剰鍦ㄦ祴璇--replicate-*瑙勫垯涔嬪墠缈昏瘧鏁版嵁搴撳悕銆
濡傛灉鍦ㄥ懡浠よ涓娇鐢ㄨ閫夐」锛 鈥>鈥欏瓧绗︿笓鐢ㄤ簬鍛戒护瑙i噴绗︼紝搴斿皢閫夐」鍊煎紩璧锋潵銆備緥濡傦細
shell> mysqld --replicate-rewrite-db="olddb->newdb"
路 --replicate-same-server-id
灏嗙敤浜庝粠鏈嶅姟鍣ㄤ笂銆傞氬父鍙互榛樿璁剧疆涓0浠ラ槻姝㈠惊鐜鍒朵腑鐨勬棤闄愬惊鐜傚鏋滆缃负1锛岃浠庢湇鍔″櫒涓嶈烦杩囨湁鑷繁鐨勬湇鍔″櫒id鐨勪簨浠讹紱閫氬父鍙湪鏈夊緢灏戦厤缃殑鎯呭喌涓嬫湁鐢ㄣ傚鏋滀娇鐢--logs-slave-updates涓嶈兘璁剧疆涓1銆傝娉ㄦ剰榛樿鎯呭喌涓嬪鏋滄湁浠庢湇鍔″櫒鐨id锛屾湇鍔″櫒I/O绾跨▼涓嶅皢浜岃繘鍒舵棩蹇椾簨浠跺啓鍏ヤ腑缁ф棩蹇(璇ヤ紭鍖栧彲浠ュ府鍔╄妭鐪佺‖鐩樼殑浣跨敤)銆傚洜姝ゅ鏋滄兂瑕佷娇鐢--replicate-same-server-id锛岃浠庢湇鍔″櫒璇诲彇鑷繁鐨SQL绾跨▼鎵ц鐨勪簨浠跺墠锛屼竴瀹氳鐢ㄨ閫夐」鍚姩銆
路 --report-host=slave_name
浠庢湇鍔″櫒娉ㄥ唽杩囩▼涓姤鍛婄粰涓绘湇鍔″櫒鐨勪富鏈哄悕鎴IP鍦板潃銆傝鍊煎嚭鐜板湪涓绘湇鍔″櫒涓SHOW SLAVE HOSTS鐨勮緭鍑轰腑銆傚鏋滀笉鎯宠浠庢湇鍔″櫒鑷繁鍦ㄤ富鏈嶅姟鍣ㄤ笂娉ㄥ唽锛屽垯涓嶈缃鍊笺傝娉ㄦ剰浠庢湇鍔″櫒杩炴帴鍚庯紝涓绘湇鍔″櫒浠呬粎浠TCP/IP濂楁帴瀛楄鍙栦粠鏈嶅姟鍣ㄧ殑IP鍙锋槸涓嶅鐨勩傜敱浜 NAT鍜屽叾瀹冭矾鐢遍棶棰橈紝IP鍙兘涓嶅悎娉曪紝涓嶈兘浠庝富鏈嶅姟鍣ㄦ垨鍏跺畠涓绘満杩炴帴浠庢湇鍔″櫒銆
路 --report-port=slave_port
杩炴帴浠庢湇鍔″櫒鐨TCP/IP绔彛鍙凤紝浠庢湇鍔″櫒娉ㄥ唽杩囩▼涓姤鍛婄粰涓绘湇鍔″櫒銆傚彧鏈変粠鏈嶅姟鍣ㄥ抚鍚潪榛樿绔彛鎴栧鏋滄湁涓涓壒娈婇毀閬撲緵涓绘湇鍔″櫒鎴栧叾瀹冨鎴疯繛鎺ヤ粠鏈嶅姟鍣ㄦ椂鎵嶈缃畠銆傚鏋滀綘涓嶇‘瀹氾紝涓嶈缃閫夐」銆
路 --skip-slave-start
鍛婅瘔浠庢湇鍔″櫒褰撴湇鍔″櫒鍚姩鏃朵笉鍚姩浠庢湇鍔″櫒绾跨▼銆備娇鐢START SLAVE璇彞鍦ㄤ互鍚庡惎鍔ㄧ嚎绋嬨
路 --slave_compressed_protocol={0|1}
濡傛灉璇ラ夐」璁剧疆涓 1锛屽鏋滀粠鏈嶅姟鍣ㄥ拰涓绘湇鍔″櫒鍧囨敮鎸侊紝浣跨敤鍘嬬缉浠庢湇鍔″櫒/涓绘湇鍔″櫒鍗忚銆
路 --slave-load-tmpdir=file_name
浠庢湇鍔″櫒鍒涘缓涓存椂鏂囦欢鐨勭洰褰曞悕銆傝閫夐」榛樿绛変簬tmpdir绯荤粺鍙橀噺鐨勫笺傚綋浠庢湇鍔″櫒SQL绾跨▼澶嶅埗LOAD DATA INFILE璇彞鏃讹紝浠庝腑缁ф棩蹇楀皢寰呰杞界殑鏂囦欢鎻愬彇鍒颁复鏃舵枃浠讹紝鐒跺悗灏嗚繖浜涙枃浠惰鍏ュ埌琛ㄤ腑銆傚鏋滆杞藉埌涓绘湇鍔″櫒涓婄殑鏂囦欢寰堝ぇ锛屼粠鏈嶅姟鍣ㄤ笂鐨勪复鏃舵枃浠朵篃寰堝ぇ銆傚洜姝わ紝寤鸿浣跨敤璇ラ夐」鍛婅瘔浠庢湇鍔″櫒灏嗕复鏃舵枃浠舵斁鍒版枃浠剁郴缁熶腑鏈夊ぇ閲忓彲鐢ㄧ┖闂寸殑鐩綍涓嬨傚湪杩欑鎯呭喌涓嬶紝涔熷彲浠ヤ娇鐢--relay-log閫夐」灏嗕腑缁ф棩蹇楁斁鍒拌鏂囦欢绯荤粺涓紝鍥犱负涓户鏃ュ織涔熷緢澶с--slave-load-tmpdir搴旀寚鍚戝熀浜庣‖鐩樼殑鏂囦欢绯荤粺锛岃岄潪鍩轰簬鍐呭瓨鐨勬枃浠剁郴缁燂細浠庢湇鍔″櫒闇瑕佺敤涓存椂鏂囦欢鍦ㄦ満鍣ㄩ噸鍚椂鐢ㄤ簬澶嶅埗LOAD DATA INFILE銆傜郴缁熷惎鍔ㄨ繃绋嬩腑鎿嶄綔绯荤粺涔熶笉鑳芥竻闄よ鐩綍銆
路 --slave-net-timeout=seconds
鏀惧純璇讳箣鍓嶄粠涓绘湇鍔″櫒绛夊欐洿澶氭暟鎹殑绉掓暟锛岃冭檻鍒拌繛鎺ヤ腑鏂拰灏濊瘯閲嶆柊杩炴帴銆傝秴鏃跺悗绔嬪嵆寮濮嬬1娆¢噸璇曘傜敱--master-connect-retry閫夐」鎺у埗閲嶈瘯涔嬮棿鐨勯棿闅斻
路 --slave-skip-errors=[err_code1,err_code2,... | all]
閫氬父鎯呭喌锛屽綋鍑虹幇閿欒鏃跺鍒跺仠姝紝杩欐牱缁欎綘涓涓満浼氭墜鍔ㄨВ鍐虫暟鎹腑鐨勪笉涓鑷存ч棶棰樸傝閫夐」鍛婅瘔浠庢湇鍔″櫒SQL绾跨▼褰撹鍙ヨ繑鍥炰换浣曢夐」鍊间腑鎵鍒楃殑閿欒鏃剁户缁鍒躲
濡傛灉浣犱笉鑳藉畬鍏ㄧ悊瑙d负浠涔堝彂鐢熼敊璇紝鍒欎笉瑕佷娇鐢ㄨ閫夐」銆傚鏋滃鍒惰缃拰瀹㈡埛绋嬪簭涓病鏈bug锛屽苟涓MySQL鑷韩涔熸病鏈bug锛屽簲涓嶄細鍙戠敓鍋滄澶嶅埗鐨勯敊璇傛互鐢ㄨ閫夐」浼氫娇浠庢湇鍔″櫒涓庝富鏈嶅姟鍣ㄤ笉鑳戒繚瀛樺悓姝ワ紝骞朵笖浣犳壘涓嶅埌鍘熷洜銆
瀵逛簬閿欒浠g爜锛屼綘搴斾娇鐢ㄤ粠鏈嶅姟鍣ㄩ敊璇棩蹇椾腑閿欒娑堟伅鎻愪緵鐨勭紪鍙峰拰SHOW SLAVE STATUS鐨勮緭鍑恒傛湇鍔″櫒閿欒浠g爜鍒椾簬闄勫綍B锛閿欒浠g爜鍜屾秷鎭銆
浣犱篃鍙互(浣嗕笉搴)浣跨敤涓嶆帹鑽愮殑all鍊煎拷鐣ユ墍鏈夐敊璇秷鎭紝涓嶈冭檻鎵鍙戠敓鐨勯敊璇傛棤闇鑰岃█锛屽鏋滀娇鐢ㄨ鍊硷紝鎴戜滑涓嶈兘淇濊瘉鏁版嵁鐨勫畬鏁存с傚湪杩欑鎯呭喌涓嬶紝濡傛灉浠庢湇鍔″櫒鐨勬暟鎹笌涓绘湇鍔″櫒涓婄殑涓嶇浉杩戣涓嶈鎶辨(鎴栫紪鍐bug鎶ュ憡)銆宸茬粡璀﹀憡浣犱簡銆
渚嬪锛
--slave-skip-errors=1062,1053
--slave-skip-errors=all
浠庢湇鍔″櫒鎸変笅闈㈣瘎浼--replicate-*瑙勫垯锛岀‘瀹氭槸鍚︽墽琛屾垨蹇借璇彞锛
1. 鏄惁鏈--replicate-do-db鎴--replicate-ignore-db瑙勫垯锛
路 鏈锛氭祴璇--binlog-do-db鍜--binlog-ignore-db(鍙傝5.11.3鑺傦紝鈥滀簩杩涘埗鏃ュ織鈥)銆傛祴璇曠粨鏋滄槸浠涔堬紵
o 蹇借璇彞锛氬拷瑙嗗苟閫鍑恒
o 璁稿彲璇彞锛氫笉绔嬪嵆鎵ц璇彞銆傛帹杩熷喅绛栵紱缁х画涓嬩竴姝ャ
路 娌℃湁锛氱户缁笅涓姝ャ
2. 鎴戜滑鐩墠姝f墽琛屼繚瀛樼殑绋嬪簭鎴栧嚱鏁板悧锛
路 鏄锛氭墽琛屾煡璇㈠苟閫鍑恒
路 鍚锛氱户缁笅涓姝ャ
3. 鏄惁鏈--replicate-*-table瑙勫垯锛
路 娌℃湁锛氭墽琛屾煡璇㈠苟閫鍑恒
路 鏈锛氱户缁笅涓姝ュ苟寮濮嬫寜鎵绀洪『搴忚瘎浼拌〃瑙勫垯(棣栧厛鏄潪閫氶厤瑙勫垯锛岀劧鍚庢槸閫氶厤瑙勫垯)銆傚彧鏈夊緟鏇存柊鐨勮〃鏍规嵁杩欎簺瑙勫垯杩涜姣旇緝(INSERT INTO sales SELECT * FROM prices:鍙湁sales鏍规嵁杩欎簺瑙勫垯杩涜姣旇緝)銆傚鏋滆鏇存柊鍑犱釜琛(澶氳〃璇彞)锛岀1涓尮閰嶇殑琛(鍖归厤鈥do鈥濇垨鈥ignore鈥)鑾疯耽銆備篃灏辨槸璇达紝鏍规嵁杩欎簺瑙勫垯姣旇緝绗1涓〃銆傜劧鍚庯紝濡傛灉涓嶈兘杩涜鍐崇瓥锛屾牴鎹繖浜涜鍒欐瘮杈冪2涓〃绛夌瓑銆
4. 鏄惁鏈--replicate-do-table瑙勫垯锛
路 鏈锛氳〃鍖归厤鍚楋紵
o 鏄锛氭墽琛屾煡璇㈠苟閫鍑恒
o 鍚锛氱户缁笅涓姝ャ
路 娌℃湁锛氱户缁笅涓姝ャ
5. 鏄惁鏈--replicate-ignore-table瑙勫垯锛
路 鏈锛氳〃鍖归厤鍚楋紵
o 鏄锛氬拷瑙嗘煡璇㈠苟閫鍑恒
o 鍚锛氱户缁笅涓姝ャ
路 娌℃湁锛氱户缁笅涓姝ャ
6. 鏄惁鏈--replicate-wild-do-table瑙勫垯锛
路 鏈锛氳〃鍖归厤鍚楋紵
o 鏄锛氭墽琛屾煡璇㈠苟閫鍑恒
o 鍚锛氱户缁笅涓姝ャ
路 娌℃湁锛氱户缁笅涓姝ャ
7. 鏄惁鏈--replicate-wild-ignore-table瑙勫垯锛
路 鏈锛氳〃鍖归厤鍚楋紵
o 鏄锛氬拷瑙嗘煡璇㈠苟閫鍑恒
o 鍚锛氱户缁笅涓姝ャ
路 娌℃湁锛氱户缁笅涓姝ャ
8. 娌℃湁鍖归厤鐨--replicate-*-table瑙勫垯銆傝鏍规嵁杩欎簺瑙勫垯娴嬭瘯鍏跺畠琛ㄥ悧锛
路 鏄锛氭墽琛屽惊鐜
路 鍚锛氭垜浠幇鍦ㄥ凡缁忔祴璇曚簡鎵鏈夊緟鏇存柊鐨勮〃锛岀粨鏋滀笉鑳藉尮閰嶄换浣曡鍒欍傛槸鍚︽湁--replicate-do-table鎴--replicate-wild-do-table瑙勫垯锛
o 鏈锛氭湁鈥do鈥濊鍒欎絾涓嶅尮閰嶃傚拷瑙嗘煡璇㈠苟閫鍑恒
o 娌℃湁锛氭墽琛屾煡璇㈠苟閫鍑恒
Q锛氬鏋滀富鏈嶅姟鍣ㄦ鍦ㄨ繍琛屽苟涓斾笉鎯冲仠姝富鏈嶅姟鍣紝鎬庢牱閰嶇疆涓涓粠鏈嶅姟鍣紵
A锛氭湁澶氱鏂规硶銆傚鏋滀綘鍦ㄦ煇鏃堕棿鐐瑰仛杩囦富鏈嶅姟鍣ㄥ浠藉苟涓旇褰曚簡鐩稿簲蹇収鐨勪簩杩涘埗鏃ュ織鍚嶅拰鍋忕Щ閲(閫氳繃SHOW MASTER STATUS鍛戒护鐨勮緭鍑)锛岄噰鐢ㄤ笅闈㈢殑姝ラ锛
1. 纭繚浠庢湇鍔″櫒鍒嗛厤浜嗕竴涓敮涓鐨勬湇鍔″櫒ID鍙枫
2. 鍦ㄤ粠鏈嶅姟鍣ㄤ笂鎵ц涓嬮潰鐨勮鍙ワ紝涓烘瘡涓夐」濉叆閫傚綋鐨勫硷細
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='master_user_name',
-> MASTER_PASSWORD='master_pass',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
3. 鍦ㄤ粠鏈嶅姟鍣ㄤ笂鎵цSTART SLAVE璇彞銆
濡傛灉浣犳病鏈夊浠戒富鏈嶅姟鍣紝杩欓噷鏄竴涓垱寤哄浠界殑蹇熺▼搴忋傛墍鏈夋楠ら兘搴旇鍦ㄤ富鏈嶅姟鍣ㄤ富鏈轰笂鎵ц銆
1. 鍙戝嚭璇ヨ鍙ワ細
mysql> FLUSH TABLES WITH READ LOCK锛
2. 浠嶇劧鍔犻攣鏃讹紝鎵ц璇ュ懡浠わ紙鎴栧畠鐨勫彉浣擄級锛
shell> tar zcf /tmp/backup.tar.gz /var/lib/mysql
3. 鍙戝嚭璇ヨ鍙ュ苟涓旂‘淇濊褰曚簡浠ュ悗鐢ㄥ埌鐨勮緭鍑猴細
mysql>SHOW MASTER STATUS锛
4. 閲婃斁閿侊細
mysql> UNLOCK TABLES锛
涓涓彲閫夋嫨鐨勬柟娉曟槸锛岃浆鍌ㄤ富鏈嶅姟鍣ㄧ殑SQL鏉ヤ唬鏇垮墠闈㈡楠や腑鐨勪簩杩涘埗澶嶅埗銆傝杩欐牱鍋氾紝浣犲彲浠ュ湪涓绘湇鍔″櫒涓婁娇鐢mysqldump --master-data锛浠ュ悗瑁呰浇SQL杞偍鍒板埌浣犵殑浠庢湇鍔″櫒銆傜劧鑰岋紝杩欐瘮杩涜浜岃繘鍒跺鍒堕熷害鎱€
涓嶇浣犱娇鐢ㄨ繖涓ょ鏂规硶涓殑閭d竴涓紝褰撲綘鏈変竴涓揩鐓у拰璁板綍浜嗘棩蹇楀悕涓庡亸绉婚噺鏃锛屽悗鏉ユ牴鎹鏄庢搷浣溿浣犲彲浠ヤ娇鐢ㄧ浉鍚岀殑蹇収寤虹珛澶氫釜浠庢湇鍔″櫒銆備竴鏃︿綘鎷ユ湁涓绘湇鍔″櫒鐨勪竴涓揩鐓э紝鍙互绛夊緟鍒涘缓涓涓粠鏈嶅姟鍣紝鍙涓绘湇鍔″櫒鐨勪簩杩涘埗鏃ュ織瀹屾暣銆備袱涓兘澶熺瓑寰呯殑鏃堕棿瀹為檯鐨勯檺鍒舵槸鎸囧湪涓绘湇鍔″櫒涓婁繚瀛樹簩杩涘埗鏃ュ織鐨勫彲鐢ㄧ‖鐩樼┖闂村拰浠庢湇鍔″櫒鍚屾鎵鐢ㄧ殑鏃堕棿銆
浣犱篃鍙互浣跨敤LOAD DATA FROM MASTER銆傝繖鏄竴涓柟渚跨殑璇彞锛屽畠浼犺緭涓涓揩鐓у埌浠庢湇鍔″櫒骞朵笖绔嬪嵆璋冩暣鏃ュ織鍚嶅拰鍋忕Щ閲忋傚皢鏉ワ紝LOAD DATA FROM MASTER灏嗘垚涓哄垱寤轰粠鏈嶅姟鍣ㄧ殑鎺ㄨ崘鏂规硶銆傜劧鑰岄渶瑕佹敞鎰忥紝瀹冨彧宸ヤ綔鍦MyISAM 琛ㄤ笂骞朵笖鍙兘闀挎椂闂存寔鏈夎閿佸畾銆傚畠骞朵笉璞℃垜浠笇鏈涚殑閭f牱楂樻晥鐜囧湴鎵ц銆傚鏋滀綘鏈夊ぇ琛紝鎵цFLUSH TABLES WITH READ LOCK璇彞鍚庯紝杩欐椂棣栭夋柟娉曚粛鐒舵槸鍦ㄤ富鏈嶅姟鍣ㄤ笂鍒朵綔浜岃繘鍒跺揩鐓с
Q锛氫粠鏈嶅姟鍣ㄩ渶瑕佸缁堣繛鎺ュ埌涓绘湇鍔″櫒鍚楋紵
A锛氫笉锛屼笉闇瑕併備粠鏈嶅姟鍣ㄥ彲浠ュ畷鏈烘垨鏂紑杩炴帴鍑犱釜灏忔椂鐢氳嚦鍑犲ぉ锛岄噸鏂拌繛鎺ュ悗鑾峰緱鏇存柊淇℃伅銆備緥濡傦紝浣犲彲浠ュ湪閫氳繃鎷ㄥ彿鐨勯摼鎺ヤ笂璁剧疆涓绘湇鍔″櫒/浠庢湇鍔″櫒鍏崇郴锛屽叾涓彧鏄伓灏旂煭鏃堕棿鍐呰繘琛岃繛鎺ャ傝繖鎰忓懗鐫锛屽湪浠讳綍缁欏畾鏃堕棿锛屼粠鏈嶅姟鍣ㄤ笉鑳戒繚璇佷笌涓绘湇鍔″櫒鍚屾闄ら潪浣犳墽琛屾煇浜涚壒娈婄殑鏂规硶銆傚皢鏉ワ紝鎴戜滑灏嗕娇鐢ㄩ夐」鏉ラ樆濉炰富鏈嶅姟鍣ㄧ洿鍒版湁涓涓粠鏈嶅姟鍣ㄥ悓姝ャ
Q锛氭垜鎬庢牱鐭ラ亾浠庢湇鍔″櫒涓庝富鏈嶅姟鍣ㄧ殑鏈鏂版瘮杈? 鎹㈠彞璇濊锛屾垜鎬庢牱鐭ラ亾浠庢湇鍔″櫒澶嶅埗鐨勬渶鍚庝竴涓煡璇㈢殑鏃ユ湡锛
A锛氫綘鍙互鏌ョ湅SHOW SLAVE STATUS璇彞鐨Seconds_Behind_Master鍒楃殑缁撴灉銆傚弬瑙6.3鑺傦紝鈥滃鍒跺疄鏂界粏鑺傗銆
褰撲粠鏈嶅姟鍣SQL绾跨▼鎵ц浠庝富鏈嶅姟鍣ㄨ鍙栫殑浜嬩欢鏃讹紝瀹冩牴鎹簨浠舵椂闂存埑淇敼鑷繁鐨勬椂闂达紙杩欐槸TIMESTAMP鑳藉寰堝ソ澶嶅埗鐨勫師鍥狅級銆傚湪SHOW PROCESSLIST璇彞杈撳嚭鐨Time鍒楀唴锛屼负浠庢湇鍔″櫒SQL绾跨▼鏄剧ず鐨勭鏁版槸鏈鍚庝竴涓鍒朵簨浠剁殑鏃堕棿鎴冲拰浠庢湇鍔″櫒涓绘満鐨勫疄闄呮椂闂翠箣闂寸浉宸殑绉掓暟銆備綘鍙互浣跨敤瀹冩潵纭畾鏈鍚庝竴涓鍒朵簨浠剁殑鏃ユ湡銆傛敞鎰忥紝濡傛灉浣犵殑浠庢湇鍔″櫒涓庝富鏈嶅姟鍣ㄨ繛鎺ユ柇寮涓涓皬鏃讹紝鐒跺悗閲嶆柊杩炴帴锛屽湪SHOW PROCESSLIST缁撴灉涓紝浣犲彲浠ョ珛鍗崇湅鍒颁粠鏈嶅姟鍣SQL绾跨▼鐨Time鍊间负3600銆傝繖鍙兘鏄洜涓轰粠鏈嶅姟鍣ㄦ墽琛岀殑璇彞鏄竴涓竴灏忔椂涔嬪墠鐨勩
Q锛氭垜鎬庢牱寮哄埗涓绘湇鍔″櫒闃诲鏇存柊鐩村埌浠庢湇鍔″櫒鍚屾锛
A锛氫娇鐢ㄤ笅闈㈢殑姝ラ锛
1. 鍦ㄤ富鏈嶅姟鍣ㄤ笂锛屾墽琛岃繖浜涜鍙ワ細
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
璁板綍SHOW璇彞鐨勮緭鍑虹殑鏃ュ織鍚嶅拰鍋忕Щ閲忋傝繖浜涙槸澶嶅埗鍧愭爣銆
2. 鍦ㄤ粠鏈嶅姟鍣ㄤ笂锛屽彂鍑轰笅闈㈢殑璇彞锛屽叾涓Master_POS_WAIT()鍑芥暟鐨勫弬閲忔槸鍓嶉潰姝ラ涓殑寰楀埌鐨勫鍒跺潗鏍囧硷細
mysql> SELECT MASTER_POS_WAIT('log_name', log_offset);
SELECT璇彞闃诲鐩村埌浠庢湇鍔″櫒杈惧埌鎸囧畾鐨勬棩蹇楁枃浠跺拰鍋忕Щ閲忋傛鏃讹紝浠庢湇鍔″櫒涓庝富鏈嶅姟鍣ㄥ悓姝ワ紝璇彞杩斿洖銆
3. 鍦ㄤ富鏈嶅姟鍣ㄤ笂锛屽彂鍑轰笅闈㈢殑璇彞鍏佽涓绘湇鍔″櫒閲嶆柊寮濮嬪鐞嗘洿鏂帮細
mysql> UNLOCK TABLES锛
Q锛氬綋璁剧疆鍙屽悜澶嶅埗鏃舵垜搴旇鐭ラ亾鍙戝嚭閭d簺璇彞锛
A锛MySQL澶嶅埗鐩墠涓嶆敮鎸佷富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒涔嬮棿鐨勪换浣曢攣瀹氬崗璁潵淇濊瘉鍒嗗竷寮(璺ㄦ湇鍔″櫒)鏇存柊鐨勫師瀛愭с傛崲鍙ヨ瘽璇达紝杩欐牱鍋氭槸鍙兘鐨勶細瀹㈡埛A鏍规嵁鍗忎綔-涓绘湇鍔″櫒1鏇存柊锛屽悓鏃讹紝鍦ㄥ畠浼犵粰鍗忎綔-涓绘湇鍔″櫒2涔嬪墠锛屽鎴B鑳藉鏍规嵁鍗忎綔-涓绘湇鍔″櫒2鏇存柊锛岃繖鏍峰鎴A鐨勬洿鏂颁笌瀹冨湪鍗忎綔-涓绘湇鍔″櫒1鐨勬洿鏂颁笉鍚屻傝繖鏍凤紝褰撳鎴A鏍规嵁鍗忎綔-涓绘湇鍔″櫒2鏇存柊鏃讹紝瀹冧骇鐢熺殑琛ㄤ笌鍦ㄥ崗浣-涓绘湇鍔″櫒1涓婄殑涓鍚岋紝鍗充娇鎵鏈夋牴鎹崗浣-涓绘湇鍔″櫒2鐨勬洿鏂板凡缁忎紶杩囨潵銆傝繖鎰忓懗鐫锛屽湪鍙屽悜澶嶅埗鍏崇郴涓紝浣犱笉搴旇鎶婁袱涓湇鍔″櫒涓茶繛鍦ㄤ竴璧凤紝闄ら潪浣犵‘淇′换浣曢『搴忕殑鏇存柊鏄畨鍏ㄧ殑锛屾垨鑰呴櫎闈炰綘鍦ㄥ鎴风浠g爜涓敞鎰忔庢牱閬垮厤鏇存柊椤哄簭閿欒銆
浣犺繕蹇呴』璁よ瘑鍒颁粠鏇存柊瑙掑害锛屽弻鍚戝鍒跺疄闄呬笂骞朵笉鑳芥樉钁楀湴鎻愰珮鎬ц兘锛堟垨鑰呮牴鏈笉鑳芥彁楂樻ц兘锛夈備袱涓湇鍔″櫒閮介渶瑕佸仛鐩稿悓鏁伴噺鐨勬洿鏂帮紝濡傚悓鍦ㄤ竴涓湇鍔″櫒鍋氱殑閭f牱銆傚敮涓鐨勫樊鍒槸閿佺珵浜夎灏戯紝杩欏洜涓烘簮浜庡彟涓涓湇鍔″櫒鐨勬洿鏂板湪涓涓粠绾跨▼涓簭鍒楀寲銆傚嵆浣胯繖涓泭澶勫彲鑳借缃戠粶寤惰繜鎶垫秷銆
Q锛氭庢牱閫氳繃澶嶅埗鏉ユ彁楂樼郴缁熺殑鎬ц兘锛
A锛氫綘搴斿皢涓涓湇鍔″櫒璁剧疆涓轰富鏈嶅姟鍣ㄥ苟涓斿皢鎵鏈夊啓鎸囧悜璇ユ湇鍔″櫒銆傜劧鍚庢牴鎹绠楅厤缃敖鍙兘澶氱殑浠庢湇鍔″櫒浠ュ強鏍堢┖闂达紝骞朵笖鍦ㄤ富鏈嶅姟鍣ㄥ拰浠庢湇鍔″櫒涔嬮棿鍒嗗彂璇诲彇鎿嶄綔銆備綘涔熷彲浠ョ敤--skip-innodb銆--skip-bdb銆--low-priority-updates浠ュ強--delay-key-write=ALL閫夐」鍚姩浠庢湇鍔″櫒锛屼互渚垮湪浠庢湇鍔″櫒绔彁楂橀熷害銆傚湪杩欑鎯呭喌涓嬶紝涓轰簡鎻愰珮閫熷害锛屼粠鏈嶅姟鍣ㄤ娇鐢ㄩ潪浜嬪姟MyISAM琛ㄦ潵浠f浛InnoDB鍜BDB琛ㄣ
Q锛氫负浜嗕娇鐢ㄩ珮鎬ц兘鐨勫鍒讹紝鎴戝簲璇ュ湪鑷繁鐨勫簲鐢ㄧ▼搴忎腑鎬庢牱鍑嗗瀹㈡埛绔唬鐮侊紵
A锛氬鏋滀綘鐨勪唬鐮佷腑鏁版嵁搴撹闂儴鍒嗗凡缁忔纭湴妯″潡鍖栵紝搴旇鑳藉骞虫粦鍜屽鏄撳湴杞崲涓哄湪澶嶅埗姝ラ涓繍琛岀殑浠g爜銆備粎闇瑕佹洿鏀规暟鎹簱璁块棶鎵ц閮ㄥ垎锛屼互渚垮彂閫佹墍鏈夌殑鍐欐搷浣滃埌涓绘湇鍔″櫒锛屼互鍙婂彂閫佽鎿嶄綔鍒颁富鏈嶅姟鍣ㄦ垨鏌愪釜浠庢湇鍔″櫒銆傚鏋滀綘鐨勪唬鐮佹病鏈夎繖涓骇鍒紝璁剧疆涓涓鍒剁郴缁熶互渚挎竻闄ゃ傚簲鍏堥氳繃涓嬮潰鐨勫嚱鏁板垱寤轰竴涓寘瑁呭簱鎴栨ā鍧楋細
路 safe_writer_connect()
路 safe_reader_connect()
路 safe_reader_statement()
路 safe_writer_statement()
姣忎釜鍑芥暟鍚嶇殑safe_鎰忓懗鐫鍑芥暟姣旇緝灏忓績鍦板鐞嗘墍鏈夐敊璇備綘鍙互浣跨敤涓嶅悓鍚嶇殑鍑芥暟銆傞噸瑕佹槸瀵逛簬璇昏繛鎺ャ佸啓杩炴帴銆佽鍜屽啓鏈変竴涓粺涓鐨勬帴鍙c
鐒跺悗锛屼綘搴旇杞崲瀹㈡埛绔唬鐮佷娇鐢ㄥ寘瑁呭簱銆傚垰寮濮嬭繖鍙兘鏄棝鑻﹀拰鎭愭厡鐨勮繃绋嬶紝浣嗕粠闀胯繙鏉ョ湅鏄煎緱鐨勩備娇鐢ㄥ垰鎵嶈璁虹殑鏂规硶鐨勬墍鏈夊簲鐢ㄧ▼搴忛兘鑳藉鍒╃敤涓绘湇鍔″櫒/浠庢湇鍔″櫒閰嶇疆鐨勪紭瓒婃э紝鍗充娇鏄惈鏈夊涓粠鏈嶅姟鍣ㄧ殑閰嶇疆銆備唬鐮侀潪甯稿鏄撶淮鎶わ紝骞朵笖娣诲姞鎺掗敊閫夐」涔熷緢瀹规槗銆備綘浠呴渶瑕佷慨鏀逛竴涓や釜鍑芥暟锛涗緥濡傦紝璁板綍姣忎釜璇彞鎵ц鐨勬椂闂达紝鎴栬呬綘鐨勪笂鍗冧釜璇彞涓摢涓鍙ュ彂鐢熶簡閿欒銆
濡傛灉浣犲凡缁忕紪鍐欎簡璁稿浠g爜锛屼綘鍙兘鎯充娇鐢replace宸ュ叿鑷姩杩涜杞崲锛岃宸ュ叿闅忔爣鍑MySQL涓璧峰彂甯冿紝鎴栧彲浠ヨ嚜宸辩紪鍐欒浆鎹㈣剼鏈傜悊鎯虫儏鍐碉紝浣犵殑浠g爜浣跨敤涓鑷寸殑绋嬪簭杞崲椋庢牸銆傚惁鍒欙紝鍙兘鏈濂介噸鏂扮紪鍐欎唬鐮侊紝鎴栬呰嚦灏戞墜宸ュ鍏惰繘琛岃鍒欏寲浠ヤ娇鐢ㄤ竴鑷寸殑椋庢牸銆
Q锛MySQL澶嶅埗鑳藉浣曟椂鍜屽澶х▼搴︽彁楂樼郴缁熸ц兘锛
A锛MySQL澶嶅埗瀵逛簬棰戠箒璇诲拰棰戠箒鍐欑殑绯荤粺鍏锋湁鏈澶уソ澶勩傜悊璁轰笂锛岄氳繃浣跨敤鍗曚釜涓绘湇鍔″櫒/澶氫粠鏈嶅姟鍣ㄨ缃紝鍙互閫氳繃娣诲姞鏇村鐨勪粠鏈嶅姟鍣ㄦ潵鎵╁厖绯荤粺锛岀洿鍒扮敤瀹岀綉缁滃甫瀹斤紝鎴栬呬綘鐨勬洿鏂拌礋杞藉凡缁忓闀垮埌涓绘湇鍔″櫒涓嶈兘澶勭悊鐨勭偣銆
鍦ㄨ幏寰楃殑鏀剁泭寮濮嬪悆骞充箣鍓嶏紝涓轰簡纭畾鍙互鏈夊灏戜粠鏈嶅姟鍣紝浠ュ強鍙互灏嗕綘鐨勭珯鐐圭殑鎬ц兘鎻愰珮澶氬皯锛岄渶瑕佺煡閬撴煡璇㈡ā寮忥紝骞朵笖瑕侀氳繃鍩哄噯娴嬭瘯骞舵牴鎹粡楠岀‘瀹氫竴涓吀鍨嬬殑涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄤ腑鐨勮鍙栵紙姣忕閽熻鍙栭噺锛屾垨鑰max_reads锛夊悶鍚愰噺鍜屽啓锛max_writes锛夊悶鍚愰噺鐨勫叧绯汇傞氳繃涓涓亣璁剧殑甯︽湁澶嶅埗鐨勭郴缁燂紝鏈緥缁欏嚭浜嗕竴涓潪甯哥畝鍗曠殑璁$畻缁撴灉銆
鍋囪绯荤粺璐熻浇鍖呮嫭10%鐨勫啓鍜90%鐨勮鍙栵紝骞朵笖鎴戜滑閫氳繃鍩哄噯娴嬭瘯纭畾max_reads鏄1200 鈥2 脳 max_writes銆傛崲鍙ヨ瘽璇达紝濡傛灉娌℃湁鍐欐搷浣滐紝绯荤粺姣忕鍙互杩涜1,200娆¤鍙栨搷浣滐紝骞冲潎鍐欐搷浣滄槸骞冲潎璇绘搷浣滄墍鐢ㄦ椂闂寸殑涓ゅ嶏紝骞朵笖鍏崇郴鏄嚎鎬х殑銆傛垜浠亣瀹氫富鏈嶅姟鍣ㄥ拰姣忎釜浠庢湇鍔″櫒鍏锋湁鐩稿悓鐨勬ц兘锛屽苟涓旀垜浠湁涓涓富鏈嶅姟鍣ㄥ拰N涓粠鏈嶅姟鍣ㄣ傞偅涔堬紝瀵逛簬姣忎釜鏈嶅姟鍣紙涓绘湇鍔″櫒鎴栦粠鏈嶅姟鍣級锛屾垜浠湁锛
reads = 1200 鈥 2 脳 writes
reads = 9 脳 writes / (N + 1) (璇诲彇鏄垎绂荤殑, 浣嗘槸鍐欏叆鎵鏈夋湇鍔″櫒)
9 脳 writes / (N + 1) + 2 脳 writes = 1200
writes = 1200 / (2 + 9/(N+1))
鏈鍚庣殑绛夊紡琛ㄦ槑浜N涓粠鏈嶅姟鍣ㄧ殑鏈澶у啓鎿嶄綔鏁帮紝鍋囪鏈澶у彲鑳界殑璇诲彇閫熺巼鏄瘡鍒嗛挓1,200娆★紝璇绘搷浣滀笌鍐欐搷浣滅殑姣旂巼鏄9銆
濡備笂鍒嗘瀽鍙互寰楀埌涓嬮潰鐨勭粨璁猴細
路 濡傛灉N = 0锛堣繖琛ㄦ槑娌℃湁澶嶅埗锛夛紝绯荤粺姣忕鍙互澶勭悊澶х害1200/11 = 109涓啓鎿嶄綔銆
路 濡傛灉N = 1锛屾瘡绉掑緱鍒184涓啓鎿嶄綔銆
路 濡傛灉N = 8锛屾瘡绉掑緱鍒400涓啓鎿嶄綔銆
路 濡傛灉N = 17锛屾瘡绉掑緱鍒480涓啓鎿嶄綔銆
路 鏈鍚庯紝褰 N 瓒嬩簬鏃犵┓澶э紙浠ュ強鎴戜滑棰勭畻鐨勮礋鏃犵┓澶э級鏃讹紝鍙互寰楀埌闈炲父鎺ヨ繎姣忕600涓啓鎿嶄綔锛岀郴缁熷悶鍚愰噺澧炲姞灏嗚繎5.5鍊嶃傜劧鑰岋紝濡傛灉鍙敤8涓湇鍔″櫒锛屽鍔犳帴杩4鍊嶃
璇锋敞鎰忥紝杩欎簺璁$畻鍋囪缃戠粶甯﹀鏃犵┓澶у苟蹇界暐鎺変簡鍏跺畠涓浜涘洜绱狅紝閭d簺鍥犵礌鍙兘瀵圭郴缁熶骇鐢熼噸瑕佺殑褰卞搷銆傚湪璁稿鎯呭喌涓嬶紝涓嶈兘鎵ц涓庡垰鎵嶇被浼肩殑璁$畻锛屽嵆濡傛灉娣诲姞N鍙板鍒朵粠鏈嶅姟鍣紝搴旇鍑嗙‘棰勬姤绯荤粺灏嗗彂鐢熷摢浜涘奖鍝嶃傚洖绛斾笅闈㈢殑闂搴旇兘澶熷府鍔╀綘纭畾澶嶅埗鏄惁鍜屽湪澶氬ぇ绋嬪害涓婅兘澶熸彁楂樼郴缁熺殑鎬ц兘锛
路 绯荤粺涓婄殑璇诲彇/鍐欐瘮渚嬫槸浠涔?
路 濡傛灉鍑忓皯璇诲彇鎿嶄綔锛屼竴涓湇鍔″櫒鍙互澶氬鐞嗗灏戝啓璐熻浇锛
路 缃戠粶甯﹀鍙弧瓒冲灏戜粠鏈嶅姟鍣ㄧ殑闇姹?
Q锛氬浣曚娇鐢ㄥ鍒舵潵鎻愪緵鍐椾綑/楂樺彲鐢ㄦ?
A锛氬埄鐢ㄧ洰鍓嶇殑鍙敤鐗规э紝蹇呴』璁剧疆涓涓富鏈嶅姟鍣ㄥ拰涓涓粠鏈嶅姟鍣紙鎴栧涓粠鏈嶅姟鍣級锛屼互鍙婂啓涓涓剼鏈潵鐩戣涓绘湇鍔″櫒鏄惁鍚姩銆傚鏋滀富鏈嶅姟鍣ㄥけ璐ワ紝閫氱煡搴旂敤绋嬪簭鍜屼粠鏈嶅姟鍣ㄥ垏鎹富鏈嶅姟鍣ㄣ備笅闈㈡槸涓浜涘缓璁細
路 鍛婄煡浠庢湇鍔″櫒鏇存敼鍏朵富鏈嶅姟鍣紝浣跨敤CHANGE MASTER TO璇彞銆
路 閫氱煡搴旂敤绋嬪簭涓绘湇鍔″櫒浣嶇疆鐨勪竴涓緢濂界殑鏂规硶鏄涓绘湇鍔″櫒鎻愪緵鍔ㄦDNS鍏ュ彛銆傜敤bind鍙互浣跨敤nsupdate鍔ㄦ佹洿鏂DNS銆
路 搴旇鐢--logs-bin閫夐」鑰屼笉鐢 --logs-slave-updates閫夐」杩愯浠庢湇鍔″櫒銆傝繖鏍凤紝涓鏃︿綘鍦ㄥ叾瀹冧粠鏈嶅姟鍣ㄤ笂鍙戝嚭STOP SLAVE; RESET MASTER, 浠ュ強CHANGE MASTER TO璇彞锛璇ヤ粠鏈嶅姟鍣ㄥ彲浠ュ垏鎹负涓绘湇鍔″櫒銆備緥濡傦紝鍋囪鏈変笅闈㈢殑璁剧疆锛
路 WC
路 \
路 v
路 WC----> M
路 / | \
路 / | \
路 v v v
路 S1 S2 S3
M浠h〃涓绘湇鍔″櫒锛S浠h〃浠庢湇鍔″櫒锛WC浠h〃鍙戝嚭鏁版嵁搴撳啓鍜岃鍙栨搷浣滅殑瀹㈡埛锛涘彧鍙戝嚭鏁版嵁搴撹鍙栨搷浣滅殑瀹㈡埛娌℃湁缁欏嚭锛屽洜涓哄畠浠笉闇瑕佸垏鎹€S1銆S2浠ュ強S3鏄粠鏈嶅姟鍣紝鐢--logs-bin閫夐」鑰屾病鏈夌敤--logs-slave-updates杩愯銆傚洜涓轰粠鏈嶅姟鍣ㄦ敹鍒扮殑涓绘湇鍔″櫒鐨勬洿鏂版病鏈夎褰曞湪浜岃繘鍒舵棩蹇椾腑锛岄櫎闈炴寚瀹 --logs-slave-updates閫夐」锛屾瘡涓粠鏈嶅姟鍣ㄤ笂鐨勪簩杩涘埗鏃ュ織鏄┖鐨勩傚鏋滃洜涓烘煇浜涘師鍥M 鍙樺緱涓嶅彲鐢紝浣犲彲浠ラ夊彇涓涓粠鏈嶅姟鍣ㄥ彉涓烘柊鐨勪富鏈嶅姟鍣ㄣ備緥濡傦紝濡傛灉浣犻夊彇浜S1锛屾墍鏈WC搴旇閲嶆柊鎸囧悜S1鍜S2锛屽苟涓S3鐒跺悗搴斾粠S1澶嶅埗銆
纭繚鎵鏈変粠鏈嶅姟鍣ㄥ凡缁忓鐞嗕簡涓户鏃ュ織涓殑鎵鏈夎鍙ャ傚湪姣忎釜浠庢湇鍔″櫒涓婏紝鍙戝嚭STOP SLAVE IO_THREAD璇彞锛岀劧鍚庢鏌SHOW PROCESSLIST璇彞鐨勮緭鍑猴紝鐩村埌浣犵湅鍒Has read all relay log銆傚綋鎵鏈変粠鏈嶅姟鍣ㄩ兘鎵ц瀹岃繖浜涳紝瀹冧滑鍙互琚噸鏂伴厤缃负涓涓柊鐨勮缃傚湪琚彁鍗囦负涓绘湇鍔″櫒鐨勪粠鏈嶅姟鍣S1涓婏紝鍙戝嚭STOP SLAVE鍜RESET MASTER璇彞銆
鍦ㄥ叾瀹冧粠鏈嶅姟鍣S2鍜S3涓锛屼娇鐢STOP SLAVE鍜CHANGE MASTER TO MASTER_HOST='S1'锛堝叾涓'S1'琛ㄧずS1瀹為檯鐨勪富鏈哄悕锛夈備负CHANGE MASTER娣诲姞鍏充簬浠S2鎴S3濡備綍杩炴帴鍒S1鐨鎵鏈変俊鎭紙user銆password銆port锛夈傚湪CHANGE MASTER鍛戒护涓紝涓嶉渶瑕佹寚瀹氫粠鍏惰鍙栫殑S1鐨勪簩杩涘埗鏃ュ織鍚嶆垨浜岃繘鍒舵棩蹇椾綅缃細鎴戜滑鐭ラ亾瀹冩槸绗1涓簩杩涘埗鏃ュ織锛屼綅缃槸4锛岃繖鏄CHANGE MASTER鍛戒护鐨勯粯璁ゅ笺傛渶鍚庯紝鍦S2鍜S3涓浣跨敤START SLAVE 鍛戒护銆
鐒跺悗锛屾寚绀烘墍鏈WC 鎶婂畠浠殑璇彞鎸囧悜S1銆姝ゅ悗锛WC鍙戝嚭鐨勬墍鏈夊彂閫佸埌S1鐨鏇存柊璇彞琚啓鍏S1鐨浜岃繘鍒舵棩蹇楋紝S1鍒欏寘鍚M姝绘帀涔嬪悗鐨勫彂閫佸埌 S1鐨勬瘡涓涓洿鏂拌鍙ャ
缁撴灉鏄笅闈㈢殑閰嶇疆锛
WC
/
|
WC | M(unavailable)
\ |
\ |
v v
S1<--S2 S3
^ |
+-------+
褰 M閲嶆柊鍚姩鍚庯紝浣犲繀椤诲湪M涓鍙戝嚭鐩稿悓鐨CHANGE MASTER璇彞锛屼笌鍦S2鍜S3涓婂彂鍑虹殑璇彞涓鏍凤紝浠ヤ究M鍙樹负S1鐨浠庢湇鍔″櫒骞朵笖鎭㈠鍦ㄥ畠瀹曟満鍚庝涪澶辩殑鎵鏈WC鍐欐搷浣溿傝鎶 M 鍐嶆浣滀负涓绘湇鍔″櫒锛堜緥濡傦紝鍥犱负瀹冩槸鍔熻兘鏈寮虹殑鏈哄櫒锛夛紝浣跨敤鍓嶉潰鐨勬楠わ紝濂藉儚S1涓嶅彲鐢ㄥ苟涓M鍙樹负涓涓柊鐨勪富鏈嶅姟鍣ㄤ竴鏍枫傚湪杩欎釜杩囩▼涓紝鍦S1銆S2浠ュ強S3浣滀负M鐨浠庢湇鍔″櫒涔嬪墠锛屼笉瑕佸繕璁板湪M涓杩愯RESET MASTER銆傚惁鍒欙紝瀹冧滑鍙兘鎷惧彇M鍙樺緱涓嶅彲鐢ㄤ箣鍓嶇殑鏃WC鍐欐搷浣溿
鎴戜滑鐩墠姝e湪MySQL闆嗘垚鑷姩涓绘湇鍔″櫒閫夋嫨绯荤粺锛屼絾鍦ㄥ噯澶囧ソ涔嬪墠锛屼綘蹇呴』鍒涘缓鑷繁鐨勭洃鎺у伐鍏枫
濡傛灉浣犻伒浠庝簡涓婅堪璇存槑锛屽鍒惰缃粛鐒朵笉宸ヤ綔锛岄鍏堟鏌ヤ笅闈㈠悇椤癸細
路 妫鏌ラ敊璇棩蹇楃殑娑堟伅銆傝澶氱敤鎴烽亣鍒伴棶棰樺悗娌℃湁鍙婃椂鍦拌繖鏍峰仛鑰屾氮璐逛簡鏃堕棿銆
路 涓绘湇鍔″櫒璁板綍鍒颁簡浜岃繘鍒舵棩蹇楋紵鐢SHOW MASTER STATUS妫鏌ャ傚鏋滃凡缁忚褰曪紝Position搴斾负闈為浂銆傚鏋滄病鏈夎褰曪紝纭姝g敤log-bin鍜server-id閫夐」杩愯涓绘湇鍔″櫒銆
路 鏄惁浠庢湇鍔″櫒鍦ㄨ繍琛岋紵浣跨敤SHOWSHOW SLAVE STATUS妫鏌ユ槸鍚slave_IO_Running鍜slave_SQL_Running鐨勫煎潎涓Yes銆傚鏋滀笉鏄紝楠岃瘉褰撳惎鍔ㄤ粠鏈嶅姟鍣ㄦ椂浣跨敤鐨勯夐」銆
路 濡傛灉浠庢湇鍔″櫒姝e湪杩愯锛屽缓绔嬩簡涓庝富鏈嶅姟鍣ㄧ殑杩炴帴鍚楋紵浣跨敤SHOW PROCESSLIST锛屾壘鍑I/O鍜SQL绾跨▼骞舵鏌ュ畠浠殑State鍒楃湅瀹冧滑濡備綍鏄剧ず銆傚弬瑙6.3鑺傦紝鈥滃鍒跺疄鏂界粏鑺傗銆傚鏋I/O绾跨▼鐘舵佷负Connecting to master锛岄獙璇佷富鏈嶅姟鍣ㄤ笂澶嶅埗鐢ㄦ埛鐨勬潈闄愩佷富鏈嶅姟鍣ㄤ富鏈哄悕銆DNS璁剧疆锛屾槸鍚︿富鏈嶅姟鍣ㄧ湡姝e湪杩愯锛屼互鍙婃槸鍚﹀彲浠ヤ粠浠庡睘鏈嶅姟鍣ㄨ闂
路 濡傛灉浠庢湇鍔″櫒浠ュ墠鍦ㄨ繍琛屼絾鏄幇鍦ㄥ凡缁忓仠姝紝鍘熷洜閫氬父鏄湪涓绘湇鍔″櫒涓婃垚鍔熺殑閮ㄥ垎璇彞鍦ㄤ粠鏈嶅姟鍣ㄤ笂澶辫触浜嗐傚鏋滀綘姝g‘蹇収浜嗕富鏈嶅姟鍣紝骞朵笖浠庢潵娌℃湁涓嶉氳繃鏈嶅姟鍣ㄧ嚎绋嬩慨鏀逛粠鏈嶅姟鍣ㄤ笂鐨勬暟鎹紝杩欑鐜拌薄涓嶅簲鍙戠敓銆傚鏋滃彂鐢燂紝搴斾负涓涓bug鎴栦綘閬囧埌浜嗕竴涓6.7鑺傦紝鈥滃鍒剁壒鎬у拰宸茬煡闂鈥 鎻忚堪鐨勫凡鐭ョ殑澶嶅埗闄愬埗銆傚鏋滄槸涓涓bug锛屽弬瑙6.11鑺傦紝鈥滈氭姤澶嶅埗缂洪櫡鈥鏌ラ槄濡備綍閫氭姤鐨勮鏄庛
路 濡傛灉鏌愪釜鍦ㄤ富鏈嶅姟鍣ㄤ笂鎴愬姛鐨勮鍙ユ嫆缁濆湪浠庢湇鍔″櫒涓婅繍琛岋紝骞朵笖涓嶈兘鎵ц瀹屽叏鐨勬暟鎹簱閲嶆柊鍚屾(鍗冲垹闄や粠鏈嶅姟鍣ㄧ殑鏁版嵁搴撳苟浠庝富鏈嶅姟鍣ㄥ鍒舵柊鐨勫揩鐓)锛屽皾璇曪細
1. 纭畾鏄惁浠庢湇鍔″櫒鐨勮〃涓庝富鏈嶅姟鍣ㄧ殑涓嶅悓銆傚敖鍔涗簡瑙e彂鐢熺殑鍘熷洜銆傜劧鍚庤浠庢湇鍔″櫒鐨勮〃涓庝富鏈嶅姟鍣ㄧ殑涓鏍峰苟杩愯START SLAVE銆
2. 濡傛灉鍓嶉潰鐨勬楠や笉宸ヤ綔鎴栦笉閫傚悎锛屽敖鍔涗簡瑙f墜鍔ㄦ洿鏂版槸鍚﹀畨鍏(濡傛灉闇瑕)锛岀劧鍚庡拷瑙嗘潵鑷富鏈嶅姟鍣ㄧ殑涓嬩竴涓鍙ャ
3. 濡傛灉浣犵‘瀹氬彲浠ヨ烦杩囨潵鑷富鏈嶅姟鍣ㄧ殑涓嬩竴涓鍙ワ紝鎵ц涓嬮潰鐨勮鍙ワ細
4. mysql> SET GLOBAL SQL_slave_SKIP_COUNTER = n锛
5. mysql> START SLAVE锛
濡傛灉鏉ヨ嚜涓绘湇鍔″櫒鐨勪笅涓涓鍙ヤ笉浣跨敤AUTO_INCREMENT鎴LAST_INSERT_ID()锛n 鍊煎簲涓1銆傚惁鍒欙紝鍊煎簲涓2銆備娇鐢AUTO_INCREMENT鎴LAST_INSERT_ID()鐨勮鍙ヤ娇鐢ㄥ2鐨勫師鍥犳槸瀹冧滑浠庝富鏈嶅姟鍣ㄧ殑浜岃繘鍒舵棩蹇椾腑鍙栦袱涓簨浠躲
6. 濡傛灉浣犵‘淇濅粠鏈嶅姟鍣ㄥ惎鍔ㄦ椂瀹屽ソ鍦颁笌涓绘湇鍔″櫒鍚屾锛屽苟涓旀病鏈夋洿鏂颁粠鏈嶅姟鍣ㄧ嚎绋嬩箣澶栫殑琛紝鍒欏ぇ姒傝寮傛槸鐢变簬bug銆傚鏋滀綘姝h繍琛屾渶杩戠殑鐗堟湰锛岃閫氭姤璇ラ棶棰樸傚鏋滀綘姝h繍琛屾棫鐗堟湰MySQL锛屽敖鍔涘崌绾у埌鏈鏂扮殑浜у搧鐗堟湰銆
濡傛灉浣犵‘瀹氭病鏈夌敤鎴烽敊璇紝浣嗗鍒朵粛鐒朵笉宸ヤ綔鎴栦笉绋冲畾锛屽垯鏄悜鎴戜滑鍙戦bug閫氭姤鐨勬椂鍊欎簡銆傛垜浠渶瑕佸敖鍙兘浠庝綘閭e効鑾峰緱鏇村鐨勪俊鎭凡璺熻釜bug銆傝鑺变竴浜涙椂闂村拰鍔姏缂栧啓涓浠藉ソ鐨bug閫氭姤銆
濡傛灉浣犳湁涓涓噸澶嶇殑娴嬭瘯妗堜緥鏉ヨ鏄bug锛岃鎶婂畠杈撳叆鎴戜滑鐨bug鏁版嵁搴擄紝浣嶇疆涓http://bugs.mysql.com/銆傚鏋滀綘鏈変竴涓phantom鈥濋棶棰(涓嶈兘鎸夌収鏈熸湜杩涜澶嶅埗)锛屽垯浣跨敤涓嬮潰鐨勭▼搴忥細
1. 纭鏈寘鎷敤鎴烽敊璇備緥濡傦紝濡傛灉浣犱笉鐢ㄤ粠鏈嶅姟鍣ㄧ嚎绋嬫潵鏇存柊浠庢湇鍔″櫒锛屾暟鎹皢涓嶅悓姝ワ紝骞朵笖浼氶亣鍒板敮涓鐨勯敭鍊艰繚鑳屾洿鏂般傚湪杩欑鎯呭喌涓嬶紝浠庢湇鍔″櫒绾跨▼鍋滄骞剁瓑寰呬綘鎵嬪姩娓呯悊琛ㄤ娇瀹冧滑鍚屾銆杩欎笉鏄鍒堕棶棰樸傝繖鏄竴涓閮ㄦ帴鍙i棶棰橀犳垚澶嶅埗澶辫触銆
2. 鐢--logs-slave-updates鍜--logs-bin閫夐」杩愯浠庢湇鍔″櫒銆傝繖浜涢夐」浣夸粠鏈嶅姟鍣ㄥ皢浠庝富鏈嶅姟鍣ㄦ帴鏀剁殑鏇存柊璁板叆鑷繁鐨勪簩杩涘埗鏃ュ織銆
3. 閲嶆柊璁剧疆澶嶅埗鐘舵佷箣鍓嶄繚瀛樻墍鏈夌殑璇佹嵁銆傚鏋滄垜浠病鏈変俊鎭垨鍙湁绮楃暐鐨勪俊鎭紝鍒欓毦浠ユ垨涓嶅彲鑳借窡韪棶棰樸傚簲鎼滈泦鐨勮瘉鎹负锛
路 鎵鏈変富鏈嶅姟鍣ㄧ殑浜岃繘鍒舵棩蹇
路 鎵鏈変粠鏈嶅姟鍣ㄧ殑浜岃繘鍒舵棩蹇
路 浣犲彂鐜伴棶棰樻椂涓绘湇鍔″櫒鐨SHOW MASTER STATUS鐨勮緭鍑
路 浣犲彂鐜伴棶棰樻椂涓绘湇鍔″櫒鐨SHOW SLAVE STATUS鐨勮緭鍑
路 涓绘湇鍔″櫒鍜屼粠鏈嶅姟鍣ㄧ殑閿欒鏃ュ織
4. 浣跨敤mysqlbinlog妫鏌ヤ簩杩涘埗鏃ュ織銆備笅闈㈠懡浠ゅ簲鏈夊姪浜庡彂鐜版湁闂鐨勬煡璇紝渚嬪锛
5. shell> mysqlbinlog -j pos_from_slave_status \
6. /path/to/log_from_slave_status | head
鎼滈泦浜嗛棶棰樼殑璇佹嵁鍚庯紝棣栧厛浣滀负涓涓祴璇曟渚嬮殧绂诲紑銆傜劧鍚庡皢闂杈撳叆鎴戜滑鐨bug鏁版嵁搴擄紝浣嶇疆涓http://bugs.mysql.com/锛屽簲鎻愪緵灏藉彲鑳藉鐨勪俊鎭
褰撳皢澶氫釜鏈嶅姟鍣ㄩ厤缃负澶嶅埗涓绘湇鍔″櫒鏃讹紝浣跨敤auto_increment鏃跺簲閲囧彇鐗规畩姝ラ浠ラ槻姝㈤敭鍊煎啿绐侊紝鍚﹀垯鎻掑叆琛屾椂澶氫釜涓绘湇鍔″櫒浼氳瘯鍥句娇鐢ㄧ浉鍚岀殑auto_increment鍊笺
鏈嶅姟鍣ㄥ彉閲auto_increment_increment鍜auto_increment_offset鍙互甯姪鍗忚皟澶氫富鏈嶅姟鍣ㄥ鍒跺拰AUTO_INCREMENT鍒椼傛瘡涓彉閲忔湁涓涓粯璁ょ殑(骞朵笖鏄渶灏忕殑)鍊1锛屾渶澶у间负65,535銆
灏嗚繖浜涘彉閲忚缃负闈炲啿绐佺殑鍊硷紝褰撳湪鍚屼竴涓〃涓绘彃鍏ユ柊琛屾椂锛屽涓绘湇鍔″櫒閰嶇疆涓荤殑鏈嶅姟鍣ㄥ皢涓嶄細涓AUTO_INCREMENT鍊煎啿绐併
杩欎袱涓彉閲忚繖鏍峰奖鍝AUTO_INCREMENT鍒楋細
路 auto_increment_increment鎺у埗鍒楀煎鍔犵殑闂撮殧銆備緥濡傦細
路 mysql> SHOW VARIABLES LIKE 'auto_inc%';
路 +--------------------------+-------+
路 | Variable_name | Value |
路 +--------------------------+-------+
路 | auto_increment_increment | 1 |
路 | auto_increment_offset | 1 |
路 +--------------------------+-------+
路 2 rows in set (0.00 sec)
路
路 mysql> CREATE TABLE autoinc1 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
路 Query OK, 0 rows affected (0.04 sec)
路
路 mysql> SET @auto_increment_increment=10;
路 Query OK, 0 rows affected (0.00 sec)
路
路 mysql> SHOW VARIABLES LIKE 'auto_inc%';
路 +--------------------------+-------+
路 | Variable_name | Value |
路 +--------------------------+-------+
路 | auto_increment_increment | 10 |
路 | auto_increment_offset | 1 |
路 +--------------------------+-------+
路 2 rows in set (0.01 sec)
路
路 mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
路 Query OK, 4 rows affected (0.00 sec)
路 Records: 4 Duplicates: 0 Warnings: 0
路
路 mysql> SELECT col FROM autoinc1;
路 +-----+
路 | col |
路 +-----+
路 | 1 |
路 | 11 |
路 | 21 |
路 | 31 |
路 +-----+
路 4 rows in set (0.00 sec)
(杩欓噷娉ㄦ槑濡備綍浣跨敤SHOW VARIABLES浠ヨ幏寰楄繖浜涘彉閲忕殑褰撳墠鍊硷級銆
路 auto_increment_offset纭畾AUTO_INCREMENT鍒楀肩殑璧风偣銆傚奖鍝嶅埌鍦ㄥ鍒惰缃富鍙互鏈夊灏戜富鏈嶅姟鍣(渚嬪灏嗚鍊艰缃负10琛ㄧず璁剧疆鍙互鏀寔10涓湇鍔″櫒)銆
鑰冭檻涓嬮潰鐨勫懡浠わ紝鍋囧畾鍦ㄥ墠闈㈡墍绀虹ず渚嬩腑鐨勭浉鍚岀殑浼氳瘽涓墽琛岃繖浜涘懡浠わ細
mysql> SET @auto_increment_offset=5;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 5 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql> CREATE TABLE autoinc2 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.06 sec)
mysql> INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM autoinc2;
+-----+
| col |
+-----+
| 5 |
| 15 |
| 25 |
| 35 |
+-----+
4 rows in set (0.02 sec)
璇︾粏淇℃伅鍙傝5.3.3鑺傦紝鈥滄湇鍔″櫒绯荤粺鍙橀噺鈥銆
杩欐槸MySQL鍙傝冩墜鍐岀殑缈昏瘧鐗堟湰锛屽叧浜嶮ySQL鍙傝冩墜鍐岋紝璇疯闂dev.mysql.com銆 鍘熷鍙傝冩墜鍐屼负鑻辨枃鐗堬紝涓庤嫳鏂囩増鍙傝冩墜鍐岀浉姣旓紝鏈炕璇戠増鍙兘涓嶆槸鏈鏂扮殑銆