redis 备份导出rdb_redis简单安装学习
redis 介紹
Redis是noSql也就是非關(guān)系型數(shù)據(jù)庫,可以用來做緩存,緩存就是在內(nèi)存中存儲的數(shù)據(jù)備份,當(dāng)數(shù)據(jù)沒有發(fā)生本質(zhì)改變的時(shí)候,我們就不讓數(shù)據(jù)的查詢?nèi)?shù)據(jù)庫進(jìn)行操作,而去內(nèi)存中取數(shù)據(jù),這樣就大大降低了數(shù)據(jù)庫的讀寫次數(shù),而且從內(nèi)存中讀數(shù)據(jù)的速度比去數(shù)據(jù)庫查詢要快一些,這樣同時(shí)又提高了效率。
一、redis單實(shí)例搭建
1. 下載redis-5.0.4.tar.gz(最新穩(wěn)定版本)
2. 解壓源碼進(jìn)入目錄
3. make
4. make test測試編譯情況(可能出現(xiàn):need tcl >8.4這種情況,解決方法yum install tcl)
5. 安裝 make PREFIX=/usr/local/redis install
6. make install之后,redis目錄下的bin會(huì)有如下幾個(gè)文件
redis-benchmark 性能測試工具
redis-check-aof 日志文件檢測工(比如斷電造成日志損壞,可以檢測并修復(fù))
redis-check-rdb 快照文件檢測工具,效果類上
redis-cli 客戶端
redis-server 服務(wù)端
7. 復(fù)制配置文件
cp /redis-5.0.4/redis.conf /usr/local/redis
8. 編輯vim redis.conf
注釋掉 bind 127.0.0.1 這個(gè)是 設(shè)置redis 只接收來自于該 IP 地址的請求,如果不進(jìn)行設(shè)置,那么將處理所有請求。
將daemonize no 改為yes 讓redis 以后臺服務(wù)形式運(yùn)行。
9. ./bin/redis-server redis.conf 啟動(dòng)redis
./bin/redis-cli 客戶端連接
二、redis的三種集群方式
1. redis主從集群配置
復(fù)制 redis.conf 為redis6380.conf
編輯 vim redis6380.conf
將端口改6380 并設(shè)置為6379的端口從服務(wù)器(原本使用的是slaveof,但因?yàn)橛腥颂岢鰏lave是奴隸的意思冒犯到了別人就改成看了replicaof)。
如果主服務(wù)器設(shè)置了密碼如requirepass yhd123 則yhd123就是服務(wù)器密碼(這里并沒有設(shè)置密碼),那從服務(wù)器就得設(shè)置masterauth yhd123,設(shè)置從服務(wù)器為只讀replica-read-only yes。
啟動(dòng)redis 服務(wù),用客戶端連接6380,輸入info ,會(huì)發(fā)現(xiàn)6380端口的角色role是slave。而6379端口的role是master,并且有一個(gè)slave。
2. 哨兵主從集群配置
因?yàn)橹鲝募旱那闆r下 如果master突然掛掉,除非手動(dòng)將slave設(shè)置為master,再將其他slave連接到新的master,否則整個(gè)集群都不再工作,為了保證在master掛掉的情況下,集群繼續(xù)工作,需要用到哨兵模式sentinel自動(dòng)設(shè)置master并且slave連接上新master。
配置哨兵。
cp /usr/local/redis-5.0.4/sentinel.conf /usr/locla/redis
編輯 vim sentinel.conf 設(shè)置后臺服務(wù)運(yùn)行
當(dāng)2個(gè)sentinel實(shí)例都認(rèn)為master失效時(shí),正式失效。
啟動(dòng)./bin/redis-server sentinel.conf --sentinel 如需配置哨兵集群,按以上方式使用多個(gè)配置文件監(jiān)控同一個(gè)主節(jié)點(diǎn)即可。
三、redis-cluster 多主多從集群配置
編輯 vim redis.conf
cluster開啟必須重命名指定cluster-config-file,不能與別的節(jié)點(diǎn)相同,否則會(huì)啟動(dòng)失敗。
創(chuàng)建6個(gè)實(shí)列,我這里是3臺服務(wù)器 2個(gè)端口6個(gè)實(shí)例,然后將每個(gè)實(shí)例啟動(dòng)會(huì)生產(chǎn)節(jié)
點(diǎn)nodes-*.conf文件。
執(zhí)行命令創(chuàng)建命令redis-cli --cluster create ip:6379 ip:6380 ip1:6379 ip1:6380 ip2:6379 ip2:6380 --cluster-replicas 1
創(chuàng)建多主多從必須有 --cluster-replicas 1 ,不然就是6個(gè)master。
用redis客戶端連接集群./bin/redis-cli -c輸入命令查看集群信息。
查看集群節(jié)點(diǎn)cluster nodes,會(huì)看到對應(yīng)master-slave,這樣集群就搭建完畢了。任一主節(jié)點(diǎn)故障以后,從節(jié)點(diǎn)都會(huì)變?yōu)橹鞴?jié)點(diǎn),如果所有主從節(jié)點(diǎn)都故障則集群失效。
四、備份(持久化)
1. rdb持久化
save 900 1 // 900內(nèi),有1條寫入,則產(chǎn)生快照
save 300 1000 // 如果300秒內(nèi)有1000次寫入,則產(chǎn)生快照
save 60 10000 // 如果60秒內(nèi)有10000次寫入,則產(chǎn)生快照
(這3個(gè)選項(xiàng)都屏蔽,則rdb禁用)
stop-writes-on-bgsave-error yes // 后臺備份進(jìn)程出錯(cuò)時(shí),主進(jìn)程停不停止寫入?
rdbcompression yes // 導(dǎo)出的rdb文件是否壓縮
Rdbchecksum yes // 導(dǎo)入rbd恢復(fù)時(shí)數(shù)據(jù)時(shí),要不要檢驗(yàn)rdb的完整性
dbfilename dump.rdb //導(dǎo)出來的rdb文件名
dir ./ //rdb的放置路徑
2. aof持久化
appendonly no # 是否打開 aof日志功能
Appendfilename #導(dǎo)出來的aof文件名
appendfsync always # 每1個(gè)命令,都立即同步到aof. 安全,速度慢
appendfsync everysec # 折衷方案,每秒寫1次
appendfsync no # 寫入工作交給操作系統(tǒng),由操作系統(tǒng)判斷緩沖區(qū)大小,統(tǒng)一寫入到aof. 同步頻率低,速度快
no-appendfsync-on-rewrite no: # 正在導(dǎo)出rdb快照的過程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 #aof文件大小比起上次重寫時(shí)的大小,增長率100%時(shí),重寫
auto-aof-rewrite-min-size 64mb #aof文件,至少超過64M時(shí),重寫
在集群里面只要一啟動(dòng),只要rdb文件和aof沒有丟失便會(huì)自動(dòng)恢復(fù),集群里面設(shè)置的備份方式為主aof 從 rdb+aof 。
五、運(yùn)維
1. 在dump rdb過程中,aof如果停止同步,所有的操作緩存在內(nèi)存的隊(duì)列里, dump完成后,統(tǒng)一操作。
2. aof重寫是指把內(nèi)存中的數(shù)據(jù),逆化成命令,寫入到.aof日志里.以解決 aof日志過大的問題。
3. 如果rdb文件,和aof文件都存在,優(yōu)先用aof來恢復(fù)數(shù)據(jù)。
4. 恢復(fù)時(shí)rdb快,因?yàn)槠涫菙?shù)據(jù)的內(nèi)存映射,直接載入到內(nèi)存,而aof是命令,需要逐條執(zhí)行。
5. 運(yùn)維的一些命令
BGREWRITEAOF 后臺進(jìn)程重寫AOF
BGSAVE 后臺保存rdb快照
SAVE 保存rdb快照
LASTSAVE 上次保存時(shí)間
Slaveof master-Host port , 把當(dāng)前實(shí)例設(shè)為master的slave
Flushall 清空所有庫所有鍵
Flushdb 清空當(dāng)前庫所有鍵
Showdown 關(guān)閉服務(wù)器
注: 如果不小心運(yùn)行了flushall, 立即 shutdown nosave ,關(guān)閉服務(wù)器
然后手工編輯aof文件,去掉文件中的 “flushall ”相關(guān)行,然后開啟服務(wù)器,就可以導(dǎo)入回原來數(shù)據(jù).如果,flushall之后,系統(tǒng)恰好bgrewriteaof了,那么aof就清空了,數(shù)據(jù)丟失.
Slowlog 顯示慢查詢
由slowlog-log-slower-than 10000,來指定多慢。(單位是微秒)
由 slowlog-max-len 128 ,來做限制服務(wù)器儲存多少條慢查詢的記錄。
Info [Replication/CPU/Memory..]
查看redis服務(wù)器的信息
6.Redis運(yùn)維時(shí)需要注意的參數(shù)
內(nèi)存
# Memory
used_memory:859192 數(shù)據(jù)結(jié)構(gòu)的空間
used_memory_rss:7634944 實(shí)占空間
mem_fragmentation_ratio:8.89 前2者的比例,1.N為佳,如果此值過大,說明redis的內(nèi)存的碎片化嚴(yán)重,可以導(dǎo)出再導(dǎo)入一次.
主從復(fù)制
# Replication
role:slave
master_host:192.168.1.128
master_port:6379
master_link_status:up
持久化
# Persistence
rdb_changes_since_last_save:0
rdb_last_save_time:1375224063
fork耗時(shí)
#Status
latest_fork_usec:936 上次導(dǎo)出rdb快照,持久化花費(fèi)微秒
注意: 如果某實(shí)例有10G內(nèi)容,導(dǎo)出需要2分鐘,
每分鐘寫入10000次,導(dǎo)致不斷的rdb導(dǎo)出,磁盤始處于高IO狀態(tài).
慢日志
config get/set slowlog-log-slower-than
CONFIG get/SET slowlog-max-len
slowlog get N 獲取慢日志
運(yùn)行時(shí)更改master-slave
修改一臺slave(設(shè)為A)為new master
1) 命令該服務(wù)不做其他redis服務(wù)的slave
命令: slaveof no one
2) 修改其readonly為yes
其他的slave再指向new master A
1) 命令該服務(wù)為new master A的slave
命令格式 slaveof IP port
總結(jié)
以上是生活随笔為你收集整理的redis 备份导出rdb_redis简单安装学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8 使用_【化学技能8】 酸式滴定管的使
- 下一篇: ios 设备获取idfa_超4成用户选择