MySql 主从模式原理及操作步骤
mysql是現(xiàn)在普遍使用的數(shù)據(jù)庫,但是如果宕機(jī)了必然會造成數(shù)據(jù)丟失。為了保證mysql數(shù)據(jù)庫的可靠性。就要會一些提高可靠性的技術(shù)。
主從復(fù)制原理如下。
slave(從服務(wù)器)
master(主服務(wù)器)
mysql主從是異步復(fù)制過程
master開啟bin-log功能,日志文件用于記錄數(shù)據(jù)庫的讀寫增刪
需要開啟3個線程,master IO線程,slave開啟 IO線程 SQL線程,
Slave 通過IO線程連接master,并且請求某個bin-log,position之后的內(nèi)容。
MASTER服務(wù)器收到slave IO線程發(fā)來的日志請求信息,io線程去將bin-log內(nèi)容,position返回給slave IO線程。
slave服務(wù)器收到bin-log日志內(nèi)容,將bin-log日志內(nèi)容寫入relay-log中繼日志,創(chuàng)建一個master.info的文件,該文件記錄了master ip 用戶名 密碼 master bin-log名稱,bin-log position。
slave端開啟SQL線程,實(shí)時監(jiān)控relay-log日志內(nèi)容是否有更新,解析文件中的SQL語句,在slave數(shù)據(jù)庫中去執(zhí)行。
?
準(zhǔn)備兩個mysql,一個做主,一個做從。防火墻,selinux都要關(guān)閉,保證可以ping通對方
主服務(wù)器配置:
vi/etc/ntp.conf
解釋:ntp服務(wù),是用來使計算機(jī)時間同步化的一種協(xié)議,它可以使計算機(jī)對其服務(wù)器或時鐘源(如石英鐘,GPS等等)做同步化,它可以提供高精準(zhǔn)度的時間校正(LAN上與標(biāo)準(zhǔn)間差小于1毫秒,WAN上幾十毫秒),且可介由加密確認(rèn)的方式來防止惡毒的協(xié)議攻擊。時間按NTP服務(wù)器的等級傳播。按照離外部UTC源的遠(yuǎn)近把所有服務(wù)器歸入不同的Stratum(層)中。
添加:
server 127.127.1.0
fudge 127.127.1.0 stratum 8
service ntpd start ? ?#因為同步數(shù)據(jù) 兩個服務(wù)器的時間也要同步。
稍后要在從服務(wù)器執(zhí)行來同步時間
vi/etc/my.cnf?
在配置文件49行
其他內(nèi)容都可以保持默認(rèn)。
?
---------------------------------------------------------------------------------------------------------
在主服務(wù)器登錄mysql 給從服務(wù)器授權(quán)。
mysql>?grant replication slave on *.* to zs@'192.168.43.%' identified by '123456';
授權(quán)用戶zs 密碼為123456 允許192.168.43.0的網(wǎng)絡(luò)連接 一會兒要在slave上使用這個賬號
---------------------------------------------------------------------------------------------------------
show master status; ???#此命令查看主服務(wù)器的bin-log日志文件名稱和position點(diǎn)
從服務(wù)器就是要指定這個文件maste-bin.000001?(隨著mysql增刪修改日志文件名字也有可能改變)? 和 107 (position點(diǎn) 主服務(wù)器增刪修改都會改變)所以現(xiàn)在開始就不要再在主服務(wù)器創(chuàng)表干啥的了,
mysqldump -uroot -p --opt --all-databases >/all_databases.sql ?#導(dǎo)出主數(shù)據(jù)庫的數(shù)據(jù)
scp -r /all_databases.sql root@192.168.43.2:/ ? #用scp把數(shù)據(jù)復(fù)制到從服務(wù)器。
因為主從復(fù)制是從主從關(guān)系建立完畢開始同步的。也就是現(xiàn)在?position 107之前的內(nèi)容復(fù)制不了所以要手動復(fù)制主之前的數(shù)據(jù)導(dǎo)入從數(shù)據(jù)庫。
?
從服務(wù)器配置:?
/usr/sbin/ntpdate 192.168.43.22 ?#和主服務(wù)器同步時間。192.168.43.22為主服務(wù)器ip
?mysql -u root -p ?</all_databases.sql ? #導(dǎo)入數(shù)據(jù)
?
vi /etc/my.cnf
修改后重啟mysql服務(wù)
進(jìn)入從服務(wù)器的mysql
change master to master_host='192.168.43.22',master_user='zs',master_password='123456',master_log_file='maste-bin.000001',master_log_pos=107;
?start slave; ?#開啟SQL線程
show slave status\G; ? ?查看從服務(wù)器狀態(tài)
注意兩個都要是yes才是正常。
查看效果,在主服務(wù)器上創(chuàng)建個庫看看。
從數(shù)據(jù)庫也會有
同樣刪掉數(shù)據(jù)庫從數(shù)據(jù)庫也會復(fù)制。
主庫上刪除一個數(shù)據(jù)庫。
從庫上也沒了。所以還是要備份數(shù)據(jù)庫的。
總結(jié)
以上是生活随笔為你收集整理的MySql 主从模式原理及操作步骤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++:C语言小程序—批量重命名文件
- 下一篇: 24. PE结构-PE详解之基址重定位详