1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vipshop-redis-migrate-tool

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

redis-migrate-tool — это удобный и полезный инструмент для миграции данных между redis.

中文介绍 (http://www.oschina.net/p/redis-migrate-tool)

Features

  • Быстрый.
  • Многопоточный.
  • Основан на репликации redis.
  • Миграция в реальном времени.
  • Во время миграции данных исходный сервер redis также может предоставлять услуги пользователям.
  • Разнородная миграция.
  • Поддержка Twemproxy и кластера redis.
  • Когда целевой системой является Twemproxy, ключи напрямую импортируются в redis за Twemproxy.
  • Просмотр состояния миграции.
  • Механизм проверки данных.

Зависимости

Сначала установите automake, libtool, autoconf и bzip2.

Сборка

Чтобы собрать redis-migrate-tool:

$ cd redis-migrate-tool
$ autoreconf -fvi
$ ./configure
$ make
$ src/redis-migrate-tool -h

Запуск

src/redis-migrate-tool -c rmt.conf -o log -d

Предупреждение

Перед запуском этого инструмента убедитесь, что на исходных серверах redis достаточно памяти, чтобы разрешить генерацию хотя бы одного файла rdb redis.

Если ваши исходные машины имеют достаточно большой объём памяти, разрешающий генерацию всех файлов rdb redis одновременно, вы можете установить «source_safe: false» в файле rmt.conf.

Команды redis, которые не поддерживаются

Следующие команды не поддерживаются для распространения на целевую группу redis, поскольку ключи в этих командах могут пересекать разные целевые узлы redis:

RENAME, RENAMENX, RPOPLPUSH, BRPOPLPUSH, FLUSHALL, FLUSHDB, BITOP, MOVE, GEORADIUS, GEORADIUSBYMEMBER, EVAL, EVALSHA, SCRIPT, PFMERGE.

Конфигурация

Файл конфигурации состоит из трёх частей: источник, цель и общие настройки.

Источник или цель:

  • type: тип группы redis. Возможные значения:
  • single
  • twemproxy
  • кластер redis
  • файл rdb
  • файл aof
  • servers: список адресов redis в группе. Если тип — twemproxy, это то же самое, что и файл конфигурации twemproxy. Если тип — файл rdb, это имя файла.
  • redis_auth: аутентификация на сервере Redis при подключении.
  • timeout: тайм-аут в миллисекундах для чтения/записи с сервером Redis. Сейчас только для исходной группы redis. По умолчанию — 120000.
  • hash: имя хеш-функции. Только для типа twemproxy. Возможные значения:
  • one_at_a_time
  • md5
  • crc16
  • crc32 (реализация crc32 совместима с libmemcached)
  • crc32a (правильная реализация crc32 согласно спецификации)
  • fnv1_64
  • fnv1a_64
  • fnv1_32
  • fnv1a_32
  • hsieh
  • murmur
  • jenkins
  • hash_tag: двухсимвольная строка, которая определяет часть ключа, используемую для хеширования. Например, «{}» или «$$». Теги хеша позволяют сопоставлять разные ключи одному и тому же серверу, если часть ключа внутри тега одинакова. Только для типа twemproxy.
  • distribution: режим распределения ключей. Только для типа twemproxy. Возможные значения:
  • ketama
  • modula
  • random

Общие настройки:

  • listen: адрес и порт прослушивания (имя:порт или ip:порт). По умолчанию — 127.0.0.1:8888.
  • max_clients: максимальное количество клиентов для порта прослушивания. По умолчанию — 100.
  • threads: максимальное количество потоков, которое может использовать redis-migrate-tool. По умолчанию соответствует количеству ядер процессора.
  • step: шаг для анализа запроса. Чем больше число, тем быстрее выполняется миграция, но используется больше памяти. По умолчанию — 1.
  • mbuf_size: размер mbuf для запроса. По умолчанию — 512.
  • noreply: логическое значение, определяющее, следует ли проверять ответы целевой группы. По умолчанию — false.
  • source_safe: логическое значение, обеспечивающее безопасность памяти исходных серверов. Если оно истинно, инструмент может гарантировать, что только один redis будет генерировать файл rdb на одной машине для исходной группы за раз. Кроме того, «source_safe: true» может использовать меньше потоков, чем вы установили. По умолчанию — true.
  • dir: рабочий каталог, используемый для хранения файлов (например, файл rdb). По умолчанию используется текущий каталог.
  • filter: фильтр ключей, если они не соответствуют шаблону. Шаблон соответствует стилю Glob. По умолчанию NULL.

filter поддерживает шаблоны стиля Glob:

  • h?llo соответствует hello, hallo и hxllo

  • h*llo соответствует hllo и heeeello

  • h[ae]llo соответствует hello и hallo, но не hillo Общее количество принятых подключений.

  • total_connections_received: общее количество полученных подключений.

Группа:

  • source_nodes_count: количество узлов исходной группы Redis.
  • target_nodes_count: количество узлов целевой группы Redis.

Статистика:

  • all_rdb_received: получено ли RDB всех узлов в исходной группе.
  • all_rdb_parsed: завершено ли парсинг RDB всех узлов в исходной группе.
  • all_aof_loaded: завершена ли загрузка AOF-файла всех узлов в исходной группе.
  • rdb_received_count: полученное количество RDB для узлов в исходной группе.
  • rdb_parsed_count: завершённое количество парсинга RDB для узлов в исходной группе.
  • aof_loaded_count: завершенное количество загрузок AOF-файлов для узлов в исходной группе.
  • total_msgs_recv: общее количество сообщений, полученных от исходной группы.
  • total_msgs_sent: общее количество отправленных сообщений в целевую группу и полученных ответов от целевой группы.
  • total_net_input_bytes: общее количество входных байтов, полученных от исходной группы.
  • total_net_output_bytes: общее количество выходных байтов, отправленных в целевую группу.
  • total_net_input_bytes_human: то же, что и total_net_input_bytes, но в удобочитаемом формате.
  • total_net_output_bytes_human: то же, что и total_net_output_bytes, но в удобочитаемом формате.
  • total_mbufs_inqueue: данные кэшированных команд (не включая данные RDB) по входным mbufs из исходной группы.
  • total_msgs_outqueue: сообщения будут отправлены в целевую группу, и сообщения были отправлены в целевую, но ожидают ответа.

ДРУГИЕ КОМАНДЫ

shutdown [seconds|asap]

Поведение команды следующее:

  • остановить репликацию с исходного Redis;
  • попытаться отправить кэшированные данные в Redis-migrate-tool в целевой Redis;
  • Redis-migrate-tool останавливается и выходит.

Параметр:

  • seconds: большинство секунд, которые Redis-migrate-tool может использовать для отправки кэшированных данных в целевой Redis перед выходом. По умолчанию — 10 секунд.
  • asap: не заботиться о кэшированных данных, просто выйти прямо сейчас.

Например, вы пробуете команду shutdown:

$redis-cli -h 127.0.0.1 -p 8888
127.0.0.1:8888> shutdown
OK

ПРОВЕРКА ДАННЫХ

После переноса данных вы можете использовать команду redis_check, чтобы проверить данные в исходной и целевой группах.

Попробуйте команду redis_check:

$src/redis-migrate-tool -c rmt.conf -o log -C redis_check
Check job is running...

Checked keys: 1000
Inconsistent value keys: 0
Inconsistent expire keys : 0
Other check error keys: 0
Checked OK keys: 1000

All keys checked OK!
Check job finished, used 1.041s

Если вы хотите проверить больше ключей, попробуйте следующее:

$src/redis-migrate-tool -c rmt.conf -o log -C "redis_check 200000"
Check job is running...

Checked keys: 200000
Inconsistent value keys: 0
Inconsistent expire keys : 0
Other check error keys: 0
Checked OK keys: 200000

All keys checked OK!
Check job finished, used 11.962s

ВСТАВИТЬ НЕКОТОРЫЕ КЛЮЧИ ТОЛЬКО ДЛЯ ТЕСТА

Попробуйте команду redis_testinsert:

$src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert"
Test insert job is running...

Insert string keys: 200
Insert list keys  : 200
Insert set keys   : 200
Insert zset keys  : 200
Insert hash keys  : 200
Insert total keys : 1000

Correct inserted keys: 1000
Test insert job finished, used 0.525s

Если вы хотите вставить больше ключей, попробуйте следующее:

$src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert 30000"
Test insert job is running...

Insert string keys: 6000
Insert list keys  : 6000
Insert set keys   : 6000
Insert zset keys  : 6000
Insert hash keys  : 6000
Insert total keys : 30000

Correct inserted keys: 30000
Test insert job finished, used 15.486s

Если вы хотите вставлять только строковые ключи, попробуйте следующее:

$src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert string"

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/vipshop-redis-migrate-tool.git
git@gitlife.ru:oschina-mirror/vipshop-redis-migrate-tool.git
oschina-mirror
vipshop-redis-migrate-tool
vipshop-redis-migrate-tool
master