Ці можна захаваць паслядоўнасць мностваў ў Redis пасля аварыі без АОП?

Сартаваць новага ў Redis.

Гіпатэтычны ўстаноўкі/сітуацыя: Выкажам здагадку, што Redis робіць здымак кожныя 10 хвілін. AOF выключаны. У вас ёсць набор пад назвай «паведамленні», які захоўвае ідэнтыфікатары паведамленняў. У вас таксама ёсць MySQL ідэнтыфікатары табліцы захоўвання паведамленняў.

    <Літый> Ёсць у агульнай складанасці 2 ідэнтыфікатараў запісы ў MySQL і Redis
  1. Redis робіць маментальны здымак
  2. Карыстальнік стварае новы пост - зараз Redis мае 3 ідэнтыфікатары, і таму робіць MySQL
  3. Але тады Redis разбурыўся ці забіты
  4. <Літый> Пасля перазапуску Redis цяпер мае 2 ідэнтыфікатары ў той час як MySQL, мае 3

Як вы разумееце, што дадзеныя Redis супярэчлівая? З таго, што я прачытаў, AOF ўводзіць больш праблем і не з'яўляецца дасканалым. Ёсць больш просты/больш элегантнае рашэнне захоўвання набораў паслядоўнай?

4
«Але тады Redis разбурыўся ці забіты» ... калі яго забілі (не прымушайце забітыя, або забіць -9'ed), то ён будзе выконваць свае вароты перад выхадам.
дададзена аўтар Carl Zulauf, крыніца
А я не ведаю, што вельмі разумны, я думаю. Дзякуй за параду.
дададзена аўтар Jon Derring, крыніца

2 адказы

Колькі дадзеных мы кажам тут? Калі гэта не вельмі шмат, вы можаце мець працэс, які проста перагружае усе дадзеныя ў Redis з базы дадзеных MySQL. Добрая рэч, што вы можаце загрузіць усе вашыя дадзеныя ў Redis ад 10 хвілін рэзервовага сховішча, а затым проста перапісаць усе ключ з дапамогай ключа ў Redis. Калі ён ужо ёсць, то добра, калі няма, то гэта дадае.

На жаль, вы ніколі не будзеце мець магчымасць трымаць іх у адпаведнасці без якой-небудзь асноўнай працы, каб пабудаваць паралелізм паміж гэтымі двума сістэмамі. AOF не так ужо дрэнна. Вы павінны даць яму паспрабаваць. Нават тады, вам не прыйдзецца турбавацца аб паслядоўнасці.

2
дададзена
Нічога сабе добра. Ну, я думаў пра перачытваючы з MySQL кожны раз пасля аварыі, але думаў, можа быць, ёсць лепшае рашэнне (спрабуе пазбегнуць выбару з MySQL). Я не спрабаваў AOF, але большасць паведамленняў у блогу не сказаць занадта шмат станоўчых рэчаў пра гэта па нейкай прычыне. Я думаю, што праблема не так проста. Дзякуй за дапамогу ў любым выпадку. Дарэчы, дадзеныя мудра я мяркую, што гэта не так ужо шмат.
дададзена аўтар Jon Derring, крыніца

Адно рашэнне, якое я меў некаторы поспех выкарыстоўвае асобнік падначаленага, які працуе на іншым серверы. Сінхранізацыя з рабамі не блакіруе, так што яшчэ ёсць шанец, што вы можаце страціць апошнюю каманду ці так, калі майстар аварый, але на практыцы гэта вельмі малаверагодна. Вы таксама можаце мець некалькі рабоў для рэзервавання.

Вынік не з'яўляецца ваш майстар больш не выкарыстоўвае любы дыск ўводу/высновы, і ніякай дадатковай памяці для працэсу відэльцам, якая выкарыстоўваецца імгненных здымкаў. Калі гаспадар ідзе ўніз, вы можаце аднавіць дадзеныя, ператварыўшы адну з сваіх рабоў у майстар (з дапамогай маёй каханай каманды Redis: SLAVEOF NO ONE ) часова, маючы майстар-раба ад вашага часовага гаспадара, а затым аднаўленне вядучы/кіраваны ролі ў іх першапачатковыя канфігурацыі, як толькі сінхранізацыя завершана.

1
дададзена
Цікава ... Я буду эксперыментаваць з гэтым. Дзякуй за прапанову.
дададзена аўтар Jon Derring, крыніца