日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

目錄

 

一、背景

 

二、步驟

 

0.理論支持

 

1、獲取數(shù)據(jù)

 

2、結(jié)果

 

3、分析數(shù)據(jù)并評(píng)估大小

 

三、關(guān)于repl-backlog-size

 


 

一、背景

 

repl-backlog-size控制這個(gè)環(huán)形緩沖區(qū).

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

 

主從斷開之后會(huì)發(fā)生什么?環(huán)形隊(duì)列被覆蓋會(huì)發(fā)生什么?

 

如果從庫的讀取速度比較慢,就有可能導(dǎo)致從庫還未讀取的操作被主庫新寫的操作覆蓋了,這會(huì)導(dǎo)致主從庫間的數(shù)據(jù)不一致

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

 

repl_backlog_buffer 是一個(gè)環(huán)形緩沖區(qū)主庫會(huì)記錄自己寫到的位置,從庫則會(huì)記錄自己 已經(jīng)讀到的位置。

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

 

主從庫的連接恢復(fù)之后,從庫首先會(huì)給主庫發(fā)送 psync 命令,并把自己當(dāng)前的 slave_repl_offset 發(fā)給主庫,主庫會(huì)判斷自己的 master_repl_offset 和 slave_repl_offset 之間的差距。

 

在不影響正常業(yè)務(wù)的情況下redis主從同步時(shí)總會(huì)出現(xiàn)timeout,部分同步失敗的情況。需要評(píng)估一下repl-backlog-size的大小,來避免復(fù)制時(shí)出現(xiàn)異常

 

二、步驟

 

0.理論支持

 

這個(gè)參數(shù)和所需的緩沖空間大小有關(guān)。緩沖空間的計(jì)算公式是:緩沖空間大小 = 主庫 寫入命令速度 * 操作大小 - 主從庫間網(wǎng)絡(luò)傳輸命令速度 * 操作大小。在實(shí)際應(yīng)用中,考慮 到可能存在一些突發(fā)的請求壓力,我們通常需要把這個(gè)緩沖空間擴(kuò)大一倍,

 

即 repl_backlog_size = 緩沖空間大小 * 2,這也就是 repl_backlog_size 的最終值。

 

如果主庫每秒寫入 2000 個(gè)操作,每個(gè)操作的大小為 2KB,網(wǎng)絡(luò)每秒能傳輸 1000 個(gè)操作,那么,有 1000 個(gè)操作需要緩沖起來,這就至少需要 2MB 的緩沖空間。否 則,新寫的命令就會(huì)覆蓋掉舊操作了。為了應(yīng)對可能的突發(fā)壓力,我們最終把 repl_backlog_size 設(shè)為 4MB。

 

1、獲取數(shù)據(jù)

 

借助redis-cli 、info replication..收集master_repl_offset每一分鐘前后的數(shù)據(jù),其中使用了sed 和awk命令對數(shù)據(jù)進(jìn)行處理,為后期分析提供便利。

 

腳本如下

 

#!/bin/bash
# @date: 2020-07-02
# @author: ninesun
# @parm : null
# @desc: save master_repl_offset by mins

echo "start!"
for((i=6379; i<6387; i++))
do
redis-cli -p $i info replication|grep master_repl_offset|sed 's/:/|/g'|awk '{print strftime("%Y-%m-%d %H:%M:%S"),$0}'|sed 's/ /|/g'|sed 's/|/ /'|sed '
s/^/'$i|'/' >> /home/scripts/redis/redisParm.csv
echo "port $i save successful!"
done
echo "end!"

 

redis主從同步參數(shù)repl_backlog_size測算

 

2、結(jié)果

 

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

 

3、分析數(shù)據(jù)并評(píng)估大小

 

將格式化號(hào)的數(shù)據(jù)借助GP的gpfdist裝載到數(shù)據(jù)庫中。

 

3.1 建表

 

create table sor.redisparam_info
( port character varying( 50 ), evt_timestamp timestamp( 0 ) without time zone, 
param character varying( 200 ),param_value character varying( 200 ),
CONSTRAINT redisparam_info_pkey PRIMARY KEY (evt_timestamp,port))
DISTRIBUTED by( evt_timestamp )
partition by range( evt_timestamp )( partition p202004 start( '2020-04-01'::date )
end( '2020-04-30'::date ), partition p202005 start( '2020-05-01'::date )
end( '2020-05-31'::date ), partition p202006 start( '2020-06-01'::date )
end( '2020-06-30'::date ), partition p202007 start( '2020-07-01'::date )
end( '2020-07-31'::date ), partition p202008 start( '2020-08-01'::date )
end( '2020-08-31'::date ), partition p202009 start( '2020-09-01'::date )
end( '2020-09-30'::date ), partition p202010 start( '2020-10-01'::date )
end( '2020-10-31'::date ), partition p202011 start( '2020-11-01'::date )
end( '2020-11-30'::date ), partition p202012 start( '2020-12-01'::date )
end( '2020-12-31'::date ));

drop external table ext_redisparam_info	

CREATE EXTERNAL TABLE ext_redisparam_info (like sor.redisparam_info) LOCATION (
    'gpfdist://******:8100/redisParm.csv'
) FORMAT 'text' (delimiter E'|' null E'\N' escape E'\') 
 SEGMENT REJECT LIMIT 1000 ROWS

 

redis主從同步參數(shù)repl_backlog_size測算

 

3.2 使用表數(shù)據(jù)分析。

 

開啟gpfdist后,如果不需要存入堆表,可直接在外部表上進(jìn)行分析。

 

分析sql如下,邏輯為by 時(shí)間排序,計(jì)算前后兩者差距。使用

 

select *,round(t.diff/1024.0,2) as kb,round(t.diff/1024.0/1024.0,2) mb
from( select *, param_value::bigint -( lead( param_value::bigint ) over(
order by evt_timestamp desc )) as diff
from sor.redisparam_info
where port = '6384'
 ) t

 

redis主從同步參數(shù)repl_backlog_size測算

 

結(jié)果

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

 

3.3 最終分析結(jié)果

 

取8個(gè)node的平均值,最終得到一個(gè)估計(jì)結(jié)果。

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

redis主從同步參數(shù)repl_backlog_size測算

 


redis主從同步參數(shù)repl_backlog_size測算

 

?

 

三、關(guān)于repl-backlog-size

 

這個(gè)參數(shù)官方的解釋。

 

# Set the replication backlog size. The backlog is a buffer that accumulates
# slave data when slaves are disconnected for some time, so that when a slave
# wants to reconnect again, often a full resync is not needed, but a partial
# resync is enough, just passing the portion of data the slave missed while
# disconnected.
#
# The bigger the replication backlog, the longer the time the slave can be
# disconnected and later be able to perform a partial resynchronization.
#
# The backlog is only allocated once there is at least a slave connected.
#
# repl-backlog-size 1mb

 

redis主從同步參數(shù)repl_backlog_size測算

 

我的疑問

 

redis 2.8 psync · Issue #1400 · redis/redis · GitHub

分享到:
標(biāo)簽:redis
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評(píng)定2018-06-03

通用課目體育訓(xùn)練成績評(píng)定