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)文章
利用tcpdump對(duì)mysql進(jìn)行抓包操作技巧
利用tcpdump對(duì)mysql進(jìn)行抓包操作,命令簡(jiǎn)單,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12
Mysql使用聚合函數(shù)時(shí)需要注意事項(xiàng)
聚合函數(shù)作用于一組數(shù)據(jù),并對(duì)一組數(shù)據(jù)返回一個(gè)值,常見的聚合函數(shù):SUM()、MAX()、MIN()、AVG()、COUNT(),這篇文章主要介紹了Mysql使用聚合函數(shù)時(shí)需要注意事項(xiàng),需要的朋友可以參考下2024-08-08
MySQL查詢語(yǔ)句過程和EXPLAIN語(yǔ)句基本概念及其優(yōu)化
在MySQL中我們經(jīng)常會(huì)使用到一些查詢語(yǔ)句,如果使用合適的索引會(huì)大大簡(jiǎn)化和加速查找,下面小編來和大家一起學(xué)習(xí)一下知識(shí)2019-05-05

