mysql 主從伺服器的簡單配置_Mysql
來源:互聯網
上載者:User
首先在主伺服器上添加可登陸的使用者權限:
GRANT REPLICATE SLAVE on *.* to 'username'@'host' identified by 'password'
然後設定主伺服器的my.ini檔案。
server-id=1 #主伺服器標識
log-bin #啟用二進位日誌
binlog-do-bin=databasename #要備份的資料庫名稱,多個可以重複該配置過程
binlog-ignore-db=databasename #不備份的資料庫名稱,多個可以重複該配置過程
從伺服器的配置
server-id=2 #從伺服器標識,範圍1---2E32-1
master-host=hostname/hostip #主伺服器ip或主機名稱
master-user=username #登陸主伺服器的使用者名稱
master-password=password #登陸主伺服器的密碼
master-port = portid #主伺服器的運行連接埠號碼
replicate-do-db=databasename #要同步的資料庫名稱,多個可以重複該配置過程
replicate-ignore=db=databasename #不同步的資料庫名稱,多個可以重複該配置
log-bin #從伺服器啟動二進位日誌記錄
master-connect-retry = seconds #與主伺服器中斷連線後,重新自動連接的時間
skip-start-slave #防止隨伺服器的啟動而啟動同步程式
至此,一個簡單的主從伺服器配置完成。
在master伺服器端可啟動並執行命令:
show master status;#查看主伺服器的運行狀態
show slave hosts;#查看從伺服器主機列表
補充:
在從伺服器上使用show slave status
Slave_IO_Running,為No,則說明IO_THREAD沒有啟動,請執行slave start [IO_THREAD]
Slave_SQL_Running為No則複製出錯,查看Last_error欄位排除錯誤後執行slave start [SQL_THREAD]
查看Slave_IO_State欄位
空 //複製沒有啟動
Connecting to master//沒有串連上master
Waiting for master to send event//已經連上
補充:可以使用LOAD DATA FROM MASTER語句來建立slave。但有約束條件:
資料表要全部是MyISAM表,必須有SUPER許可權,master的複製使用者必須具備RELOAD和SUPER許可權。
在master端執行RESET MASTER清除已有的日誌變更,
此時slave端會因為找不到master日誌無法啟動IO_THREAD,請清空data目錄下
relay-log.info,hosname-relay-bin*等檔案重新啟動mysql
中繼記錄檔預設的檔案為hostname-relay-bin.nnn和hostname-relay-bin.index。可用從伺服器的--
relay-log和--relay-log-index選項修改。在從伺服器中還有一個relay-log.info中繼資訊檔,可用
--relay-log-info-file啟動選項修改檔案名稱。
雙機互備則是兩個mysql同時配置為master及slave
主伺服器上的相關命令:
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=
從伺服器上的相關命令:
slave start
slave stop
SLAVE STOP IO_THREAD //此線程把master段的日誌寫到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此線程把寫到本地的日誌應用於資料庫
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= //動態改變master資訊
PURGE MASTER [before ''date''] 刪除master端已同步過的日誌