www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]一、???? 原理Redis的主從復制功能非常強大,一個master可以擁有多個slave,而一個slave又可以擁有多個slave,如此下去,形成了強大的多級服務器集群架構。下面是關于redis主從

一、???? 原理

Redis的主從復制功能非常強大,一個master可以擁有多個slave,而一個slave又可以擁有多個slave,如此下去,形成了強大的多級服務器集群架構。下面是關于redis主從復制的一些特點:
1.master可以有多個slave
2.除了多個slave連到相同的master外,slave也可以連接其他slave形成圖狀結構
3.主從復制不會阻塞master。也就是說當一個或多個slave與master進行初次同步數(shù)據(jù)時,master可以繼續(xù)處理client發(fā)來的請求。相反slave在初次同步數(shù)據(jù)時則會阻塞不能處理client的請求。
4.主從復制可以用來提高系統(tǒng)的可伸縮性,我們可以用多個slave 專門用于client的讀請求,比如sort操作可以使用slave來處理。也可以用來做簡單的數(shù)據(jù)冗余
5.可以在master禁用數(shù)據(jù)持久化,只需要注釋掉master 配置文件中的所有save配置,然后只在slave上配置數(shù)據(jù)持久化。

下面介紹下主從復制的過程
?????? 當設置好slave服務器后,slave會建立和master的連接,然后發(fā)送sync命令。無論是第一次同步建立的連接還是連接斷開后的重新連 接,master都會啟動一個后臺進程,將數(shù)據(jù)庫快照保存到文件中,同時master主進程會開始收集新的寫命令并緩存起來。后臺進程完成寫文件 后,master就發(fā)送文件給slave,slave將文件保存到磁盤上,然后加載到內(nèi)存恢復數(shù)據(jù)庫快照到slave上。接著master就會把緩存的命 令轉發(fā)給slave。而且后續(xù)master收到的寫命令都會通過開始建立的連接發(fā)送給slave。從master到slave的同步數(shù)據(jù)的命令和從 client發(fā)送的命令使用相同的協(xié)議格式。當master和slave的連接斷開時slave可以自動重新建立連接。如果master同時收到多個 slave發(fā)來的同步連接命令,只會使用啟動一個進程來寫數(shù)據(jù)庫鏡像,然后發(fā)送給所有slave。

二、???? 配置

下面我演示下怎樣在多臺服務器上進行Redis數(shù)據(jù)主從復制。我假設有兩臺服務器,一臺是Linux操作系統(tǒng)(局域網(wǎng)IP:192.168.1.4,master服務器),一臺是Linux操作系統(tǒng)(局域網(wǎng)IP:192.168.1.5,slave服務器)

配置slave服務器很簡單,只需要在配置文件(redis.conf)中加入如下配置
bind? 192.168.1.5(從服務器,此處默認是127.0.0.1,請修改成本機的IP地址,要不然,客戶端無法進行訪問)

slaveof 192.168.1.4 6379? (映射到主服務器上)

如果是在一臺機器上面配置主從關系,那么還需要修改從服務器的默認端口號,同樣也在redis.conf中進行修改。

其中還有些redis自身的配置請參見我的另一篇文章

三、???? 測試

當啟動master機器后,寫入數(shù)據(jù)到master后,這時啟動slave機器,可以發(fā)現(xiàn)slave上:

會發(fā)送一個SYNC請求,從Master上面進行相應,而且它支持自動重連,即當master掉線的情況下,它會處于等待請求的狀態(tài)。

而Master上:

兩臺機器的dump文件大小一樣:

192.168.1.5(slave):

192.168.1.4(master):


從Redis源碼中,可以發(fā)現(xiàn)rdb文件采用的是lzf壓縮算法進行實現(xiàn),默認lzf壓縮算法是開啟的。

這樣你可以通過其他的客戶端程序或者Web平臺去讀取Slave磁盤數(shù)據(jù)庫的數(shù)據(jù),真正達到了讀寫分離的目的。

posted @ 2011-09-20 18:24 weafer 閱讀(576) 評論(0)? 編輯
Redis 的安裝配置介紹

redis 是一個高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關系數(shù)據(jù)庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。問題是這個項目還很新,可能還不足夠穩(wěn)定,而且沒有在實際的一些大型系統(tǒng)應用的實例。此外,缺乏mc中批量get也是比較大的問題,始終批量獲取跟多次獲取的網(wǎng)絡開銷是不一樣的。

性能測試結果:

SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,服務器配置如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 網(wǎng)站使用 Redis 做為緩存服務器。

安裝過程:

Redis是一種高級key-value數(shù)據(jù)庫。它跟memcached類似,不過數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務器端計算集合的并,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數(shù)據(jù)結構服務 器。

Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,然后不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數(shù)據(jù)變化都寫入到一個append only file(aof)里面(這稱為“全持久化模式”)。

一、下載最新版

wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz

二、解壓縮

tar redis-2.0.0-rc4.tar.gz

三、安裝C/C++的編譯組件(非必須)

apt-get install build-essential

四、編譯

cd redis-2.0.0-rc4
make

make命令執(zhí)行完成后,會在當前目錄下生成本個可執(zhí)行文件,分別是redis-server、redis-cli、redis-benchmark、redis-stat,它們的作用如下:

redis-server:Redis服務器的daemon啟動程序redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據(jù)其純文本協(xié)議來操作redis-benchmark:Redis性能測試工具,測試Redis在你的系統(tǒng)及你的配置下的讀寫性能redis-stat:Redis狀態(tài)檢測工具,可以檢測Redis當前狀態(tài)參數(shù)及延遲狀況 在后面會有這幾個命令的說明,當然是從網(wǎng)上抄的。。。

五、修改配置文件

/etc/sysctl.conf

添加

vm.overcommit_memory=1

刷新配置使之生效

sysctl vm.overcommit_memory=1

補充介紹:

**如果內(nèi)存情況比較緊張的話,需要設定內(nèi)核參數(shù):
echo 1 > /proc/sys/vm/overcommit_memory

內(nèi)核參數(shù)說明如下:

overcommit_memory文件指定了內(nèi)核針對內(nèi)存分配的策略,其值可以是0、1、2。
0, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應用進程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應用進程。
1, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當前的內(nèi)存狀態(tài)如何。
2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存

**編輯redis.conf配置文件(/etc/redis.conf),按需求做出適當調(diào)整,比如:
daemonize yes #轉為守護進程,否則啟動時會每隔5秒輸出一行監(jiān)控信息
save 60 1000 #減小改變次數(shù),其實這個可以根據(jù)情況進行指定
maxmemory 256000000 #分配256M內(nèi)存


在我們成功安裝Redis后,我們直接執(zhí)行redis-server即可運行Redis,此時它是按照默認配置來運行的(默認配置甚至不是后臺運 行)。我們希望Redis按我們的要求運行,則我們需要修改配置文件,Redis的配置文件就是我們上面第二個cp操作的redis.conf文件,目前 它被我們拷貝到了/usr/local/redis/etc/目錄下。修改它就可以配置我們的server了。如何修改?下面是redis.conf的主 要配置參數(shù)的意義: daemonize:是否以后臺daemon方式運行pidfile:pid文件位置port:監(jiān)聽的端口號timeout:請求超時時間loglevel:log信息級別logfile:log文件位置databases:開啟數(shù)據(jù)庫的數(shù)量save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執(zhí)行多少次寫操作。在一定時間內(nèi)執(zhí)行一定數(shù)量的寫操作時,自動保存快照??稍O置多個條件。rdbcompression:是否使用壓縮dbfilename:數(shù)據(jù)快照文件名(只是文件名,不包括目錄)dir:數(shù)據(jù)快照的保存目錄(這個是目錄)appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數(shù)據(jù)抗風險能力,但影響效率。appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調(diào)用fsync、每秒啟用一次fsync、不調(diào)用fsync等待系統(tǒng)自己同步)

下面是一個略做修改后的配置文件內(nèi)容:

daemonize?yespidfile?/usr/local/redis/var/redis.pidport?6379timeout?300loglevel?debuglogfile?/usr/local/redis/var/redis.logdatabases?16save?900?1save?300?10save?60?10000rdbcompression?yesdbfilename?dump.rdbdir?/usr/local/redis/var/appendonly?noappendfsync?alwaysglueoutputbuf?yesshareobjects?noshareobjectspoolsize?1024

  

將上面內(nèi)容寫為redis.conf并保存到/usr/local/redis/etc/目錄下

然后在命令行執(zhí)行:

1
/usr/local/redis/bin/redis-server?/usr/local/redis/etc/redis.conf

即可在后臺啟動redis服務,這時你通過

1
telnet?127.0.0.1?6379

即可連接到你的redis服務。

六、啟動服務并驗證

啟動服務器

./redis-server

$redis-server /etc/redis.conf?
查看是否成功啟動
$ ps -ef | grep redis??

./redis-cli ping
PONG

七、啟動命令行客戶端賦值取值

redis-cli set mykey somevalue

./redis-cli get mykey

八、關閉服務

$ redis-cli shutdown????

#關閉指定端口的redis-server?

$redis-cli -p 6380 shutdown

九、客戶端也可以使用telnet形式連接。

[root@dbcache conf]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to dbcache (127.0.0.1).
Escape character is '^]'.
set foo 3
bar
+OK
get foo
$3
bar
^]
telnet> quit
Connection closed.

posted @ 2011-09-20 18:16 weafer 閱讀(159) 評論(0)? 編輯
MySQL Replication, 主從和雙主配置

MySQL的Replication是一種多個MySQL的數(shù)據(jù)庫做主從同步的方案,特點是異步,廣泛用在各種對MySQL有更高性能,更高可靠性要求的場合。與之對應的另一個技術是同步的MySQL Cluster,但因為比較復雜,使用者較少。
?
下圖是MySQL官方給出了使用Replication的場景:

Replication原理
?
Mysql 的 Replication 是一個異步的復制過程,從一個MySQL節(jié)點(稱之為Master)復制到另一個MySQL節(jié)點(稱之Slave)。在 Master 與 Slave 之間的實現(xiàn)整個復制過程主要由三個線程來完成,其中兩個線程(SQL 線程和 I/O 線程)在 Slave 端,另外一個線程(I/O 線程)在 Master 端。
?
要實現(xiàn) MySQL 的 Replication ,首先必須打開 Master 端的 Binary Log,因為整個復制過程實際上就是 Slave 從 Master 端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。
?
看上去MySQL的Replication原理非常簡單,總結一下:
???? * 每個從僅可以設置一個主。
??? * 主在執(zhí)行sql之后,記錄二進制log文件(bin-log)。
??? * 從連接主,并從主獲取binlog,存于本地relay-log,并從上次記住的位置起執(zhí)行sql,一旦遇到錯誤則停止同步。
??
從這幾條Replication原理來看,可以有這些推論:
???? * 主從間的數(shù)據(jù)庫不是實時同步,就算網(wǎng)絡連接正常,也存在瞬間,主從數(shù)據(jù)不一致。
??? * 如果主從的網(wǎng)絡斷開,從會在網(wǎng)絡正常后,批量同步。
??? * 如果對從進行修改數(shù)據(jù),那么很可能從在執(zhí)行主的bin-log時出現(xiàn)錯誤而停止同步,這個是很危險的操作。所以一般情況下,非常小心的修改從上的數(shù)據(jù)。
??? * 一個衍生的配置是雙主,互為主從配置,只要雙方的修改不沖突,可以工作良好。
??? * 如果需要多主的話,可以用環(huán)形配置,這樣任意一個節(jié)點的修改都可以同步到所有節(jié)點。
??
主從設置
?
因為原理比較簡單,所以Replication從MySQL 3就支持,并在所有平臺下可以工作,多個MySQL節(jié)點甚至可以不同平臺,不同版本,不同局域網(wǎng)。做Replication配置包括用戶和my.ini(linux下為my.cnf)兩處設置。
?
首先在主MySQL節(jié)點上,為slave創(chuàng)建一個用戶:
?
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'192.168.1.10' IDENTIFIED BY 'slave';
?
實際上,為支持主從動態(tài)同步,或者手動切換,一般都是在所有主從節(jié)點上創(chuàng)建好這個用戶。然后就是MySQL本身的配置了,這需要修改my.cnf或者my.ini文件。在mysqld這一節(jié)下面增加:
?
server-id=1???
auto-increment-increment=2????
auto-increment-offset=1????
log-bin????
binlog-do-db=mstest????
binlog_format=mixed
?
master-host=192.168.1.62???
master-user=slave????
master-password=slave????
replicate-do-db=mstest
?
上面這兩段設置,前一段是為主而設置,后一段是為從設置的。也就是說在兩個MySQL節(jié)點上,各加一段就好。binlog-do-db和replicate-do-db就是設置相應的需要做同步的數(shù)據(jù)庫了,auto-increment-increment和auto-increment-offset是為了支持雙主而設置的(參考下一節(jié)),在只做主從的時候,也可以不設置。
?
雙主的設置
?
從原理論來看MySQL也支持雙主的設置,即兩個MySQL節(jié)點互為主備,不過雖然理論上,雙主只要數(shù)據(jù)不沖突就可以工作的很好,但實際情況中還是很容發(fā)生數(shù)據(jù)沖突的,比如在同步完成之前,雙方都修改同一條記錄。因此在實際中,最好不要讓兩邊同時修改。即邏輯上仍按照主從的方式工作。但雙主的設置仍然是有意義的,因為這樣做之后,切換主備會變的很簡單。因為在出現(xiàn)故障后,如果之前配置了雙主,則直接切換主備會很容易。
? 雙主在設置時,只需將上面的一段設置復制一份,分別寫入兩個MySQL節(jié)點的配置文件,但要修改相應的server-id,auto-increment-offset和master-host。auto-increment-offset就是為了讓雙主同時在一張表中進行添加操作時不會出現(xiàn)id沖突,所以在兩個節(jié)點上auto-increment-offset設置為不同的值就好。? 另:不要忘了,在兩個節(jié)點上都為對方創(chuàng)建用戶。?應用層的負載均衡? 本文只介紹了MySQL自身的Repilication配置,在上面的圖中也可以看出,有了Replication,還需要應用層(或者中間件)做一個負載均衡,這樣才能最大程度發(fā)揮MySQL Replication的優(yōu)勢,這些將在以后探討。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉