【Redis】slaveof 報錯 Background transfer error
在slave上執行slaveof到master上,遲遲未成功。
檢查master的redis程式日誌輸出如下:
手動通過stat檢查了一下rdb檔案,確認bgsave成功。
報錯也顯示為transfer error,大致判定為rdb檔案在transfer到slave的時候報錯。
google了一下發現應該是client-output-buffer-limit設定過小。
〇 client-output-buffer-limit
在文件中指出,該引數用於限制client緩衝區的限制。
redis的client被分為三種型別:normal、slave、pubsub。
normal:正常的客戶端幷包括MONITOR客戶端
slave:slave客戶端
pubsub:pub/sub客戶端
其設定方式為:
client-output-buffer-limit [class] [hard limit] [soft limit] [soft seconds]
[class]為client的型別。
[hard limit]為硬限制,即超過[hard limit]值的緩衝區客戶端會被強制中斷。
[soft limit] [soft seconds]為軟限制,即持續[soft seconds]時間內,超過[soft limit]的緩衝區客戶端會被強制中斷。
當然,預設情況下普通client不受限制(設定為0),因為如果以推送的方式(不詢問),在請求之後才接收到資料,那麼只有非同步客戶端可能會建立一個請求資料的速度超過其讀取速度的情況。
而slave和pubsub client有一個預設限制,因為他們以推送的方式接收資料。
此處將slave的hard limit設定為32G。
config set client-output-buffer-limit "normal 0 0 0 slave 34359738368 268435456 600 pubsub 33554432 8388608 60"
重新slaveof後,觀察info replication和主庫redis程式日誌,建立複製成功:
複製建立好後,將client-output-buffer-limit改為預設值。
作者微信公眾號:
檢查master的redis程式日誌輸出如下:
-
427:S 03 May 20:32:07.320 * Slave 10.9.95.71:6379 asks for synchronization
-
427:S 03 May 20:32:07.320 * Unable to partial resync with slave $slaveip:6379 for lack of backlog (Slave request was: 5974421660).
-
427:S 03 May 20:32:07.320 * Delay next BGSAVE for SYNC
-
427:S 03 May 20:32:13.350 * Starting BGSAVE for SYNC with target: slaves sockets
-
427:S 03 May 20:32:14.333 * Background RDB transfer started by pid 478
-
427:S 03 May 20:35:04.136 # Connection with slave $slaveip lost.
- 427:S 03 May 20:35:04.912 # Background transfer error
手動通過stat檢查了一下rdb檔案,確認bgsave成功。
報錯也顯示為transfer error,大致判定為rdb檔案在transfer到slave的時候報錯。
google了一下發現應該是client-output-buffer-limit設定過小。
〇 client-output-buffer-limit
在文件中指出,該引數用於限制client緩衝區的限制。
redis的client被分為三種型別:normal、slave、pubsub。
normal:正常的客戶端幷包括MONITOR客戶端
slave:slave客戶端
pubsub:pub/sub客戶端
其設定方式為:
client-output-buffer-limit [class] [hard limit] [soft limit] [soft seconds]
[class]為client的型別。
[hard limit]為硬限制,即超過[hard limit]值的緩衝區客戶端會被強制中斷。
[soft limit] [soft seconds]為軟限制,即持續[soft seconds]時間內,超過[soft limit]的緩衝區客戶端會被強制中斷。
當然,預設情況下普通client不受限制(設定為0),因為如果以推送的方式(不詢問),在請求之後才接收到資料,那麼只有非同步客戶端可能會建立一個請求資料的速度超過其讀取速度的情況。
而slave和pubsub client有一個預設限制,因為他們以推送的方式接收資料。
此處將slave的hard limit設定為32G。
config set client-output-buffer-limit "normal 0 0 0 slave 34359738368 268435456 600 pubsub 33554432 8388608 60"
重新slaveof後,觀察info replication和主庫redis程式日誌,建立複製成功:
-
427:S 03 May 21:41:16.962 * Slave $slaveip:6379 asks for synchronization
-
427:S 03 May 21:41:16.984 * Full resync requested by slave $slaveip:6379
-
427:S 03 May 21:41:16.984 * Delay next BGSAVE for SYNC
-
427:S 03 May 21:41:22.712 * Starting BGSAVE for SYNC with target: slaves sockets
-
427:S 03 May 21:41:23.679 * Background RDB transfer started by pid 568
-
568:C 03 May 21:51:14.107 * RDB: xxxxx MB of memory used by copy-on-write
-
427:S 03 May 21:51:15.012 * Background RDB transfer terminated with success
-
427:S 03 May 21:51:15.012 # Slave $slaveip:6379 correctly received the streamed RDB file.
- 427:S 03 May 21:51:15.012 * Streamed RDB transfer with slave $slaveip:6379 succeeded (socket). Waiting for REPLCONF ACK from slave to enable streaming
複製建立好後,將client-output-buffer-limit改為預設值。
作者微信公眾號:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2154243/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ERROR 1045 (28000): ProxySQL Error: 報錯ErrorSQL
- redis報錯Redis
- 連線華為雲的Redis服務報錯“Error: Connection reset by peer”RedisError
- 網站報錯:“Database Server Error”網站DatabaseServerError
- pip install scrapy報錯:error: UnableError
- 記錄redis佇列read error on connection to錯誤Redis佇列Error
- Redis 佇列報錯Redis佇列
- redis叢集報錯Redis
- Ubuntu 系統 apt 報錯:relocation errorUbuntuAPTError
- weblogic報錯: OPatch failed with error code 73WebAIError
- ogg報錯error 11, Resource temporarily unavailableErrorAI
- 反序列 unserialize(): Error 報錯問題Error
- error: RPC failed; curl 18 transfer closed with outstanding read data remainingErrorRPCAIREM
- Redis 3.2.1從庫啟動報錯"Error condition on socket for SYNC"問題解決一例RedisError
- Oracle dataguard報錯:Error 1017 received logging on to the standbyOracleError
- linux系統報錯AER PCIe Bus ErrorLinuxError
- 執行flutter run命令報錯::ERROR: Could not connect to lockdownd, error code -17FlutterError
- redis : Can't save in background: fork: Cannot allocate memoryRedis
- appium start session 時報錯 Error executing adbExec. Original error 求指點APPSessionError
- VUE: npm run dev報錯Error: error:0308010C:digital envelope routines::unsupportedVueNPMdevErrorGit
- cmake報錯CMake Error: Could not find CMAKE_ROOTError
- MySQL 啟動報錯 error while loading shared librariesMySqlErrorWhile
- 使用Boost庫報error C4996錯誤Error996
- 【ERROR】su user報'This account is currently not available'錯誤 for linuxErrorAILinux
- ssh-add 報錯:Error connecting to agent No such file or directoryError
- ElasticSearch啟動報錯 ERROR: [4] bootstrap checks failedElasticsearchErrorbootAI
- redis rebloom 報錯 Maximum expansions reachedRedisOOM
- GTID複製報錯處理:Last_Error: Error 'Can't drop database 'test';ASTErrorDatabase
- win10 驅動簽名 報錯,Error =52Win10Error
- rabbitMq的status報錯Error: unable to perform an operation on node ‘rabbit……MQErrorORM
- AndroidStudio編譯時報錯Error:Please select Android SDKAndroid編譯Error
- MySQL建立觸發器時報錯Error Code: 1064MySql觸發器Error
- 19c ADG報錯Error 1094 attaching to RFS for reconnectError
- MySQL 5.6複製報錯Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;MySqlError
- ubuntu下pig報錯ERROR 2999: Unexpected internal error. Failed to create DataStorage的解決UbuntuErrorAIAST
- Redis 啟動報錯Address already in useRedis
- Error page: / Error infos: DedeCms錯誤警告Error
- 小程式 · 報錯:Error: errCode: -501007 ,errMsg: Invalid Key Name (__keyPath)Error