mysql 主從服務(wù)器的簡(jiǎn)單配置
更新時(shí)間:2009年05月08日 23:15:21 作者:
首先呢,需要有兩個(gè)mysql服務(wù)器。如果做測(cè)試的話可以在同一臺(tái)機(jī)器上裝兩個(gè)mysql服務(wù)程序,注意要兩個(gè)運(yùn)行程序的端口不能一樣。我用的是一個(gè)是默認(rèn)的3306,從服務(wù)器用的是3307端口。
首先在主服務(wù)器上添加可登陸的用戶權(quán)限:
GRANT REPLICATE SLAVE on *.* to 'username'@'host' identified by 'password'
然后設(shè)置主服務(wù)器的my.ini文件。
server-id=1 #主服務(wù)器標(biāo)識(shí)
log-bin #啟用二進(jìn)制日志
binlog-do-bin=databasename #要備份的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置過程
binlog-ignore-db=databasename #不備份的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置過程
從服務(wù)器的配置
server-id=2 #從服務(wù)器標(biāo)識(shí),范圍1---2E32-1
master-host=hostname/hostip #主服務(wù)器ip或主機(jī)名稱
master-user=username #登陸主服務(wù)器的用戶名
master-password=password #登陸主服務(wù)器的密碼
master-port = portid #主服務(wù)器的運(yùn)行端口號(hào)
replicate-do-db=databasename #要同步的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置過程
replicate-ignore=db=databasename #不同步的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置
log-bin #從服務(wù)器啟動(dòng)二進(jìn)制日志記錄
master-connect-retry = seconds #與主服務(wù)器斷開連接后,重新自動(dòng)連接的時(shí)間
skip-start-slave #防止隨服務(wù)器的啟動(dòng)而啟動(dòng)同步程序
至此,一個(gè)簡(jiǎn)單的主從服務(wù)器配置完成。
在master服務(wù)器端可運(yùn)行的命令:
show master status;#查看主服務(wù)器的運(yùn)行狀態(tài)
show slave hosts;#查看從服務(wù)器主機(jī)列表
補(bǔ)充:
在從服務(wù)器上使用show slave status
Slave_IO_Running,為No,則說明IO_THREAD沒有啟動(dòng),請(qǐng)執(zhí)行slave start [IO_THREAD]
Slave_SQL_Running為No則復(fù)制出錯(cuò),查看Last_error字段排除錯(cuò)誤后執(zhí)行slave start [SQL_THREAD]
查看Slave_IO_State字段
空 //復(fù)制沒有啟動(dòng)
Connecting to master//沒有連接上master
Waiting for master to send event//已經(jīng)連上
補(bǔ)充:可以使用LOAD DATA FROM MASTER語(yǔ)句來建立slave。但有約束條件:
數(shù)據(jù)表要全部是MyISAM表,必須有SUPER權(quán)限,master的復(fù)制用戶必須具備RELOAD和SUPER權(quán)限。
在master端執(zhí)行RESET MASTER清除已有的日志變更,
此時(shí)slave端會(huì)因?yàn)檎也坏絤aster日志無法啟動(dòng)IO_THREAD,請(qǐng)清空data目錄下
relay-log.info,hosname-relay-bin*等文件重新啟動(dòng)mysql
中繼日志文件默認(rèn)的文件為hostname-relay-bin.nnn和hostname-relay-bin.index??捎脧姆?wù)器的--
relay-log和--relay-log-index選項(xiàng)修改。在從服務(wù)器中還有一個(gè)relay-log.info中繼信息文件,可用
--relay-log-info-file啟動(dòng)選項(xiàng)修改文件名。
雙機(jī)互備則是兩個(gè)mysql同時(shí)配置為master及slave
主服務(wù)器上的相關(guān)命令:
show master status
show slave hosts
show logs
show binlog events
purge logs to ''log_name''
purge logs before ''date''
reset master(老版本flush master)
set sql_log_bin=
從服務(wù)器上的相關(guān)命令:
slave start
slave stop
SLAVE STOP IO_THREAD //此線程把master段的日志寫到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此線程把寫到本地的日志應(yīng)用于數(shù)據(jù)庫(kù)
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //動(dòng)態(tài)改變master信息
PURGE MASTER [before ''date''] 刪除master端已同步過的日志
GRANT REPLICATE SLAVE on *.* to 'username'@'host' identified by 'password'
然后設(shè)置主服務(wù)器的my.ini文件。
server-id=1 #主服務(wù)器標(biāo)識(shí)
log-bin #啟用二進(jìn)制日志
binlog-do-bin=databasename #要備份的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置過程
binlog-ignore-db=databasename #不備份的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置過程
從服務(wù)器的配置
server-id=2 #從服務(wù)器標(biāo)識(shí),范圍1---2E32-1
master-host=hostname/hostip #主服務(wù)器ip或主機(jī)名稱
master-user=username #登陸主服務(wù)器的用戶名
master-password=password #登陸主服務(wù)器的密碼
master-port = portid #主服務(wù)器的運(yùn)行端口號(hào)
replicate-do-db=databasename #要同步的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置過程
replicate-ignore=db=databasename #不同步的數(shù)據(jù)庫(kù)名稱,多個(gè)可以重復(fù)該配置
log-bin #從服務(wù)器啟動(dòng)二進(jìn)制日志記錄
master-connect-retry = seconds #與主服務(wù)器斷開連接后,重新自動(dòng)連接的時(shí)間
skip-start-slave #防止隨服務(wù)器的啟動(dòng)而啟動(dòng)同步程序
至此,一個(gè)簡(jiǎn)單的主從服務(wù)器配置完成。
在master服務(wù)器端可運(yùn)行的命令:
show master status;#查看主服務(wù)器的運(yùn)行狀態(tài)
show slave hosts;#查看從服務(wù)器主機(jī)列表
補(bǔ)充:
在從服務(wù)器上使用show slave status
Slave_IO_Running,為No,則說明IO_THREAD沒有啟動(dòng),請(qǐng)執(zhí)行slave start [IO_THREAD]
Slave_SQL_Running為No則復(fù)制出錯(cuò),查看Last_error字段排除錯(cuò)誤后執(zhí)行slave start [SQL_THREAD]
查看Slave_IO_State字段
空 //復(fù)制沒有啟動(dòng)
Connecting to master//沒有連接上master
Waiting for master to send event//已經(jīng)連上
補(bǔ)充:可以使用LOAD DATA FROM MASTER語(yǔ)句來建立slave。但有約束條件:
數(shù)據(jù)表要全部是MyISAM表,必須有SUPER權(quán)限,master的復(fù)制用戶必須具備RELOAD和SUPER權(quán)限。
在master端執(zhí)行RESET MASTER清除已有的日志變更,
此時(shí)slave端會(huì)因?yàn)檎也坏絤aster日志無法啟動(dòng)IO_THREAD,請(qǐng)清空data目錄下
relay-log.info,hosname-relay-bin*等文件重新啟動(dòng)mysql
中繼日志文件默認(rèn)的文件為hostname-relay-bin.nnn和hostname-relay-bin.index??捎脧姆?wù)器的--
relay-log和--relay-log-index選項(xiàng)修改。在從服務(wù)器中還有一個(gè)relay-log.info中繼信息文件,可用
--relay-log-info-file啟動(dòng)選項(xiàng)修改文件名。
雙機(jī)互備則是兩個(gè)mysql同時(shí)配置為master及slave
主服務(wù)器上的相關(guān)命令:
show master status
show slave hosts
show logs
show binlog events
purge logs to ''log_name''
purge logs before ''date''
reset master(老版本flush master)
set sql_log_bin=
從服務(wù)器上的相關(guān)命令:
slave start
slave stop
SLAVE STOP IO_THREAD //此線程把master段的日志寫到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此線程把寫到本地的日志應(yīng)用于數(shù)據(jù)庫(kù)
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //動(dòng)態(tài)改變master信息
PURGE MASTER [before ''date''] 刪除master端已同步過的日志
您可能感興趣的文章:
相關(guān)文章
MySQL?Binlog日志的記錄模式寫入機(jī)制文件操作詳解
這篇文章主要介紹了MySQL?Binlog日志的記錄模式寫入機(jī)制文件操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07MySQL下將一個(gè)表的數(shù)據(jù)插入到另外一個(gè)表的實(shí)現(xiàn)語(yǔ)句
開發(fā)中,我們經(jīng)常需要將一個(gè)表的數(shù)據(jù)插入到另外一個(gè)表,有時(shí)還需要指定導(dǎo)入字段,雖然這個(gè)實(shí)現(xiàn)起來非常簡(jiǎn)單,但是還是會(huì)困擾許多新手,因此專門發(fā)一篇文章備查。2009-09-09mysql中GROUP_CONCAT的使用方法實(shí)例分析
這篇文章主要介紹了mysql中GROUP_CONCAT的使用方法,結(jié)合實(shí)例形式分析了MySQL中GROUP_CONCAT合并查詢結(jié)果的相關(guān)操作技巧,需要的朋友可以參考下2020-02-02MySQL實(shí)現(xiàn)配置主從復(fù)制項(xiàng)目實(shí)踐
本文主要介紹了MySQL?配置主從復(fù)制實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語(yǔ)句
這篇文章主要介紹了Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語(yǔ)句,需要的朋友可以參考下2017-05-05