read_only = false и пустую строчку в replication.
У реплики устанавливаю read_only = true и uri мастера в replication.
В результате реплика падает с ошибкой "ER_READONLY", "error": "Can't modify data because this instance is in read-only mode."
Действительно реплике нужно ставить read_only = true, как описано в https://www.tarantool.io/ru/doc/2.5/book/replication/repl_bootstrap/ ?
В каком порядке их запускаете?
сначала мастер, затем реплика
А надо наоборот:)
наоборот реплика валится на подключении к мастеру
В смысле наоборот?
Кстати, а почему replication на мастере у вас пустой?
Для версий от 1.7.4. и выше. Если replication не содержит пустую строку, экземпляр считается репликой.
его обязательно нужно для мастера заполнять? у меня вариант мастер-реплика. А в доке написано: Этот параметр является обязательным только при настройке кластеров с конфигурацией master-master или full-mesh. т.е. понятно, зачем его заполнять на реплике. А вот на мастере - не понятно.
если переключать мастер-реплику будете. А так у вас будет "старый мастер", который ни от кого не получает данные
Покажите, что у вас после box.cfg выполняется на реплике
можно, но, проще, когда во время аварии вам не нужно об этом думать
нет, для переключения вам нужно всего лишь поменять box.cfg.read_only консистентно на текущем и будущем мастере, то есть так, чтобы "будущий мастер" получил все изменения от "текущего мастера" после того как последний перешел в ro
т.е. источник репликации не нужно явно менять в replication?
создание функций и спейсов надо оборачивать в if box.info.ro == false then
нет, не нужно, изменения будут подтягиваться со всех нод, но применяться только те, которых не хватает конкретной ноде (если упростить)
ок, понял, спасибо!
спасибо!
Обсуждают сегодня