|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL对硬件的较低要求是其最大的优势之一,不过需要注意的是:内存越多越好,因为所有的重要数据存储都在内存中完成。mysql<pstyle="TEXT-INDENT:2em">6MySQL同步<pstyle="TEXT-INDENT:2em">同步功效在MySQL3.23.15就入手下手引进了,它能够把一个MySQL服务器上的数据复制到另外一个服务器上往。本章形貌了MySQL的各类复制特征。先容了同步的观点,怎样设置同步服务器,和可用服务器的参照。还供应了一系列的罕见成绩及其谜底,疑问解答。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">"14.6ReplicationStatements"中先容了同步相干的SQL语句语法。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">我们倡议常常会见"http://www.mysql.com"常常浏览本章的最新内容。同步功效一向在改善,我们常常把这部分的手册更新到以后的最新内容。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.1同步先容<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">MySQL3.23.15及更高的版本撑持单向同步。一个服务器作为master(主服务器),一个大概多个服务器作为slave(从服务器)。master服务器把更新的内容写到二进制日记(binarylog或binlog)中,而且保护了一个索引文件来纪录日记轮回的情形。这些日记中的更新部分会被发送到slave服务器。一个slave毗连到master以后,它关照master最初一次乐成增量更新的日记地位。slave会找出一切从谁人时候入手下手的更新操纵,然后堵塞并守候master发送新的更新操纵。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">假如想要做一个同步服务器链的话,slave同时也能够作为master。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">注重,启用同步后,一切要同步的更新操纵都必需在master上实行。不然,必需注重不要形成用户在master上的更新和在slave上的更新引发抵触。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">单向同步的优点是妥当,高速,体系易办理:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">有了master/slave机制后,就更妥当了。当master上产生成绩时,能够把slave作为备用切换已往。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">能够在slave和master之间分管一些查询,这就可以减速呼应工夫。SELECT查询就能够在slave上实行以削减master的负载。更新数据的语句则要放在mater上实行以坚持master和slave的同步。当非更新操纵占多半时,负载平衡就很无效了,不外这只是一般情形而言。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">另外一个优点是能够在slave上备份数据,无需搅扰master。备份数据时master还是持续运作。概况请看"5.7.1DatabaseBackups"。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.2同步机制完成概述<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">MySQL同步机制基于master把一切对数据库的更新、删除等)都纪录在二进制日记里。因而,想要启用同步机制,在master就必需启用二进制日记。概况请看"5.9.4TheBinaryLog"。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">每一个slave承受来自master上在二进制日记中纪录的更新操纵,因而在slave上实行了这个操纵的一个拷贝。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">应当十分主要地意想到,二进制日记只是从启用二进制日记入手下手的时候才纪录更新操纵的。一切的slave必需在启用二进制日记时把master上已存在的数据拷贝过去。假如运转同步时slave上的数据和master上启用二进制日记时的数据纷歧致的话,那末slave同步就会失利。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">把master上的数据拷贝过去的办法之一其实slave上实行LOADDATAFROMMASTER语句。不外要注重,LOADDATAFROMMASTER是从MySQL4.0.0以后才入手下手能够用的,并且只撑持master上的MyISAM范例表。一样地,这个操纵必要一个全局的读锁,如许的话传送日记到slave的时分在master上就不会有更新操纵了。当完成了自在锁表热备份时(在MySQL5.0中),全局读锁就没需要了。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">因为有这些限定,因而我们倡议只在master上相干数据对照小的时分才实行LOADDATAFROMMASTER语句,大概在master上同意一个长工夫的读锁。因为每一个体系之间LOADDATAFROMMASTER的速率各纷歧样,一个对照好的权衡划定规矩是每秒能拷贝1MB数据。这只是的大略的估量,不外master和slave都是奔跑700MHz的呆板且用100MBit/s收集毗连时就可以到达这个速率了。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">slave上已完全拷贝master数据后,就能够毗连到master上然后守候处置更新了。假如master当机大概slave毗连断开,slave会按期实验毗连到master上直到能重连而且守候更新。重试的工夫距离由--master-connect-retry选项来把持,它的默许值是60秒。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">每一个slave都纪录了它封闭时的日记地位。msater是不晓得有几个slave毗连下去大概哪一个slave从甚么时分入手下手更新。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.3同步完成细节<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">MySQL同步功效由3个线程(master上1个,slave上2个)来完成。实行STARTSLAVE语句后,slave就创立一个I/O线程。I/O线程毗连到master上,并哀求master发送二进制日记中的语句。master创立一个线程来把日记的内容发送到slave上。这个线程在master上实行SHOWPROCESSLIST语句后的了局中的BinlogDump线程即是。slave上的I/O线程读取master的BinlogDump线程发送的语句,而且把它们拷贝到其数据目次下的中继日记(relaylogs)中。第三个是SQL线程,salve用它来读取中继日记,然后实行它们来更新数据。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">如上所述,每一个mster/slave上都有3个线程。每一个master上有多个线程,它为每一个slave毗连都创立一个线程,每一个slave只要I/O和SQL线程。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">在MySQL4.0.2之前,同步只需2个线程(master和slave各一个)。slave上的I/O和SQL线程兼并成一个了,它不利用中继日记。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">slave上利用2个线程的长处是,把读日记和实行分隔成2个自力的义务。实行义务假如慢的话,读日记义务不会随着慢上去。比方,假如slave中断了一段工夫,那末I/O线程能够在slave启动后很快地从master上读取全体日记,只管SQL线程大概掉队I/O线程好几的小时。假如slave在SQL线程没全体实行完就中断了,但I/O线程却已把一切的更新日记都读取而且保留在当地的中继日记中了,因而在slave再次启动后就会持续实行它们了。这就同意在master上扫除二进制日记,由于slave已无需往master读取更新日记了。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">实行SHOWPROCESSLIST语句就会告知我们所体贴的master和slave上产生的情形。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">下例申明了SHOWPROCESSLIST了局中的3个线程是甚么样的。这是在MySQL4.0.15及更新上实行SHOWPROCESSLIST的了局,State字段的内容已比旧版本显现的更成心义了。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">在master上,SHOWPROCESSLIST的了局以下:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">mysql>SHOWPROCESSLISTG<pstyle="TEXT-INDENT:2em">***************************1.row***************************<pstyle="TEXT-INDENT:2em">Id:2<pstyle="TEXT-INDENT:2em">User:root<pstyle="TEXT-INDENT:2em">Host:localhost:32931<pstyle="TEXT-INDENT:2em">db:NULL<pstyle="TEXT-INDENT:2em">Command:BinlogDump<pstyle="TEXT-INDENT:2em">Time:94<pstyle="TEXT-INDENT:2em">State:Hassentallbinlogtoslave;waitingforbinlogto<pstyle="TEXT-INDENT:2em">beupdated<pstyle="TEXT-INDENT:2em">Info:NULL<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">在这里,线程2是为一个slave毗连创立的。了局标明一切未完成的更新日记已都发送到slave了,master正守候新的更新日记产生。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">在slave上,SHOWPROCESSLIST的了局以下:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">mysql>SHOWPROCESSLISTG<pstyle="TEXT-INDENT:2em">***************************1.row***************************<pstyle="TEXT-INDENT:2em">Id:10<pstyle="TEXT-INDENT:2em">User:systemuser<pstyle="TEXT-INDENT:2em">Host:<pstyle="TEXT-INDENT:2em">db:NULL<pstyle="TEXT-INDENT:2em">Command:Connect<pstyle="TEXT-INDENT:2em">Time:11<pstyle="TEXT-INDENT:2em">State:Waitingformastertosendevent<pstyle="TEXT-INDENT:2em">Info:NULL<pstyle="TEXT-INDENT:2em">***************************2.row***************************<pstyle="TEXT-INDENT:2em">Id:11<pstyle="TEXT-INDENT:2em">User:systemuser<pstyle="TEXT-INDENT:2em">Host:<pstyle="TEXT-INDENT:2em">db:NULL<pstyle="TEXT-INDENT:2em">Command:Connect<pstyle="TEXT-INDENT:2em">Time:11<pstyle="TEXT-INDENT:2em">State:Hasreadallrelaylog;waitingfortheslaveI/O<pstyle="TEXT-INDENT:2em">threadtoupdateit<pstyle="TEXT-INDENT:2em">Info:NULL<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">这标明线程10是I/O线程,它正毗连到master上;线程11是SQL线程,它实行中继日记中的更新操纵。如今,这2个线程都处于余暇形态,正守候新的更新日记。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">注重,Time字段的值告知我们slave上的日记比master晚了多久。概况请看"6.9ReplicationFAQ"。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.3.1Master同步线程形态<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以以下出了master的BinlogDump线程State字段中最多见的几种形态。假如在master上没有BinlogDump线程,那末同步就没有在运转。也就是说,没有slave毗连下去。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Sendingbinlogeventtoslave<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">事务是由二进制日记组成,一个事务一般由更新语句加上其他信息。线程读取到一个事务并正发送到slave上。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Finishedreadingonebinlog;switchingtonextbinlog<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">读取完了一个二进制日记,正切换到下一个。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Hassentallbinlogtoslave;waitingforbinlogtobeupdated<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">已读取完整部未完成更新日记,而且全体都发送到slave了。它处于余暇形态,正守候在master上实行新的更新操纵以在二进制日记中发生新的事务,然后读取它们。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Waitingtofinalizetermination<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以后线程中断了,这个工夫很短。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.3.2Slave的I/O线程形态<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以以下出了slave的I/O线程State字段中最多见的几种形态。从MySQL4.1.1入手下手,这个形态在实行SHOWSLAVESTATUS语句了局的Slave_IO_State字段也会呈现。这意味着能够只实行SHOWSLAVESTATUS语句就可以懂得到更多的信息。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Connectingtomaster<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">该线程证实验毗连到master上。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Checkingmasterversion<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">断定毗连到master后呈现的一个长久的形态。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Registeringslaveonmaster<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">断定毗连到master后呈现的一个长久的形态。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Requestingbinlogdump<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">断定毗连到master后呈现的一个长久的形态。该线程向master发送一个哀求,告知它要哀求的二进制文件和入手下手地位。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Waitingtoreconnectafterafailedbinlogdumprequest<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">假如二进制日记转储(binarylogdump)哀求失利了(因为毗连断开),该线程在休眠时进进这个形态,并按期重连。重连的工夫距离由--master-connect-retry选项来指定。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Reconnectingafterafailedbinlogdumprequest<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">该线程正实验重连到master。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Waitingformastertosendevent<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">已毗连到master,正守候它发送二进制日记。假如master闲置时,这个形态大概会延续较长工夫,假如它守候凌驾slave_read_timeout秒,就会产生超时。这时候,它就会思索断开毗连,然后实验重连。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Queueingmastereventtotherelaylog<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">已读取到一个事务,正把它拷贝到中继日记中以备SQL线程处置。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Waitingtoreconnectafterafailedmastereventread<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">读日记时产生毛病(因为毗连断开)。该线程在重连之前休眠master-connect-retry秒。<pstyle="TEXT-INDENT:2em">Reconnectingafterafailedmastereventread<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">正实验重连到master。当毗连断定后,形态就酿成Waitingformastertosendevent。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">WaitingfortheslaveSQLthreadtofreeenoughrelaylogspace<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">relay_log_space_limit的值非零,中继日记的巨细总和凌驾这个值了。I/O线程守候SQL线程先处置中继日记然后删除它们以开释充足的空间。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Waitingforslavemutexonexit<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以后线程中断了,这个工夫很短。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.3.3Slave的SQL线程形态<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以以下出了slave的SQL线程State字段中最多见的几种形态:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Readingeventfromtherelaylog<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">从中继日记里读到一个事务以备实行。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Hasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">已处置完中继日记中的全体事务了,正守候I/O线程写进更新的日记。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">Waitingforslavemutexonexit<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以后线程中断了,这个工夫很短。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">SQL线程的State字段偶然候也多是一个SQL语句。这意味着它从中继日记中读取到一个事务了,从中提掏出SQL语句,并实行它。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">6.3.4中继日记及形态文件<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">默许地,中继日记的名字格局为`host_name-relay-bin.nnn`,host_name是服务器的主机名,nnn是序号。中继日记是依据按次的序号来创立的,从000001(MySQL4.0及更旧是001)入手下手。slave上用一个索引文件来跟踪以后正在利用的中继日记。默许的中继日记索引文件名是`host_name-relay-bin.index`。默许地,这个文件位于slave的数据文件目次下。默许文件名能够依据的体系选项--relay-log和--relay-log-index来交换。概况请看"6.8ReplicationStartupOptions"。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">中继日记和二进制日记的格局一样,因而也能够用mysqlbinlog来读取。当SQL线程读取完中继日记中的全体事务后就不再必要它了,会主动删除它。中继日记没有显式的删除机制,由于SQL线程会主动存眷这个。不外,从MySQL4.0.14入手下手,实行FLUSHLOGS的话就会轮转(rotate)中继日记,会让SQL线程删除它们。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">鄙人列前提中会创立一个新的中继日记:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">slave启动后,I/O线程第一次启动(在MySQL5.0中,每次I/O线程启动后城市新建一其中继日记,而不但是第一次启动时)。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">革新日记时;比方,实行FLUSHLOGS语句或运转mysqladminflush-logs命令(从MySQL4.0.14入手下手才会创立新中继日记)。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">以后的中继日记巨细太年夜了;"太年夜了"是这么判别的:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">max_relay_log_size,假如max_relay_log_size>0的话<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">max_binlog_size,假如max_relay_log_size=0或MySQL低于4.0.14<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">slave会在数据文件目次下创立两个分外的文件。它们是形态文件,名字默许为`master.info`and`relay-log.info`。它们的内容跟实行SHOWSLAVESTATUS语句的了局相似。概况请看"14.6.2SQLStatementsforControllingSlaveServers"。因为是磁盘上的文件,它们在slave封闭后还会留着。下一次slave启动时,就会读取这两个文件来判别从master读取到二进制日记的甚么地位了,处置中继日记到甚么地位了。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">`master.info`文件由来I/O线程更新。在MySQL4.1之前,文件的内容和实行SHOWSLAVESTATUS语句了局中绝对应的字段值一样,以下:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">LineDescription1Master_Log_File2Read_Master_Log_Pos3Master_Host4Master_User5Password(notshownbySHOWSLAVESTATUS)6Master_Port7Connect_Retry<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">从MySQL4.1入手下手,文件内容还包含了SSL选项:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">LineDescription<pstyle="TEXT-INDENT:2em">LineDescription1Numberoflinesinthefile2Master_Log_File3Read_Master_Log_Pos4Master_Host5Master_User6Password(notshownbySHOWSLAVESTATUS)7Master_Port8Connect_Retry9Master_SSL_Allowed10Master_SSL_CA_File11Master_SSL_CA_Path12Master_SSL_Cert13Master_SSL_Cipher14Master_SSL_Key<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">`relay-log.info`文件由SQL线程来更新。文件的内容和实行SHOWSLAVESTATUS语句了局中绝对应的字段值一样:<pstyle="TEXT-INDENT:2em">LineDescription1Relay_Log_File2Relay_Log_Pos3Relay_Master_Log_File4Exec_Master_Log_Pos<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">备份slave数据时,要把这两个文件也备份起来,和中继日记一道。想要恢复slave时就用失掉它们了。假如丧失了中继日记,可是`relay-log.info`文件还存在,那末就能够判别出SQL线程实行了几master二进制日记。然后实行CHANGEMASTERTO语句,带上MASTER_LOG_FILE和MASTER_LOG_POS选项告知slave要从master的二进制日记哪一个地位从头读取。固然了,这请求master上相干的二进制日记都还留着。<pstyle="TEXT-INDENT:2em">假如slav盘算同步LOADDATAINFILE语句,那末也要备份对应目次下的任何`SQL_LOAD-*`文件。这能够在LOADDATAINFILE被中止后持续坚持同步。这个目次由--slave-load-tmpdir选项来指定。默许地,假如没有指定的话,它的值就是变量tmpdir的值。
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。 |
|