【MySQL】MySQL主从之change master语法

前言:在我们配置主从复制的时候,在从库上会用到change master语句,该语句用于确定主库的IP、用户名、密码、binlog文件、binlog位置等信息。

语法

change master基本语法以及参数如下:

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] ... ]

执行change master语句前如果从机上slave io及sql线程已经启动,需要先停止(执行stop slave)。
change master to后面不指定某个参数的话,该参数保留原值或默认值。所以后续如果某些参数没有更改的话,change master to后无需带该参数,例如我们只改变了用于复制的用户密码,那么change master to只需针对MASTER_PASSWORD选项作出修改即可,例如:

mysql> stop slave;   
mysql> change master to master_password='new_password';  
mysql> start slave;   
参数解释

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参数,slave会认为master与之前的不是同一个(即便MASTER_HOST 与 MASTER_PORT所带的参数与之前相同),之前指定的master的binlog文件名及位置将不再适用。所以如果我们在后面不明确指定MASTER_LOG_FILE 和 MASTER_LOG_POS 的参数值,那么MASTER_LOG_FILE='' 以及 MASTER_LOG_POS=4 将会默认的追加到后面。
设置MASTER_HOST为空(MASTER_HOST=' ')与不设置该参数是不同的,mysql5.5开始,将MASTER_HOST设为空将会失败并报错【验证】
MASTER_USER 与 MASTER_PASSWORD:
连接到master主机复制账户所对应的用户名及密码。
mysql5.6.4及其后续版本,MASTER_USER不能设置为空;当明确设置MASTER_PASSWORD参数时,MASTER_USER 不能设置为空或不进行设置【验证2.1实例】。
MASTER_PASSWORD参数对应的密码长度最大为32位字符【验证】,如果字符超长(超过32位),语句会执行成功,但超出的长度会被截取掉,mysql复制的这个问题在mysql5.7版本中得到了修复。
###### MASTER_LOG_FILE 与 MASTER_LOG_POS:
这两项确定slave的io线程下次开始执行时从master开始读取的位置坐标,RELAY_LOG_FILE 与 RELAY_LOG_POS这两项确定slave的sql线程下次开始执行时从relay log开始读取的位置坐标。如果我们指定了MASTER_LOG_FILE 或 MASTER_LOG_POS中的任意一项,就不能再指定RELAY_LOG_FILE 或 RELAY_LOG_POS,也不能指定MASTER_AUTO_POSITION = 1 (mysql5.6.5及其后续版本)。如果二者都没有指定,slave使用上次slave sql线程保存的位置。
RELAY_LOG_FILE 与 RELAY_LOG_POS:
change master to操作删除所有relay log文件并创建一个新的,除非我们指定RELAY_LOG_FILE 或 RELAY_LOG_POS。如果全局变量relay_log_purge设置为0(默认为ON),relay log也将会保持。
mysql5.6.2之前,RELAY_LOG_FILE需要配置绝对路径,mysql5.6.2及其后续版本,可以配置相对路径(相对mysql的data目录)。
MASTER_AUTO_POSITION:
该参数在mysql5.6.5版本引入,如果进行change master to时使用MASTER_AUTO_POSITION = 1,slave连接master将使用基于GTID的复制协议。
使用基于GTID协议的复制,slave会告诉master它已经接收到或执行了哪些事务。计算这个集,slave需要读取全局参数gtid_executed以及通过show slave status获取的参数Retrieved_gtid_set。
结果集作为初次握手的一部分,发送到master,master发回它已经执行的且不在结果集这部分的所有事务。如果这些事务在master的binlog文件中已经被清除,master将会发送一个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后想要恢复到老的基于文件的复制协议,在change master to时需要指定MASTER_AUTO_POSITION = 0以及MASTER_LOG_FILE 或 MASTER_LOG_POSITION中至少一项。
MASTER_CONNECT_RETRY:
重连到master时的超时等待时间,默认为60秒。
MASTER_RETRY_COUNT:
mysql5.6.1引入该参数,限制重连次数以及更新show slave status输出的Master_Retry_Count列。默认值是24 * 3600 = 86400。MASTER_RETRY_COUNT主要用于替代mysqld服务器参数 --master-retry-count(该参数在mysql5.6.1及其后续版本废除)。MASTER_RETRY_COUNT = 0表示重连次数无限制。
MASTER_HEARTBEAT_PERIOD:
设置复制心跳的周期,取值范围为0 到 4294967秒。精确度可以达到毫秒,最小的非0值是0.001秒。心跳信息由master在主机binlog日志文件在设定的间隔时间内没有收到新的事件时发出,以便slave知道master是否正常。
slave连接到master后,该参数可通过mysql.slave_master_info表查看。默认值为slave_net_timeout的值除以2,设置为0表示完全的禁用心跳。
MASTER_DELAY:
默认值为0,取值范围为0至2^31–1,表示slave至少落后master的复制时间。来自master的事件不直接执行,而是至少等到master执行完该该事件MASTER_DELAY所指定的时间间隔后才执行。
MASTER_BIND:
在slave复制从机多网络接口的情况下使用,以确定用哪一个slave网络接口连接到master。该参数在mysql5.6.2版本加入,同时也支持MySQL Cluster NDB 7.3.1及其后续版本。
该参数可通过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,主要用于多主复制或环形复制的情况,处于复制链条中间的服务器异常,可以通过以下语句跳过出问题的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选项编译,这些参数依然可以更改,只不过会被忽略。MASTER_SSL_CRL 与 MASTER_SSL_CRLPATH 在 MySQL 5.6.3版本加入。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 1、复制概述: MySQL内建的复制功能是构建大型,高性能应用程序的基础。将mysql的数据分布到多个系统上去,这...
    魔法师_阅读 5,591评论 0 5
  • 从开始放假回来的那一刻,自己先前做的计划全部泡汤。马不停蹄的兼职,家务,小孩,应酬,手机,吃吃喝喝,每一天过得就像...
    叫我梅芳就好阅读 257评论 0 0
  • 鲜血染红了盔甲 盼望再看你一眼不变的容颜 前世今生的约定 不过一场过眼云烟 为你披甲上马 斩杀千军万马 出征时刻 ...
    梦之幻舞阅读 155评论 0 0
  • 今天是周六,也是参加“21天中国式众筹原创挑战”第七天,是不是可以让思想开开小差,写点其它话题呢?连上帝他老人家都...
    Hao思嘉阅读 305评论 0 1
  • 成长,是一个残忍又美好的词语,当我们作为过来人再去看正在走或马上要走你走过的路时,你总是忍不住要把你遇到的问题告诉...
    梧桐雨儿阅读 346评论 0 1