偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

構(gòu)建高性能數(shù)據(jù)庫(kù)緩存之redis主從復(fù)制

數(shù)據(jù)庫(kù) Redis
主從復(fù)制,當(dāng)用戶往Master端寫入數(shù)據(jù)時(shí),通過(guò)Redis Sync機(jī)制將數(shù)據(jù)文件發(fā)送至Slave,Slave也會(huì)執(zhí)行相同的操作確保數(shù)據(jù)一致;且實(shí)現(xiàn)Redis的主從復(fù)制非常簡(jiǎn)單。

一、什么是redis主從復(fù)制?

主從復(fù)制,當(dāng)用戶往Master端寫入數(shù)據(jù)時(shí),通過(guò)Redis Sync機(jī)制將數(shù)據(jù)文件發(fā)送至Slave,Slave也會(huì)執(zhí)行相同的操作確保數(shù)據(jù)一致;且實(shí)現(xiàn)Redis的主從復(fù)制非常簡(jiǎn)單。

二、redis主從復(fù)制特點(diǎn)

1、同一個(gè)Master可以擁有多個(gè)Slaves。

2、Master下的Slave還可以接受同一架構(gòu)中其它slave的鏈接與同步請(qǐng)求,實(shí)現(xiàn)數(shù)據(jù)的級(jí)聯(lián)復(fù)制,即Master->Slave->Slave模式;

3、Master以非阻塞的方式同步數(shù)據(jù)至slave,這將意味著Master會(huì)繼續(xù)處理一個(gè)或多個(gè)slave的讀寫請(qǐng)求;

4、Slave端同步數(shù)據(jù)也可以修改為非阻塞是的方式,當(dāng)slave在執(zhí)行新的同步時(shí),它仍可以用舊的數(shù)據(jù)信息來(lái)提供查詢;否則,當(dāng)slave與master失去聯(lián)系時(shí),slave會(huì)返回一個(gè)錯(cuò)誤給客戶端;

5、主從復(fù)制具有可擴(kuò)展性,即多個(gè)slave專門提供只讀查詢與數(shù)據(jù)的冗余,Master端專門提供寫操作;

6、通過(guò)配置禁用Master數(shù)據(jù)持久化機(jī)制,將其數(shù)據(jù)持久化操作交給Slaves完成,避免在Master中要有獨(dú)立的進(jìn)程來(lái)完成此操作。

三、redis主從復(fù)制原理

wKiom1Ozz5OThc6NAAGUIzDDlQs366.jpg

當(dāng)啟動(dòng)一個(gè)Slave進(jìn)程后,它會(huì)向Master發(fā)送一個(gè)SYNC Command,請(qǐng)求同步連接。無(wú)論是第一次連接還是重新連接,Master都會(huì)啟動(dòng)一個(gè)后臺(tái)進(jìn)程,將數(shù)據(jù)快照保存到數(shù)據(jù)文件中,同時(shí)Master會(huì)記錄所有修改數(shù)據(jù)的命令并緩存在數(shù)據(jù)文件中。后臺(tái)進(jìn)程完成緩存操作后,Master就發(fā)送數(shù)據(jù)文件給Slave,Slave端將數(shù)據(jù)文件保存到硬盤上,然后將其在加載到內(nèi)存中,接著Master就會(huì)所有修改數(shù)據(jù)的操作,將其發(fā)送給Slave端。若Slave出現(xiàn)故障導(dǎo)致宕機(jī),恢復(fù)正常后會(huì)自動(dòng)重新連接,Master收到Slave的連接后,將其完整的數(shù)據(jù)文件發(fā)送給Slave,如果Mater同時(shí)收到多個(gè)Slave發(fā)來(lái)的同步請(qǐng)求,Master只會(huì)在后臺(tái)啟動(dòng)一個(gè)進(jìn)程保存數(shù)據(jù)文件,然后將其發(fā)送給所有的Slave,確保Slave正常。

四、服務(wù)器資源列表

wKiom1Ozz7PilaRGAAD2EbEmDy4850.jpg
 

五、配置過(guò)程

關(guān)于Redis的安裝與配置這里便不操作,想了解的朋友請(qǐng)閱讀:高性能數(shù)據(jù)庫(kù)緩存之redis(一)http://cfwlxf.blog.51cto.com/3966339/1423106
 

3、1 Master端操作如下:

運(yùn)行redis服務(wù)

  1. [root@redis_master sh]# redis-server/etc/redis/redis.conf 

查詢r(jià)edis運(yùn)行日志

wKioL1Ozz6bw05VBAAJdwyDX2eg504.jpg

##通過(guò)閱讀日志文件輸出的一些信息,可以看出MasterSlave建立連接時(shí),需要執(zhí)行的會(huì)話機(jī)制:加載數(shù)據(jù)文件至硬盤,用時(shí)0.012秒,可想而知速度是多么的快,當(dāng)然得依據(jù)數(shù)據(jù)的大小去評(píng)測(cè);服務(wù)連接至6379端口,收到Slave同步連接請(qǐng)求,開(kāi)啟“BGSAVE”同步等;
 

清除Master端數(shù)據(jù)庫(kù)中所有Key

  1. [root@redis_master sh]# redis-cli   
  2. 127.0.0.1:6379> FLUSHALL   
  3. OK   
  4. 127.0.0.1:6379> keys *   
  5. (empty list or set

3、2 Slave端操作如下:

[root@redis_slave ~]# vim/etc/redis/redis.conf

#添加Master端的IP與端口

  1. # slaveof <masterip><masterport>   
  2. slaveof 192.168.8.8 6379 

運(yùn)行redis

  1. [root@redis_slave ~]# redis-server/etc/redis/redis.conf 

查詢Slave運(yùn)行日志

wKioL1Ozz7vRolYwAAOCbyhb-MU029.jpg

##分析redis日志,可以看出Slave與Master建立連接,數(shù)據(jù)同步的過(guò)程;如:發(fā)送SYNC命令,與Master端192.168.8.8:6379建立連接,然后Slave sync started;隨后Master發(fā)送PING命令檢查Slave的存活狀態(tài),復(fù)制被繼續(xù)….

查詢數(shù)據(jù)庫(kù)中的所有key

  1. [root@redis_slave ~]# redis-cli                   
  2. 127.0.0.1:6379> keys *   
  3. (empty list or set

3、3 slave2端操作如下:

[root@redis_slave2 ~]# vim/etc/redis/redis.conf

#添加Slave端的IP與端口,實(shí)現(xiàn)級(jí)聯(lián)復(fù)制;

  1. # slaveof <masterip><masterport>   
  2. slaveof 192.168.8.10 6379 

#運(yùn)行redis服務(wù)

  1. [root@redis_slave2 ~]# redis-server/etc/redis/redis.conf 

查詢redis運(yùn)行日志

wKiom1Oz0AGRPpzyAAOAB3zsl1Q226.jpg

##結(jié)果與Slave1類似,只不過(guò)Slave2與Slave1(192.168.8.10:6379)建立連接,同步數(shù)據(jù);MySQL的級(jí)聯(lián)復(fù)制便是這樣,Master->Slave1->Slave2;

#查詢數(shù)據(jù)庫(kù)的所有key

[root@redis_slave2 ~]# redis-cli

127.0.0.1:6379> keys *

(empty list or set)

3、4 master端操作如下:

  1. [root@redis_master sh]# redis-cli   
  2. 127.0.0.1:6379> MSET ID 1005 NAMEMariaDB City BeiJing   
  3. OK   
  4. 127.0.0.1:6379> MGET ID NAME City   
  5. 1) "1005" 
  6. 2) "MariaDB" 
  7. 3) "BeiJing" 
  8. 127.0.0.1:6379> keys *   
  9. 1) "NAME" 
  10. 2) "ID" 
  11. 3) "City" 

3、5 客戶端驗(yàn)證同步結(jié)果

slave1端驗(yàn)證

  1. [root@redis_slave ~]# redis-cli   
  2. 127.0.0.1:6379> auth !@#aedf   
  3. 127.0.0.1:6379> keys *   
  4. 1) "City" 
  5. 2) "NAME" 
  6. 3) "ID" 
  7. 127.0.0.1:6379> MGET ID NAME City   
  8. 1) "1005" 
  9. 2) "MariaDB" 
  10. 3) "BeiJing" 

slave2端驗(yàn)證

  1. [root@redis_slave2 ~]# redis-cli   
  2. 127.0.0.1:6379> keys *   
  3. 1) "ID" 
  4. 2) "NAME" 
  5. 3) "City" 
  6. 127.0.0.1:6379> MGET ID NAME City   
  7. 1) "1005" 
  8. 2) "MariaDB" 
  9. 3) "BeiJing" 

四、Master write,Slave read機(jī)制

Redis的主從復(fù)制,通過(guò)程序?qū)崿F(xiàn)數(shù)據(jù)的讀寫分離,讓Master負(fù)責(zé)處理寫請(qǐng)求,Slave負(fù)責(zé)處理讀請(qǐng)求;通過(guò)擴(kuò)展Slave處理更多的并發(fā)請(qǐng)求,減輕Master端的負(fù)載,如下圖:

wKioL1Ozz-3yEjbBAAEZvvETcp8136.jpg

此圖畫得比較簡(jiǎn)易,展示了實(shí)現(xiàn)Redis讀寫分離的過(guò)程,通過(guò)判斷用戶讀寫請(qǐng)求,將write請(qǐng)求發(fā)送給Redis Master處理,Read請(qǐng)求發(fā)送給Redis Slave處理,文章中的不足之處,歡迎大家指點(diǎn)。

博文地址:http://cfwlxf.blog.51cto.com/3966339/1433637

責(zé)任編輯:林師授 來(lái)源: 51CTO
相關(guān)推薦

2023-09-24 14:32:15

2012-11-26 10:17:44

InnoDB

2019-05-10 15:30:18

數(shù)據(jù)庫(kù)主從復(fù)制MySQL

2011-04-06 09:59:00

MySQL數(shù)據(jù)庫(kù)主從復(fù)制

2015-03-13 19:34:41

2020-01-03 16:30:14

數(shù)據(jù)庫(kù)讀寫分離分庫(kù)

2023-03-15 08:30:37

2023-03-19 22:38:12

邏輯復(fù)制PostgreSQL

2023-12-25 08:02:09

2023-03-19 11:53:27

2021-01-12 08:03:19

Redis數(shù)據(jù)系統(tǒng)

2023-07-03 08:57:45

Master服務(wù)TCP

2020-09-24 06:39:58

MySQL數(shù)據(jù)庫(kù)

2019-02-11 09:04:24

MySQL主從復(fù)制數(shù)據(jù)庫(kù)

2017-05-03 11:43:51

Redis數(shù)據(jù)庫(kù)

2019-08-27 15:00:09

MySQL數(shù)據(jù)庫(kù)存儲(chǔ)

2015-04-22 14:41:04

云遷移Redis緩存數(shù)據(jù)模型調(diào)整

2021-06-08 07:48:27

MySQL主從配置

2024-03-01 18:33:59

MySQL節(jié)點(diǎn)數(shù)據(jù)

2025-02-10 10:55:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)