Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке реплікація в Redis? Навіщо потрібна реплікація?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Реплікація в Redis - механізм, за якого дані автоматично копіюються з одного сервера (master) на інші сервери (репліки) у реальному часі; головна мета - резервування, масштабування читання й відмовостійкість. **Ключове:** реплікація за замовчуванням асинхронна (master не чекає підтвердження від репліки), а при тимчасовому розриву зв'язку репліка може "наздогнати" master через replication backlog без повної пересинхронізації; для автоматичного failover використовують Redis Sentinel чи Redis Cluster.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Реплікація в Redis** - це механізм, за якого дані **автоматично копіюються** з одного сервера (master) на інші сервери (репліки). Головна мета - **резервування, масштабування читання й відмовостійкість**. ## 1. Що таке реплікація Redis дозволяє створити ієрархію серверів: ```javascript Master → Replica1 → Replica2 ``` - **Master** - головний вузол, куди виконуються всі операції запису (`SET`, `DEL`, `INCR` тощо). - **Replica (Slave)** - копія master, яка отримує всі його оновлення і підтримує синхронізований стан. Репліка оновлюється **в реальному часі** - усі зміни, що відбуваються на master, автоматично транслюються на репліки. ## 2. Навіщо потрібна реплікація ### 1. Відмовостійкість (fault tolerance) Якщо master виходить з ладу, репліка містить його повну копію й може швидко стати новим master. Це дозволяє уникнути втрати даних і просто перемкнути клієнтів на новий вузол. ### 2. Масштабування читання Читання (`GET`, `HGETALL`, `ZRANGE`) можна розподілити між кількома репліками, знижуючи навантаження на master. Так досягається горизонтальне масштабування за операціями читання. ### 3. Резервне копіювання Репліка може зберігати дані на диск незалежно від master (RDB/AOF), що створює безпечну резервну копію без навантаження на основну систему. ## 3. Як працює реплікація в Redis ### Первинна синхронізація Коли нова репліка підключається до master: 1. Репліка надсилає команду: ```javascript REPLICAOF <master_ip> <port> ``` 2. Master створює **RDB-знімок (snapshot)** і надсилає його репліці. 3. Репліка завантажує цей знімок у пам'ять і починає застосовувати команди, що надходять після моменту знімка. ### Постійна (інкрементальна) синхронізація Після початкового завантаження master надсилає репліці **всі нові команди запису** в тому самому порядку, що й виконує сам. Це підтримує повний збіг стану. ### При тимчасових розривах Redis використовує **реплікаційний буфер (replication backlog)** - кільцевий журнал останніх змін. Якщо репліка короткочасно втрачає зв'язок, вона може наздогнати master, зчитавши недостатні команди з цього журналу, без повної пересинхронізації. ## 4. Типи реплікації | Тип | Опис | |---|---| | Асинхронна (за замовчуванням) | master не чекає підтвердження репліки, максимально швидка, але можлива втрата даних при збої | | Напівсинхронна (PSYNC2) | репліка може підтверджувати отримання даних, підвищуючи надійність | ## 5. Налаштування У конфігураційному файлі репліки (`redis.conf`): ```bash replicaof 192.168.1.10 6379 ``` Перевірка статусу: ```bash INFO replication ``` Покаже: ```javascript role:master connected_slaves:2 slave0:ip=...,state=online ``` ## 6. Перемикання ролей Репліка може стати master: ```bash REPLICAOF NO ONE ``` Використовується при аварійному перемиканні чи в автоматичних кластерах (наприклад, Redis Sentinel чи Redis Cluster). ## 7. Реплікація й продуктивність - Реплікація **не сповільнює** master, оскільки вона асинхронна. - Репліки читають дані зі своєї пам'яті, не заважаючи master. - Навантаження на мережу зростає за великої кількості реплік, тому використовується обмеження `repl-backlog-size`. ## 8. Інструменти для керування - **Redis Sentinel** - система автоматичного failover: стежить за master і призначає нову репліку master при збої. - **Redis Cluster** - розподілена система, де кожен вузол може бути master зі своїми репліками. ## 9. Підсумок **Реплікація в Redis** - це: - механізм копіювання даних від master до реплік, - що забезпечує **надійність**, **масштабування читання** й **стійкість до збоїв**. Вона потрібна, щоб Redis лишався доступним і узгодженим навіть за навантажень чи аварій - без єдиної точки відмови.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.