Redis主從復制(基于docker)的配置和實現(xiàn)原理

  • 這篇文章難度很低,但是我為什么還是記錄下來呢帘睦?因為網(wǎng)絡上的技術(shù)文章寫的相當xxxxxx,作為一個新手效拭,可能要繞很大一個彎子

  • 按照慣例,先貼一份redis配置文件,此處附鏈接了,為了避免說不是原創(chuàng) ,redis配置文件

  • 使用docker下載redis鏡像
    docker pull redis

  • 創(chuàng)建配置文件
    1.在我的家目錄創(chuàng)建redis目錄/home/guofu/redis

2.進入redis目錄瓣蛀,先從官網(wǎng)拷貝一份配置文件下來wget http://download.redis.io/redis-stable/redis.conf,然后復制2份

guofu@guofu-Inspiron-3558 redis $ ls
command  redis1.conf  redis2.conf  redis.conf

3.使用redis.conf作為主服務器配置文件字支,主要修改以下內(nèi)容

#關(guān)閉保護模式
protected-mode no
#使用默認端口6379
port 6379
#允許后臺運行
daemonize yes
#可改可不改凤藏,如果是在一臺機器上面運行,必須修改
pidfile /var/run/redis_6379.pid
#日志文件堕伪,自定義
logfile "/var/log/redis/redis_6379.log"
  • 啟動一個redis實例吧揖庄,先看一下啟動命令我再解釋
#創(chuàng)建實例
guofu@guofu-Inspiron-3558 redis $ docker run --rm -d -p 16379:6379 --name mredis  \
> -v /home/guofu/redis:/conf  \
> -v  /home/guofu/redis/log/redis:/var/log/redis  \
> -v /home/guofu/redis/data:/data \
> redis  
a1072b562eb6a3e0478d9fc4bccfd322f749a75d50462206fbdcd79abc4efb6b
guofu@guofu-Inspiron-3558 redis $ docker ps -a 
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                      PORTS                                                                                                    NAMES
a1072b562eb6        redis                    "docker-entrypoint.s…"   18 seconds ago      Up 15 seconds               0.0.0.0:16379->6379/tcp     
  • 命令解釋
    參數(shù):
    --rm 在容器終止運行后自動刪除容器文件
    -d 后臺運行
    -p 6379:6379 端口映射(本機6379端口映射容器6379端口)
    --name myredis 容器別名
    -v /etc/app/redis/conf:/conf 目錄映射(本機redis配置文件目錄)
    -v /etc/app/redis/data:/data 目錄映射(本機redis數(shù)據(jù)目錄)
    redis-server /conf/redis.conf --appendonly yes 在容器運行命令,并打開數(shù)據(jù)持久化
  • 看看這些掛載目錄欠雌,宿主機都要存在哦蹄梢,沒有的話就創(chuàng)建
  • 進入容器啟動redis服務,指定配置文件
guofu@guofu-Inspiron-3558 redis $ docker exec -it a1072b562eb6 bash 
root@a1072b562eb6:/data# /usr/local/bin/redis-server  /conf/redis.conf 

#連接一下客戶端
root@a1072b562eb6:/data# /usr/local/bin/redis-cli                      
127.0.0.1:6379> info
#現(xiàn)在主從配置如下
# Replication
role:master
connected_slaves:0
master_replid:3167f202ef2507ed27172915040114d994d3069d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

#執(zhí)行一條命令
127.0.0.1:6379> set name jimi 
OK

  • 關(guān)閉客戶端鏈接富俄,查看一下本容器的ip
root@a1072b562eb6:/data# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#下面這個就是ip啦禁炒,記住這個ip
172.17.0.2  a1072b562eb6
  • 主服務器創(chuàng)建完畢,退出霍比,快捷鍵 ctrl+p+q;

  • 修改redis1.conf作為從服務器配置文件幕袱,主要修改以下內(nèi)容

#關(guān)閉保護模式
protected-mode no
#使用端口6371
port 6371
#允許后臺運行
daemonize yes
#可改可不改,如果是在一臺機器上面運行悠瞬,必須修改
pidfile /var/run/redis_6371.pid
#日志文件们豌,自定義
logfile "/var/log/redis/redis_6371.log"
#開啟從服務模式 ,對應主的ip和端口
replicaof 172.17.0.2 6379
  • 啟動redis1.conf
guofu@guofu-Inspiron-3558 bin $  docker run --rm -d -p 16371:6371 --name sredis1  \
> -v /home/guofu/redis:/conf  \
> -v  /home/guofu/redis/log/redis:/var/log/redis  \
> -v /home/guofu/redis/data1:/data \
> redis  
b85b72c43c835946410ff56c82c821825031e276f2ed2f5d20bcb305ac92715a

#進入容器配置
guofu@guofu-Inspiron-3558 bin $ docker exec -it b85b72c43c835946410ff56c82c821 bash 
root@b85b72c43c83:/data# /usr/local/bin/redis-server /conf/redis1.conf 
root@b85b72c43c83:/data# /usr/local/bin/redis-cli -h 127.0.0.1 -p 6371 
127.0.0.1:6371> info
#主從信息如下
# Replication
role:slave
master_host:172.17.0.2
master_port:6379
master_link_status:up
#獲取主服務器剛才設(shè)置的name;
127.0.0.1:6371> get name
"jimi"
  • 相同方法啟動redis2.conf浅妆,不細說玛痊,此處說一下如何查看容器內(nèi)的進程
guofu@guofu-Inspiron-3558 redis $ docker top sredis2
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
999                 11447               11415               0                   20:51               ?                   00:00:00            redis-server *:6379
root                11539               11415               0                   20:51               pts/0               00:00:00            bash
root                11580               11447               0                   20:52               ?                   00:00:00            /usr/local/bin/redis-server 127.0.0.1:6371
  • redis2.conf啟動效果如下
# Replication
role:slave
master_host:172.17.0.2
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:1148
slave_priority:100

127.0.0.1:6372> get name
"jimi"

  • 至此,三臺redis部署已經(jīng)完畢
  • 主從復制的原理剖析狂打,小蟲發(fā)現(xiàn)已經(jīng)有朋友總結(jié)的很好了擂煞,鏈接貼出
    Redis主從復制原理剖析
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市趴乡,隨后出現(xiàn)的幾起案子对省,更是在濱河造成了極大的恐慌,老刑警劉巖晾捏,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒿涎,死亡現(xiàn)場離奇詭異毅贮,居然都是意外死亡的妖,警方通過查閱死者的電腦和手機傀履,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門巩趁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魄健,“玉大人,你說我怎么就攤上這事舰涌〗赴纾” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵补履,是天一觀的道長添坊。 經(jīng)常有香客問我,道長箫锤,這世上最難降的妖魔是什么贬蛙? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮谚攒,結(jié)果婚禮上阳准,老公的妹妹穿的比我還像新娘。我一直安慰自己馏臭,他們只是感情好溺职,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著位喂,像睡著了一般浪耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上塑崖,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天七冲,我揣著相機與錄音,去河邊找鬼规婆。 笑死澜躺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的抒蚜。 我是一名探鬼主播掘鄙,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗡髓!你這毒婦竟也來了操漠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饿这,失蹤者是張志新(化名)和其女友劉穎浊伙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體长捧,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡嚣鄙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了串结。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑子。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡舅列,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卧蜓,到底是詐尸還是另有隱情帐要,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布烦却,位于F島的核電站宠叼,受9級特大地震影響先巴,放射性物質(zhì)發(fā)生泄漏其爵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一伸蚯、第九天 我趴在偏房一處隱蔽的房頂上張望摩渺。 院中可真熱鬧,春花似錦剂邮、人聲如沸摇幻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绰姻。三九已至,卻和暖如春引瀑,著一層夾襖步出監(jiān)牢的瞬間狂芋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工憨栽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帜矾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓屑柔,卻偏偏與公主長得像屡萤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掸宛,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容