mysql數(shù)據(jù)庫 主從復(fù)制的配置方法
MySQL支持單向、異步復(fù)制,復(fù)制過程中一個服務(wù)器充當(dāng)主服務(wù)器,而一個或多個其它服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫入二進(jìn)制日志文件,并維 護(hù)日志文件的一個索引以跟蹤日志循環(huán)。當(dāng)一個從服務(wù)器連接到主服務(wù)器時,它通知主服務(wù)器從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接收從那 時起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知下一次更新。
為什么使用主從復(fù)制?
1、主服務(wù)器/從服務(wù)器設(shè)置增加了健壯性。主服務(wù)器出現(xiàn)問題時,你可以切換到從服務(wù)器作為備份。
2、通過在主服務(wù)器和從服務(wù)器之間切分處理客戶查詢的負(fù)荷,可以得到更好的客戶響應(yīng)時間。但是不要同時在主從服務(wù)器上進(jìn)行更新,這樣可能引起沖突。
3、使用復(fù)制的另一個好處是可以使用一個從服務(wù)器執(zhí)行備份,而不會干擾主服務(wù)器。在備份過程中主服務(wù)器可以繼續(xù)處理更新。
MySQL 使用3個線程來執(zhí)行復(fù)制功能(其中1個在主服務(wù)器上,另兩個在從服務(wù)器上。當(dāng)發(fā)出START SLAVE時,從服務(wù)器創(chuàng)建一個I/O線程,以連接主服務(wù)器并讓主服務(wù)器發(fā)送二進(jìn)制日志。主服務(wù)器創(chuàng)建一個線程將二進(jìn)制日志中的內(nèi)容發(fā)送到從服務(wù)器。從服 務(wù)器I/O線程讀取主服務(wù)器Binlog Dump線程發(fā)送的內(nèi)容并將該數(shù)據(jù)拷貝到從服務(wù)器數(shù)據(jù)目錄中的本地文件中,即中繼日志。第3個線程是SQL線程,從服務(wù)器使用此線程讀取中繼日志并執(zhí)行日志中包含的更新。SHOW PROCESSLIST語句可以查詢在主服務(wù)器上和從服務(wù)器上發(fā)生的關(guān)于復(fù)制的信息。
默認(rèn)中繼日志使用 host_name-relay-bin.nnnnnn形式的文件名,其中host_name是從服務(wù)器主機名,nnnnnn是序 列號。用連續(xù)序列號來創(chuàng)建連續(xù)中繼日志文件,從000001開始。從服務(wù)器跟蹤中繼日志索引文件來識別目前正使用的中繼日志。默認(rèn)中繼日志索引文件名為 host_name-relay-bin.index。在默認(rèn)情況,這些文件在從服務(wù)器的數(shù)據(jù)目錄中被創(chuàng)建。中繼日志與二進(jìn)制日志的格式相同,并且可以用 mysqlbinlog讀取。當(dāng)SQL線程執(zhí)行完中繼日志中的所有事件后,中繼日志將會被自動刪除。
從服務(wù)器在數(shù)據(jù)目錄中另外創(chuàng)建兩個狀態(tài)文件--master.info和relay-log.info。狀態(tài)文件保存在硬盤上,從服務(wù)器關(guān)閉時不會丟失。下次從服務(wù)器啟動時,讀取這些文件以確定它已經(jīng)從主服務(wù)器讀取了多少二進(jìn)制日志,以及處理自己的中繼日志的程度。
1.配置主服務(wù)器
打開mysql的配置
vim/usr/local/webserver/mysql/my.cnf
開啟server_id和bin-log日志
server_id = '唯一值'(開啟server_id)
log-bin = /data/mysql/3306/binlog/binlog
2. 配置從服務(wù)器
打開mysql的配置
vim /usr/local/webserver/mysql/my.cnf
開啟server_id和bin-log日志
server_id = '唯一值'(開啟server_id)
log-bin = /data/mysql/3306/binlog/binlog
修改完配置后記得重啟數(shù)據(jù)庫 service mysqld restart
關(guān)鍵點:從數(shù)據(jù)庫中必須有一個用戶可以在從數(shù)據(jù)庫的機器上去連接主服務(wù)器
3.在主數(shù)據(jù)庫中給從數(shù)據(jù)庫一個用戶
進(jìn)入mysql /usr/local/webserver/mysql/bin/mysql -p 密碼
mysql> grant all on *.* to 用戶@從數(shù)據(jù)庫的ip identified by '密碼';
flush privileges;刷新權(quán)限
在主數(shù)據(jù)庫中查看 show master status;主數(shù)據(jù)庫的最新的bin-log日志文件名
4.進(jìn)入從數(shù)據(jù)庫,執(zhí)行下邊的sql語句
檢查從數(shù)據(jù)庫是否可以進(jìn)入
mysql /usr/local/webserver/mysql/bin/mysql -u
主數(shù)據(jù)庫給的用戶 -p 密碼 -h主數(shù)據(jù)庫的ip ,如果可以進(jìn)入,則退出
mysql /usr/local/webserver/mysql/bin/mysql -u
密碼
特別,在執(zhí)行change之前必須關(guān)閉從庫 stop slave;
mysql> change master to master_host='主數(shù)據(jù)庫ip',master_user='主數(shù)據(jù)庫授權(quán)的用戶名',master_password='主數(shù)據(jù)庫授權(quán)的密碼',master_log_file='主數(shù)據(jù)庫的bin-log日志的文件名',master_log_pos='主數(shù)據(jù)庫的bin-log日志的position值'
5.開啟從庫 start slave;
6.查看從庫狀態(tài) show slave status\G;
change master to master_host='101.200.136.226',master_user='zt',master_password='zt',master_log_file=' binlog.000001 ',master_log_pos=4826;
如果
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
OK沒問題
主從配置完畢
binlog命令
/usr/local/webserver/mysql/bin/mysqlbinlog binlog.000001
查看binlog日志文件
reset master 初始化binlog日志
show master status; 查看最新的日志文件和position值
flush logs 刷新log日志文件
start slave 開啟從庫
stop slave 停止從庫
show slave status;查看從庫狀態(tài)
通過binlog日志恢復(fù)數(shù)據(jù)
進(jìn)入binlog目錄
cd /data/mysql/3306/binlog/
查看binlog列表 ls
查看binlog日志文件
/usr/local/webserver/mysql/bin/mysqlbinlog binlog.000001
恢復(fù)數(shù)據(jù)
/usr/local/webserver/mysql/bin/mysqlbinlog binlog.000001 | /usr/local/webserver/mysql/bin/mysql -p(在沒有清空binlog日志之前可以恢復(fù))
如果執(zhí)行了 reset master 就無法恢復(fù)
以上就是對 mysql 數(shù)據(jù)庫 主從復(fù)制的配置資料整理,開發(fā)數(shù)據(jù)庫需要的朋友可以看下。
相關(guān)文章
淺談MySQL8和MySQL5.7在自增計數(shù)上的區(qū)別
MySQL數(shù)據(jù)庫是一款非常流行的開源數(shù)據(jù)庫,其版本升級迅速,在使用過程中也發(fā)現(xiàn)了不同版本之間存在著一些區(qū)別,本文主要介紹了MySQL8和MySQL5.7在自增計數(shù)上的區(qū)別,感興趣的可以了解一下2023-10-10mysql數(shù)據(jù)存儲過程參數(shù)實例詳解
這篇文章主要介紹了mysql數(shù)據(jù)存儲過程參數(shù)實例詳解,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。2017-10-10在win10系統(tǒng)下安裝Mysql 5.7.17圖文教程
因為想要在公司電腦上安裝Mysql,于是到官網(wǎng)上下載了最新版本的Mysql-5.7.17,其實安裝方法也很簡單,下面小編把安裝過程分享到腳本之家平臺供大家參考2017-03-03在Windows主機上定時備份遠(yuǎn)程VPS(CentOS)數(shù)據(jù)的批處理
我想在自己的 Windows7 下每天/周運行一次備份,就有了這個小工具2012-05-05MySQL數(shù)據(jù)遷移相關(guān)總結(jié)
這篇文章主要介紹了MySQL數(shù)據(jù)遷移的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2021-04-04MySQL實現(xiàn)兩張表數(shù)據(jù)的同步
本文將介紹mysql 觸發(fā)器實現(xiàn)兩個表的數(shù)據(jù)同步,需要學(xué)習(xí)MySQL的童鞋可以參考。2016-10-10mysql 獲取昨天日期、今天日期、明天日期以及前一個小時和后一個小時的時間
這篇文章主要介紹了mysql 獲取昨天日期、今天日期、明天日期以及前一個小時和后一個小時的時間,需要的朋友可以參考下2018-01-01