mysql 主从优点_MySql主从配置实践及其优势浅谈
1、增加兩個MySQL,我將C:\xampp\mysql下的MYSQL復(fù)制了一份,放到D:\Mysql2\Mysql5.1
修改my.ini(linux下應(yīng)該是my.cnf):
[client]
port =?3307
[mysqld]
port =?3307
basedir=D:/Mysql2/Mysql5.1/mysql
datadir=D:/Mysql2/Mysql5.1/mysql/data/
之后,再增加MySQL2服務(wù),
mysqld?–install?MySQL2??--defaults-file=D:\Mysql2\Mysql5.1\mysql\my.ini(需要管理員權(quán)限,否則會被無情拒絕)
另一個MySQL將端口號設(shè)置為3308服務(wù)名為MySQL1(打算用做從數(shù)據(jù)庫)
2、新建了一個test數(shù)據(jù)庫,新建一張twenty_million表(id,name,value)往里面插入2000W條數(shù)據(jù)(5min)
3、主從數(shù)據(jù)庫同步配置, 如果不是同一個臺服務(wù)器上的需要設(shè)置權(quán)限用戶給它。
mysql>?GRANT?REPLICATION?SLAVE?ON?*.*?TO?'slave001'@'192.168.0.99'?IDENTIFIED?BY?'123456';
Query?OK,?0?rows?affected?(0.13?sec)
因為我的是一臺機器上進行測試,所以直接用root用戶了,密碼123
修改主數(shù)據(jù)庫的配置文件,my.ini,開啟BINLOG,并設(shè)置server-id的值,修改之后必須重啟Mysql2服務(wù):
[mysqld]
log-bin=D:/Mysql2/Mysql5.1/mysql/log/mysql-bin.log
server-id=1
之后可以得到主服務(wù)器當(dāng)前二進制日志名和偏移量,這個操作的目的是為了在從數(shù)據(jù)庫啟動后,從這個點開始進行數(shù)據(jù)的恢復(fù)
接下來停止主數(shù)據(jù)的更新操作,并生成數(shù)據(jù)庫的備份,可以通過mysqldump到從數(shù)據(jù)庫,當(dāng)然也可以直接用cp命令將數(shù)據(jù)文件復(fù)制到從數(shù)據(jù)庫中去(1%拷了384秒,情何以堪?我還不如重新插一遍測試數(shù)據(jù)呢,果斷掐了)
也算學(xué)個命令,其實完全可以用navicate里的導(dǎo)出數(shù)據(jù)庫再導(dǎo)入數(shù)據(jù)庫
進行從數(shù)據(jù)庫的配置:
修改my,ini(my.cnf)
[mysqld]
server-id=2
log_bin?=?/var/log/mysql/mysql-bin.log
master-host?=192.168.1.100(本機的話:127.0.0.1//localhost是它的別名!)
master-user=test
master-pass=123456
master-port?=3306
master-connect-retry=60
replicate-do-db?=test
但是,我一直都無法啟動,晚上搞了很久也沒搞出個所以然來,最后只能添加錯誤日志
log-error=D:/Mysql1/Mysql5.1/mysql/log/mysql-bin.log
net?start?mysql1
日志截圖
繼續(xù)度娘的干活:
然后我就想知道自己的mysql版本,進入cmd:
我次奧,我一直以為我的mysql是5.1啊.知道了問題原因,解決也比較容易
在從數(shù)據(jù)庫的my.ini中只需要添加兩項:
server-id?=?2
replicate-do-db?=?mydatabase
之后再在cmd下:
mysql>?change?master?to?master_host='127.0.0.1',master_user='root',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=60,?master_port=3307;
其中master_log_file和master_log_pos通過在主數(shù)據(jù)庫show?master?status;得到。
端口不是默認(rèn)端口的話,如master_port=3307,不要加引號。
接下來就是重啟服務(wù),先啟動主數(shù)據(jù)庫服務(wù)(我的是mysql2),再啟動從數(shù)據(jù)庫服務(wù),然后就算完成了主從配置,在主數(shù)據(jù)庫中更改test數(shù)據(jù)庫中數(shù)據(jù),理論上,在從數(shù)據(jù)庫中也會做相應(yīng)的更改
當(dāng)然這是理論上的,實際上,我特么又出問題了,從數(shù)據(jù)庫中的數(shù)據(jù)并沒有按照理論上做出相應(yīng)的更改,我仔細(xì)看了下show?slave?stats\G和別人成功的截圖對比下,其中slave_IO_Running這項,我的是NO人家的是YES,目測是這個問題,查看log日志
在主數(shù)據(jù)庫中
再更改從數(shù)據(jù)庫(建議開兩個CMD,我之前一直都是一個CMD,exit?cd麻煩死)
再
搞定,測試,成功!
4、最后總要說說它的實際作用的么,在我百度之前,我在想,這不就是數(shù)據(jù)庫的實時備份么,也沒什么大不了的,這樣的想法,只能說明自己對數(shù)據(jù)庫讀寫壓力完全不了解。
在MySQL數(shù)據(jù)庫中,支持單項、異步復(fù)制。在復(fù)制過程中,一個服務(wù)器充當(dāng)主服務(wù)器,而另外一臺服務(wù)器充當(dāng)從服務(wù)器。如下圖所示。此時主服務(wù)器會將更新信息寫入到一個特定的二進制文件中。并會維護文件的一個索引用來跟蹤日志循環(huán)。這個日志可以記錄并發(fā)送到從服務(wù)器的更新中去。當(dāng)一臺從服務(wù)器連接到主服務(wù)器時,從服務(wù)器會通知主服器從服務(wù)器的日志文件中讀取最后一次成功更新的位置。然后從服務(wù)器會接收從那個時刻起發(fā)生的任何更新,然后鎖住并等到主服務(wù)器通知新的更新。
好處一:實現(xiàn)服務(wù)器負(fù)載均衡
即可以通過在主服務(wù)器和從服務(wù)器之間切分處理客戶查詢的負(fù)荷,從而得到更好的客戶相應(yīng)時間。通常情況下,數(shù)據(jù)庫管理員會有兩種思路。
一是在主服務(wù)器上只實現(xiàn)數(shù)據(jù)的更新操作。包括數(shù)據(jù)記錄的更新、刪除、新建等等作業(yè)。而不關(guān)心數(shù)據(jù)的查詢作業(yè)。數(shù)據(jù)庫管理員將數(shù)據(jù)的查詢請求全部?轉(zhuǎn)發(fā)到從服務(wù)器中。這在某些應(yīng)用中會比較有用。如某些應(yīng)用,像基金凈值預(yù)測的網(wǎng)站。其數(shù)據(jù)的更新都是有管理員更新的,即更新的用戶比較少。而查詢的用戶數(shù)?量會非常的多。此時就可以設(shè)置一臺主服務(wù)器,專門用來數(shù)據(jù)的更新。同時設(shè)置多臺從服務(wù)器,用來負(fù)責(zé)用戶信息的查詢
二是在主服務(wù)器上與從服務(wù)器切分查詢的作業(yè)。在這種思路下,主服務(wù)器不單單要完成數(shù)據(jù)的更新、刪除、插入等作業(yè),同時也需要負(fù)擔(dān)一部分查詢作業(yè)。而從服務(wù)器的話,只負(fù)責(zé)數(shù)據(jù)的查詢。當(dāng)主服務(wù)器比較忙時,部分查詢請求會自動發(fā)送到從服務(wù)器重,以降低主服務(wù)器的工作負(fù)荷。
好處二:通過復(fù)制實現(xiàn)數(shù)據(jù)的異地備份
如上圖所示,可以定期的將數(shù)據(jù)從主服務(wù)器上復(fù)制到從服務(wù)器上,這無疑是先了數(shù)據(jù)的異地備份。在傳統(tǒng)的備份體制下,是將數(shù)據(jù)備份在本地。此時備份?作業(yè)與數(shù)據(jù)庫服務(wù)器運行在同一臺設(shè)備上,當(dāng)備份作業(yè)運行時就會影響到服務(wù)器的正常運行。有時候會明顯的降低服務(wù)器的性能。同時,將備份數(shù)據(jù)存放在本地,也?不是很安全。如硬盤因為電壓等原因被損壞或者服務(wù)器被失竊,此時由于備份文件仍然存放在硬盤上,數(shù)據(jù)庫管理員無法使用備份文件來恢復(fù)數(shù)據(jù)。這顯然會給企業(yè)?帶來比較大的損失。
好處三:提高數(shù)據(jù)庫系統(tǒng)的可用性
數(shù)據(jù)庫復(fù)制功能實現(xiàn)了主服務(wù)器與從服務(wù)器之間數(shù)據(jù)的同步,增加了數(shù)據(jù)庫系統(tǒng)的可用性。當(dāng)主服務(wù)器出現(xiàn)問題時,數(shù)據(jù)庫管理員可以馬上讓從服務(wù)器作為主服務(wù)器,用來數(shù)據(jù)的更新與查詢服務(wù)。然后回過頭來再仔細(xì)的檢查主服務(wù)器的問題。此時一般數(shù)據(jù)庫管理員也會采用兩種手段。
一是主服務(wù)器故障之后,雖然從服務(wù)器取代了主服務(wù)器的位置,但是對于主服務(wù)器可以采取的操作仍然做了一些限制。如仍然只能夠進行數(shù)據(jù)的查詢,而?不能夠進行數(shù)據(jù)的更新、刪除等操作。這主要是從數(shù)據(jù)的安全性考慮。如現(xiàn)在一些銀行系統(tǒng)的升級,在升級的過程中,只能夠查詢余額而不能夠取錢。這是同樣的道?理。
二是從服務(wù)器真正變成了主服務(wù)器。當(dāng)從服務(wù)器切換為主服務(wù)器之后,其地位完全與原先的主服務(wù)器相同。此時可以實現(xiàn)對數(shù)據(jù)的查詢、更新、刪除等操?作。為此就需要做好數(shù)據(jù)的安全性工作。即數(shù)據(jù)的安全策略,要與原先的主服務(wù)器完全相同。否則的話,就可能會留下一定的安全隱患
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的mysql 主从优点_MySql主从配置实践及其优势浅谈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学生标准类
- 下一篇: web压力测试的几个指标