日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis主从复制的搭建与.哨兵.数据持久

發布時間:2025/3/21 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis主从复制的搭建与.哨兵.数据持久 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一.redis主從復制

1.主從復制的概述

2.一主一從結構的配置

二.哨兵服務

1. 哨兵服務的簡單介紹

2.配置哨兵服務

三.數據持久化

1.RedisDataBase(RDB)

2.Append Only File(AOF)


一.redis主從復制

1.主從復制的概述

????????- slave向master發送sync命令

????????- master啟動后臺存盤進程,并收集所有修改數據命令- master完成后臺存盤后,傳送整個數據文件到s lave

????????- slave接收數據文件,加載到內存中完成首次完全同步

????????-后續有新數據產生時,master繼續收集數據修改命令依次傳給slave,完成同步

2.一主一從結構的配置

????????redis1:192.168.1.11

????????redis2:192.168.1.12

redis安裝配置參考

NOSQL的Redis的基礎_kali_yao的博客-CSDN博客

如果已經安裝就需要配置如下:

1)恢復redis1和redis2的redis默認配置

[root@redis1 ~]# vim /etc/redis/6379.conf # cluster-enabled yes # cluster-config-file nodes-6379.conf # cluster-node-timeout 5000 ? [root@redis1 ~]# service redis_6379 stop [root@redis1 ~]# rm -f /var/lib/redis/6379/* [root@redis1 ~]# service redis_6379 start ? [root@redis2 ~]# vim /etc/redis/6379.conf # cluster-enabled yes # cluster-config-file nodes-6379.conf # cluster-node-timeout 5000 ? [root@redis2 ~]# service redis_6379 stop [root@redis2 ~]# rm -f /var/lib/redis/6379/* [root@redis2 ~]# service redis_6379 start

2)默認redis都是主服務器,所以無需配置

[root@redis1 ~]# redis-cli 127.0.0.1:6379> INFO replication # Replication role:master connected_slaves:0 master_replid:a839f0060f5e8d9894a1fafeeea973c3c52e5e71 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

3)配置redis2(192.168.1.12)為redis1的從服務器

[root@redis2 ~]# redis-cli 127.0.0.1:6379> SLAVEOF 192.168.1.11 6379 OK ? 127.0.0.1:6379> INFO replication # Replication role:slave master_host:192.168.1.11 master_port:6379 master_link_status:up master_last_io_seconds_ago:3 master_sync_in_progress:0 slave_repl_offset:14 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:7a4326738b63379fc5def4177a1ba6fff33d0a98 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:14 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:14 [root@redis2 ~]# vim /etc/redis/6379.conf slaveof 192.168.1.11 6379

4)通過命令進行配置(臨時生效)

  • 永久生效

  • 測試配置

# 在主服務器上添加數據 [root@redis1 ~]# redis-cli 127.0.0.1:6379> SET name tom OK 127.0.0.1:6379> SET email tom@tedu.cn OK ? # 在從服務器上查看同步的數據 [root@redis2 ~]# redis-cli 127.0.0.1:6379> KEYS * 1) "name" 2) "email" ? 127.0.0.1:6379> MGET name email 1) "tom" 2) "tom@tedu.cn"配置帶驗證的主從復制基于以上示例【一主一從結構】,配置認證redis1:192.168.1.11redis2:192.168.1.12

5)配置主服務器redis1的連接密碼為tedu.cn

# 設置密碼 [root@redis1 ~]# vim +501 /etc/redis/6379.conf requirepass tedu.cn ? # 修改服務腳本 [root@redis1 ~]# vim +43 /etc/init.d/redis_6379$CLIEXEC -p $REDISPORT -a tedu.cn shutdown# 重啟服務 [root@redis1 ~]# service redis_6379 restart Stopping ... Redis stopped Starting Redis server...

6)配置從服務器

# 修改配置文件,設置主服務器連接密碼 [root@redis2 ~]# vim +289 /etc/redis/6379.conf masterauth tedu.cn# 重啟服務 [root@redis2 ~]# service redis_6379 restart Stopping ... Redis stopped Starting Redis server...

7)在從服務器本機連接服務,查看復制信息

[root@redis2 ~]# redis-cli

127.0.0.1:6379> info replication # Replication role:slave # 角色為從服務器 master_host:192.168.1.11 # 主服務器地址 master_port:6379 # 主服務器端口 master_link_status:up # 到主服務器的連接狀態 master_last_io_seconds_ago:2 master_sync_in_progress:0 slave_repl_offset:70 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:94e2bea7fc81fa71b1193df29b0984190c01bacc master_replid2:0000000000000000000000000000000000000000 master_repl_offset:70 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:70

二.哨兵服務

1. 哨兵服務的簡單介紹

?監視master服務器

????????發現master宕機后,將從服務器升級為主服務器

2.配置哨兵服務

1)準備

cluster

redis2:192.168.1.12

redis1:192.168.1.11

192.168.1.19

基于以上示例【配置帶驗證的主從復制】,配置哨兵服務

2)配置哨兵服務

# 在redis服務器(如redis1)上,拷貝哨兵程序到哨兵服務器 [root@redis1 ~]# scp -r /usr/local/redis 192.168.1.19:/usr/local# 在sentinel1上,將redis命令目錄添加至PATH環境變量 [root@sentinel1 ~]# echo 'export PATH=$PATH:/usr/local/redis/bin' >> /etc/bashrc [root@sentinel1 ~]# source /etc/bashrc# 創建哨兵配置文件 [root@sentinel1 ~]# vim /etc/sentinel.conf sentinel monitor redis1 192.168.1.11 6379 1 # 監視主服務器 bind 0.0.0.0 # 哨兵服務運行地址 sentinel auth-pass redis1 tedu.cn # 連接主服務器的密碼

3)啟動哨兵服務

[root@sentinel1 ~]# redis-sentinel /etc/sentinel.conf 30557:X 12 May 10:12:44.026 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 30557:X 12 May 10:12:44.026 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=30557, just started 30557:X 12 May 10:12:44.026 # Configuration loaded 30557:X 12 May 10:12:44.028 * Increased maximum number of open files to 10032 (it was originally set to 1024)._.__.-``__ ''-.__.-`` `. `_. ''-._ Redis 4.0.8 (00000000/0) 64 bit.-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 26379 | `-._ `._ / _.-' | PID: 30557`-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io`-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' |`-._ `-._`-.__.-'_.-' _.-'`-._ `-.__.-' _.-'`-._ _.-'`-.__.-'30557:X 12 May 10:12:44.033 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 30557:X 12 May 10:12:44.049 # Sentinel ID is 40460aaa4df5543a000bf8f464c6698a712d2697 30557:X 12 May 10:12:44.049 # +monitor master redis1 192.168.1.11 6379 quorum 1 30557:X 12 May 10:12:44.051 * +slave slave 192.168.1.12:6379 192.168.1.12 6379 @ redis1 192.168.1.11 6379

4)測試配置

# 停止主服務器redis1的redis服務 [root@redis1 ~]# service redis_6379 stop Stopping ... Redis stopped# 在redis2上查看redis服務狀態 [root@redis2 ~]# redis-cli 127.0.0.1:6379> info replication # Replication role:master # 已經變為主服務器 connected_slaves:0 master_replid:da33c07e16dc1b90d14a20004e9f5d9b3a7b9081 master_replid2:94e2bea7fc81fa71b1193df29b0984190c01bacc master_repl_offset:10054 second_repl_offset:8936 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:10054

5)啟動redis1,查看redis1信息

[root@redis1 ~]# service redis_6379 start Starting Redis server...[root@redis1 ~]# redis-cli -a tedu.cn 127.0.0.1:6379> info replication # Replication role:slave # 角色為從服務器 master_host:192.168.1.12 # 主服務器地址 master_port:6379 # 主服務器端口 master_link_status:up # 到主服務器的連接狀態 master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:62014 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:da33c07e16dc1b90d14a20004e9f5d9b3a7b9081 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:62014 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:61430 repl_backlog_histlen:585

三.數據持久化

1.RedisDataBase(RDB)

1)RDB的概述

  • 數據持久化方式之一

  • 數據持久化默認方式

  • 按照指定時間間隔,將內存中的數據集快照寫入硬盤

  • 通過RDB進行備份還原,只要拷貝RDB文件即可

  • 數據從內存保存到磁盤的頻率設置

save 900 1????????????? //15分鐘內有1個key改變即存盤?
save 300 10????????????? //5分鐘內有10個key改變即存盤
save 60 10000??????????? //1分鐘內有10000個key改變即存盤

  • 也可以進行手動存盤

save?????????? //阻塞寫存盤
bgsave???? //不阻塞寫存盤

2)RDB的優缺點

  • 優點:

    • 高性能的持久化實現:創建一個子進程來執行持久化,先將數據寫入臨時文件,持久化過程結束后,再用這個臨時文件替換上次持久化好的文件

    • 過程中主進程不做任何IO操作

    • 比較適合大規模數據恢復,且對數據完整性要求不是非常高的場合

  • 缺點:

    • 意外宕機時,丟失最后一次持久化的所有數據

3)配置RDB

  • 配置RDB參數

# [root@redis7 ~]# vim /etc/redis/6379.conf dbfilename dump.rdb save 900 1 #save 300 10 save 120 10 save 60 10000
  • 清空rdb數據

# 停止redis服務 [root@redis7 ~]# service redis_6379 stop Stopping ... Redis stopped# 刪除數據 [root@redis7 ~]# rm -rf /var/lib/redis/6379/*# 啟動服務 [root@redis7 ~]# service redis_6379 start Starting Redis server...# 查看數據文件,因為沒有存儲過任何數據,所以不存在RDB文件 [root@redis7 ~]# ls /var/lib/redis/6379/
  • 存儲數據

# 120秒內添加10個數據 [root@redis7 ~]# redis-cli 127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 k4 v4 k5 v5 OK 127.0.0.1:6379> MSET k6 v6 k7 v7 k8 v8 k9 v9 k10 v10 OK127.0.0.1:6379> KEYS * 1) "k10" 2) "k2" 3) "k3" 4) "k9" 5) "k8" 6) "k4" 7) "k5" 8) "k7" 9) "k6" 10) "k1" 127.0.0.1:6379> exit[root@redis7 ~]# ls /var/lib/redis/6379/ dump.rdb
  • 驗證備份還原

# 備份數據文件 [root@redis7 ~]# cp /var/lib/redis/6379/dump.rdb ~/# 模擬誤刪除數據 [root@redis7 ~]# redis-cli 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> KEYS * (empty list or set) 127.0.0.1:6379> exit# 恢復數據 [root@redis7 ~]# service redis_6379 stop Stopping ... Redis stopped[root@redis7 ~]# cp dump.rdb /var/lib/redis/6379/ # 用備份文件覆蓋目標文件 cp: overwrite ‘/var/lib/redis/6379/dump.rdb’? y# 啟動服務并驗證 [root@redis7 ~]# service redis_6379 start Starting Redis server... [root@redis7 ~]# redis-cli 127.0.0.1:6379> KEYS * 1) "k6" 2) "k3" 3) "k4" 4) "k1" 5) "k8" 6) "k7" 7) "k9" 8) "k5" 9) "k10" 10) "k2"

2.Append Only File(AOF)

1)AOF的概述

  • 追加方式記錄寫操作的文件

  • 記錄redis服務所有寫操作

  • 不斷的將新的寫操作,追加到文件的末尾

  • 默認沒有啟用

  • 使用cat命令可以查看文件內容

2)AOF文件記錄寫操作的方式

  • appendfsync always:時時記錄,并完成磁盤同步

  • appendfsync everysec :每秒記錄一次,并完成磁盤同步

  • appendfsync no:寫入aof ,不執行磁盤同步

3)AOF優點與缺點

  • 優點:

    • 可以靈活設置持久化方式

    • 出現意外宕機時,僅可能丟失1秒的數據

  • 缺點:

    • 持久化文件的體積通常會大于RDB方式

    • 執行fsync策略時的速度可能會比RDB方式慢

4)配置AOF

  • 修改配置文件

[root@redis7 ~]# redis-cli 127.0.0.1:6379> CONFIG SET appendonly yes OK 127.0.0.1:6379> CONFIG REWRITE OK 127.0.0.1:6379> SAVE OK 127.0.0.1:6379> exit# 查看AOF文件 [root@redis7 ~]# ls /var/lib/redis/6379/ appendonly.aof dump.rdb
  • 驗證備份還原

# 備份AOF文件 [root@redis7 ~]# cp /var/lib/redis/6379/appendonly.aof ~/# 刪除數據 [root@redis7 ~]# redis-cli 127.0.0.1:6379> KEYS * 1) "k6" 2) "k3" 3) "k4" 4) "k1" 5) "k8" 6) "k7" 7) "k9" 8) "k5" 9) "k10" 10) "k2" 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> KEYS * (empty list or set) 127.0.0.1:6379> exit# 恢復數據 [root@redis7 ~]# service redis_6379 stop Stopping ... Redis stopped [root@redis7 ~]# rm -rf /var/lib/redis/6379/* [root@redis7 ~]# cp appendonly.aof /var/lib/redis/6379/# 啟動服務并驗證 [root@redis7 ~]# service redis_6379 start Starting Redis server... [root@redis7 ~]# redis-cli 127.0.0.1:6379> KEYS * 1) "k10" 2) "k3" 3) "k2" 4) "k9" 5) "k1" 6) "k6" 7) "k5" 8) "k8" 9) "k7" 10) "k4"

總結

以上是生活随笔為你收集整理的Redis主从复制的搭建与.哨兵.数据持久的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。