Створення резервних копій та відновлення даних redis в ubuntu

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Redis - це продуктивне сховище типу «ключ-значення». Дані Redis за замовчуванням зберігаються на диск у форматі .rdb, що представляє собою снапшот набору даних Redis на заданий момент часу. Такі снапшоти робляться через певні проміжки часу, і тому вони ідеально підходять для резервного копіювання.

Даний посібник навчить вас створювати резервні копії бази даних Redis на сервері Ubuntu 14.04.

вимоги

  • Сервер Ubuntu 14.04.
  • Попередньо сервер Redis (щоб встановити його, дотримуйтесь розділу по встановленню та налагодженню master-сервера цього керівництва).
  • Також рекомендується встановити надійний пароль для Redis (пароль знаходиться у файлі /etc/redis/redis.conf).

1: Каталог даних Redis

Redis зберігає дані в каталозі на сервері. Знайдіть цей каталог.

В Ubuntu і інших дистрибутивах Linux каталог даних Redis за замовчуванням знаходиться в / var / lib / redis. Можливо, ви змінили цей каталог. Щоб знайти каталог даних Redis, введіть команду:

sudo locate * rdb

Також його можна знайти за допомогою рядка redis-cli:

Якщо сервер Redis не запущено, команда поверне:

Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Запустіть Redis і підключіться знову:

sudo service redis-server start
redis-cli

Командний рядок буде виглядати так:

Щоб пройти аутентифікацію і дізнатися каталог даних, введіть:

auth пароль-redis
config get dir

Остання команда виведе на екран каталог даних.

1) "dir"
2) "/ var / lib / redis"

Примітка. Якщо Redis використовує інший каталог даних, не забудьте замінити «/ var / lib / redis» шляхом до цього каталогу.

Закрийте командний рядок БД:

У ньому ви побачите файл dump.rdb, в якому зберігаються дані Redis. Якщо на сервері включений appendonly, каталог може містити також файл appendonly.aof або ж інші файли з розширенням .aof, в яких зберігаються логи всіх операцій запису, отриманих сервером.

Примітка. Файл .rdb - це поточний снапшот, а файл .aof зберігає історію Redis. Детальну інформацію про ці файли можна знайти тут.

2: Додавання даних (опціонально)

Створіть тестові дані і додайте їх в БД. Якщо на сервері вже є дані, пропустіть цей розділ.

Відкрийте інтерфейс командного рядка:

Додайте тестові дані; сервер повинен відповісти OK після кожної команди:

SET shapes: triangles "3 sides"
SET shapes: squares "4 sides"

Переконайтеся, що дані були додані:

GET shapes: triangles
GET shapes: squares

Висновок команд буде виглядати так:

"3 sides"
"4 sides"

Збережіть дані, щоб вони з'явилися в /var/lib/redis/dump.rdb.

Закрийте командний рядок:

Перевірте вміст дамп-файлу. У ньому повинні з'явитися нові дані в машинозчитувана форматі.

sudo cat /var/lib/redis/dump.rdb
REDIS0006? Shapes: squares4 sidesshapes: triangles3 sides ?? o. C

Створіть копію БД (наприклад, в домашньому каталозі користувача).

sudo cp /var/lib/redis/dump.rdb / home / 8host / redis-backup-001

Примітка. Якщо ви не ризикуєте втратити при резервному копіюванні великих обсягів даних, просто скопіюйте файл, а не оновлювати його.

Збереження стану БД

Щоб отримати найсвіжішу копію даних Redis, потрібно відкрити командний рядок Redis і пройти аутентифікацію, а потім виконати команду:

Після цього закрийте БД. Тепер знову запустіть команду cp. Так ви отримаєте найактуальнішу версію даних.

4: Автоматичне копіювання даних

Для цього існує кілька інструментів. У цьому посібнику використовується rdiff-backup - інструмент командного рядка.

Щоб встановити rdiff-backup, введіть:

sudo apt-get install -y rdiff-backup

Тепер спробуйте створити резервну копію каталогу даних в домашньому каталозі.

Якщо цільового каталогу не існує, сценарій створить його.

Прапор -preserve-numerical-ids збереже привілеї вихідного і цільового каталогу.

sudo rdiff-backup --preserve-numerical-ids / var / lib / redis / home / 8host / redis

Ця команда створить резервну копію одного разу. Але, на відміну від cp, вона скопіює весь каталог / var / lib / redis.

Тепер потрібно налаштувати демон cron, щоб сервер автоматично створював резервні копії даних в один і той же час. Відкрийте crontab:

Додайте в кінець файлу:

0 0 * * * rdiff-backup --preserve-numerical-ids --no-file-statistics / var / lib / redis / home / 8host / redis

Тепер cron буде копіювати дані Redis опівночі кожен день. Прапор -no-file-statistics відключить запис в файл file_statistics в каталозі rdiff-backup-data, завдяки чому rdiff-backup буде працювати швидше і займе менше місця.

Також для щоденного резервного копіювання ви можете використовувати такий запис:

@daily rdiff-backup --preserve-numerical-ids --no-file-statistics / var / lib / redis / home / 8host / redis

Файли належать користувачеві redis. Переконайтеся, що всі файли на місці, за допомогою команди:

ls -l / home / 8host / redis
total 20
-rw-rw ---- 1 redis redis 70 Sep 14 13:13 dump.rdb
drwx ------ 3 root root 12288 Sep 14 13:49 rdiff-backup-data
-rw-r ----- 1 redis redis 119 Sep 14 13:09 redis-staging-ao.aof

Тепер дані Redis щодня копіюються і зберігаються в домашньому каталозі.

5: Відновлення даних Redis

Тепер потрібно навчитися відновлювати дані з файлу dump.rdb.

Процедура відновлення резервної копії замінить поточну БД Redis відновленими з дампа даними.

Примітка. Оскільки така процедура може завдати шкоди сервера, її рекомендується по можливості виконати на свіжому сервері Redis. У будь-якому випадку, ви можете не видаляти, а перейменувати файл з поточної БД, що ми і зробимо в цьому керівництві.

Перевірка резервної копії

Спочатку потрібно перевірити файл dump.rdb і переконатися, що він містить саме ті дані, які потрібні в даний момент.

sudo cat /home/gilly/redis/dump.rdb

Висновок буде приблизно таким:

REDIS0006? Shapes: triangles3 sidesshapes: squares4 sides. ^? \.

Якщо остання резервна копія порожня, чи не продовжуйте відновлення.

Симуляція втрати даних (опціонально)

Тепер симулюйте втрату даних на машині, щоб потім відновити їх з резервної копії.

Відкрийте командний рядок Redis

Ця послідовність команд виконає аутентифікацію в Redis і видалить запис shapes: triangles.

auth insert-redis-password-here
DEL shapes: triangles

Переконайтеся, що запис був видалений:

Команда повинна повернути:

Щоб зберегти результат і вийти, введіть:

Налаштування нового сервера Redis (опціонально)

Якщо ви збираєтеся виконати відновлення БД на новому сервері Redis, підготуйте такий сервер заздалегідь.

Щоб переконатися, що Redis запущений на новому сервері, введіть:

redis-benchmark -q -n 1000 -c 10 -P 5

зупинка Redis

Перш ніж замінити дамп-файл Redis, потрібно зупинити поточний екземпляр Redis.

Примітка. При цьому БД буде недоступна.

sudo service redis-server stop
Stopping redis-server: redis-server

Переконайтеся в тому, що сервер зупинився:

sudo service redis-server status
redis-server is not running

Після цього потрібно перейменувати поточну БД.

Перейменування поточного файлу dump.rdb

Redis читає свої дані з файлу dump.rdb. Перейменуйте поточний файл, щоб відновити скопійований раніше файл.

Відключення AOF (опціонально)

AOF відстежує операції записи в БД Redis. Однак в даному випадку потрібно відновити тільки дамп, відновлювати всі операції запису з файлу AOF не потрібно.

Примітка. Якщо ви налаштовували сервер Redis згідно з цим керівництву. то підтримка AOF включена.

Ви можете запросити вміст каталогу / var / lib / redis /. Якщо в ньому є файл .aof, підтримка AOF включена.

Перейменуйте файл .aof, щоб тимчасово відключити його. Наступна команда перейменує всі файли з розширенням .aof. Якщо на сервері більше одного такого файлу, перейменуйте вручну тільки потрібний файл і не використовуйте цю команду.

sudo mv /var/lib/redis/*.aof /var/lib/redis/appendonly.aof.old

Відредагуйте конфігурації Redis, щоб тимчасово відключити AOF.

sudo nano /etc/redis/redis.conf

У розділі AOF знайдіть директиву appendonly і змініть її значення на no:

Відновлення файлу dump.rdb

Тепер можна відновити дамп, який зберігається в /home/8host/redis/dump.rdb.

Якщо ви відновлюєте дані на новому сервері, довантажити на нього дамп-файл:

scp /home/8host/redis/dump.rdb 8host @ your_new_redis_server_ip: /home/8host/dump.rdb

Незалежно від того, на якому сервері ви відновлюєте дані, запустіть команду cp, щоб скопіювати файл в / var / lib / redis.

sudo cp -p /home/8host/redis/dump.rdb / var / lib / redis

Примітка. Якщо ви довантажити файл в /home/8host/dump.rdb, використовуйте команду:

sudo cp -p /home/8host/dump.rdb / var / lib / redis

Якщо ви хочете використовувати rdiff-backup, запустіть наступну команду:

sudo rdiff-backup -r now /home/8host/redis/dump.rdb /var/lib/redis/dump.rdb

Примітка. Команда спрацює тільки в тому випадку, якщо відновлюваний каталог був скопійований з допомогою rdiff-backup.

Детальну інформацію про опції -r можна отримати в офіційній документації (див. Кінець керівництва).

Права на dump.rdb

Якщо ви відновлювали резервну копію на старому сервері, ймовірно, привілеї вже встановлені вірно.

Якщо ви скопіювали дамп на новий сервер, привілеї потрібно оновити.

ls -la / var / lib / redis /
-rw-r ----- 1 8host 8host 70 Feb 25 15:38 dump.rdb
-rw-rw ---- 1 redis redis 4137 Feb 25 15:36 dump.rdb.old

Передайте файл користувачеві і групі redis.

sudo chown redis: redis /var/lib/redis/dump.rdb

Дайте групі права на запис у файлі:

sudo chmod 660 /var/lib/redis/dump.rdb

Знову запросите права на файл:

ls -la / var / lib / redis /
-rw-rw ---- 1 redis redis 70 Feb 25 15:38 dump.rdb
-rw-rw ---- 1 redis redis 4137 Feb 25 15:36 dump.rdb.old

Примітка. Якщо до відновлення файлу сервер Redis працював, а тепер не запускається і повертає помилку:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

Якщо ж він видає помилку:

Fatal error loading the DB: Permission denied. Exiting.

перевірте права на файл dump.rdb.

запуск Redis

Щоб запустити Redis, введіть:

sudo service redis-server start

Перевірка вмісту БД

Відкрийте командний рядок Redis:

GET shapes: triangles
"3 sides"

Якщо команда повернула таку відповідь, значить, дані успішно відновлені.

Включення AOF (опціонально)

Якщо ви хочете включити підтримку AOF, поверніться в командний рядок Redis:

BGREWRITEAOF
Background append only file rewriting started

Після цього запустіть команду info:

Знайдіть у висновку розділ Persistence і переконайтеся, що записи aof відповідають наведеній інформації. Якщо aof_rewrite_in_progress дорівнює нулю, то підтримка AOF успішно відновлена.

# Persistence
.
aof_enabled: 0
aof_rewrite_in_progress: 0
aof_rewrite_scheduled: 0
aof_last_rewrite_time_sec: 0
aof_current_rewrite_time_sec: -1
aof_last_bgrewrite_status: ok
aof_last_write_status: ok

Після цього можна закрити вікно командного рядка Redis:

Перевірте файли в / var / lib / redis.

Тепер в каталозі з'явиться файл з розширенням .aof (наприклад, appendonly.aof або redis-staging-ao.aof).

Зупиніть сервер Redis:

sudo service redis-server stop

Увімкніть підтримку AOF в файлі конфігурації redis.conf:

sudo nano /etc/redis/redis.conf
appendonly yes

Знову запустіть Redis:

sudo service redis-server start

висновок

Схожі статті