【MySQL】MySQL主從之change master語法

前言:在我們配置主從復制的時候,在從庫上會用到change master語句,該語句用于確定主庫的IP、用戶名、密碼、binlog文件、binlog位置等信息。

語法

change master基本語法以及參數(shù)如下:

CHANGE MASTER TO option [, option] ...  
  
option:  
    MASTER_BIND = 'interface_name'  
  | MASTER_HOST = 'host_name'  
  | MASTER_USER = 'user_name'  
  | MASTER_PASSWORD = 'password'  
  | MASTER_PORT = port_num  
  | MASTER_CONNECT_RETRY = interval  
  | MASTER_RETRY_COUNT = count  
  | MASTER_DELAY = interval  
  | MASTER_HEARTBEAT_PERIOD = interval  
  | MASTER_LOG_FILE = 'master_log_name'  
  | MASTER_LOG_POS = master_log_pos  
  | MASTER_AUTO_POSITION = {0|1}  
  | RELAY_LOG_FILE = 'relay_log_name'  
  | RELAY_LOG_POS = relay_log_pos  
  | MASTER_SSL = {0|1}  
  | MASTER_SSL_CA = 'ca_file_name'  
  | MASTER_SSL_CAPATH = 'ca_directory_name'  
  | MASTER_SSL_CERT = 'cert_file_name'  
  | MASTER_SSL_CRL = 'crl_file_name'  
  | MASTER_SSL_CRLPATH = 'crl_directory_name'  
  | MASTER_SSL_KEY = 'key_file_name'  
  | MASTER_SSL_CIPHER = 'cipher_list'  
  | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}  
  | IGNORE_SERVER_IDS = (server_id_list)  
  
server_id_list:  
    [server_id [, server_id] ... ]

執(zhí)行change master語句前如果從機上slave io及sql線程已經(jīng)啟動,需要先停止(執(zhí)行stop slave)。
change master to后面不指定某個參數(shù)的話,該參數(shù)保留原值或默認值。所以后續(xù)如果某些參數(shù)沒有更改的話,change master to后無需帶該參數(shù),例如我們只改變了用于復制的用戶密碼,那么change master to只需針對MASTER_PASSWORD選項作出修改即可,例如:

mysql> stop slave;   
mysql> change master to master_password='new_password';  
mysql> start slave;   
參數(shù)解釋

MASTER_HOST, MASTER_USER, MASTER_PASSWORD,MASTER_PORT四個選項提供了slave從機連接到master主機的信息。

MASTER_HOST 與 MASTER_PORT:
分別代表master主機名(或IP地址)及mysql實例端口號。
注意: 復制不能使用unix socet文件,必須使用tcp/ip 連接到master。
如果我們指定MASTER_HOST 與 MASTER_PORT參數(shù),slave會認為master與之前的不是同一個(即便MASTER_HOST 與 MASTER_PORT所帶的參數(shù)與之前相同),之前指定的master的binlog文件名及位置將不再適用。所以如果我們在后面不明確指定MASTER_LOG_FILE 和 MASTER_LOG_POS 的參數(shù)值,那么MASTER_LOG_FILE='' 以及 MASTER_LOG_POS=4 將會默認的追加到后面。
設置MASTER_HOST為空(MASTER_HOST=' ')與不設置該參數(shù)是不同的,mysql5.5開始,將MASTER_HOST設為空將會失敗并報錯【驗證】
MASTER_USER 與 MASTER_PASSWORD:
連接到master主機復制賬戶所對應的用戶名及密碼。
mysql5.6.4及其后續(xù)版本,MASTER_USER不能設置為空;當明確設置MASTER_PASSWORD參數(shù)時,MASTER_USER 不能設置為空或不進行設置【驗證2.1實例】。
MASTER_PASSWORD參數(shù)對應的密碼長度最大為32位字符【驗證】,如果字符超長(超過32位),語句會執(zhí)行成功,但超出的長度會被截取掉,mysql復制的這個問題在mysql5.7版本中得到了修復。
###### MASTER_LOG_FILE 與 MASTER_LOG_POS:
這兩項確定slave的io線程下次開始執(zhí)行時從master開始讀取的位置坐標,RELAY_LOG_FILE 與 RELAY_LOG_POS這兩項確定slave的sql線程下次開始執(zhí)行時從relay log開始讀取的位置坐標。如果我們指定了MASTER_LOG_FILE 或 MASTER_LOG_POS中的任意一項,就不能再指定RELAY_LOG_FILE 或 RELAY_LOG_POS,也不能指定MASTER_AUTO_POSITION = 1 (mysql5.6.5及其后續(xù)版本)。如果二者都沒有指定,slave使用上次slave sql線程保存的位置。
RELAY_LOG_FILE 與 RELAY_LOG_POS:
change master to操作刪除所有relay log文件并創(chuàng)建一個新的,除非我們指定RELAY_LOG_FILE 或 RELAY_LOG_POS。如果全局變量relay_log_purge設置為0(默認為ON),relay log也將會保持。
mysql5.6.2之前,RELAY_LOG_FILE需要配置絕對路徑,mysql5.6.2及其后續(xù)版本,可以配置相對路徑(相對mysql的data目錄)。
MASTER_AUTO_POSITION:
該參數(shù)在mysql5.6.5版本引入,如果進行change master to時使用MASTER_AUTO_POSITION = 1,slave連接master將使用基于GTID的復制協(xié)議。
使用基于GTID協(xié)議的復制,slave會告訴master它已經(jīng)接收到或執(zhí)行了哪些事務。計算這個集,slave需要讀取全局參數(shù)gtid_executed以及通過show slave status獲取的參數(shù)Retrieved_gtid_set。
結(jié)果集作為初次握手的一部分,發(fā)送到master,master發(fā)回它已經(jīng)執(zhí)行的且不在結(jié)果集這部分的所有事務。如果這些事務在master的binlog文件中已經(jīng)被清除,master將會發(fā)送一個ER_MASTER_HAS_PURGED_REQUIRED_GTIDS錯誤信息到slave,復制將不會開啟。
使用基于GTID的復制時(MASTER_AUTO_POSITION = 1),首先要開啟gtid_mode(在my.cnf中設置gtid-mode = ON),MASTER_LOG_FILE 與 MASTER_LOG_POS也不能使用,否則會報錯。
使用GTID后想要恢復到老的基于文件的復制協(xié)議,在change master to時需要指定MASTER_AUTO_POSITION = 0以及MASTER_LOG_FILE 或 MASTER_LOG_POSITION中至少一項。
MASTER_CONNECT_RETRY:
重連到master時的超時等待時間,默認為60秒。
MASTER_RETRY_COUNT:
mysql5.6.1引入該參數(shù),限制重連次數(shù)以及更新show slave status輸出的Master_Retry_Count列。默認值是24 * 3600 = 86400。MASTER_RETRY_COUNT主要用于替代mysqld服務器參數(shù) --master-retry-count(該參數(shù)在mysql5.6.1及其后續(xù)版本廢除)。MASTER_RETRY_COUNT = 0表示重連次數(shù)無限制。
MASTER_HEARTBEAT_PERIOD:
設置復制心跳的周期,取值范圍為0 到 4294967秒。精確度可以達到毫秒,最小的非0值是0.001秒。心跳信息由master在主機binlog日志文件在設定的間隔時間內(nèi)沒有收到新的事件時發(fā)出,以便slave知道m(xù)aster是否正常。
slave連接到master后,該參數(shù)可通過mysql.slave_master_info表查看。默認值為slave_net_timeout的值除以2,設置為0表示完全的禁用心跳。
MASTER_DELAY:
默認值為0,取值范圍為0至2^31–1,表示slave至少落后master的復制時間。來自master的事件不直接執(zhí)行,而是至少等到master執(zhí)行完該該事件MASTER_DELAY所指定的時間間隔后才執(zhí)行。
MASTER_BIND:
在slave復制從機多網(wǎng)絡接口的情況下使用,以確定用哪一個slave網(wǎng)絡接口連接到master。該參數(shù)在mysql5.6.2版本加入,同時也支持MySQL Cluster NDB 7.3.1及其后續(xù)版本。
該參數(shù)可通過show slave status的Master_Bind列進行查看,如果啟動mysql時指定了--master-info-repository=TABLE,也可通過mysql.slave_master_info表查看(Bind列)。
IGNORE_SERVER_IDS = (server_id_list):

server_id_list: [server_id [, server_id] ... ]
后面接以逗號分隔的0個或多個server-id,主要用于多主復制或環(huán)形復制的情況,處于復制鏈條中間的服務器異常,可以通過以下語句跳過出問題的MySQL實例。

mysql> CHANGE MASTER TO MASTER_HOST=xxx IGNORE_SERVER_IDS= [server_id [, server_id] ... ]  

清除忽略的主機列表使用如下命令:

mysql> CHANGE MASTER TO IGNORE_SERVER_IDS = ();  
MASTER_SSL*:
該選項提供使用ssl連接的信息。它們保存在master的信息表,即使slave沒有使用SSL選項編譯,這些參數(shù)依然可以更改,只不過會被忽略。MASTER_SSL_CRL 與 MASTER_SSL_CRLPATH 在 MySQL 5.6.3版本加入。

原文地址:
http://blog.csdn.net/jesseyoung/article/details/41942809

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內(nèi)容

  • 1、復制概述: MySQL內(nèi)建的復制功能是構(gòu)建大型,高性能應用程序的基礎。將mysql的數(shù)據(jù)分布到多個系統(tǒng)上去,這...
    魔法師_閱讀 5,626評論 0 5
  • 從開始放假回來的那一刻,自己先前做的計劃全部泡湯。馬不停蹄的兼職,家務,小孩,應酬,手機,吃吃喝喝,每一天過得就像...
    叫我梅芳就好閱讀 265評論 0 0
  • 鮮血染紅了盔甲 盼望再看你一眼不變的容顏 前世今生的約定 不過一場過眼云煙 為你披甲上馬 斬殺千軍萬馬 出征時刻 ...
    夢之幻舞閱讀 160評論 0 0
  • 今天是周六,也是參加“21天中國式眾籌原創(chuàng)挑戰(zhàn)”第七天,是不是可以讓思想開開小差,寫點其它話題呢?連上帝他老人家都...
    Hao思嘉閱讀 311評論 0 1
  • 成長,是一個殘忍又美好的詞語,當我們作為過來人再去看正在走或馬上要走你走過的路時,你總是忍不住要把你遇到的問題告訴...
    梧桐雨兒閱讀 356評論 0 1