Синхронизация характеристик (свойств) EAV между двумя сайтами

StalkerClasses

Новичок
На сайте для разработки добавил несколько полей а также значений (таблицы eav_attr и eav_attr_value).
На продакте имеются все поля характеристик (таблицы eav_attr и eav_attr_value).

Как обычно реализуется синхронизация между таблицами характеристик между двумя сайтами?
Если бы поля добавлялись (изменялись) на базе php-файла здесь все известно - git.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вообще
синхронизация между таблицами
базами называется репликация. В твоем случае проще делать лог изменений продакшна и писать потом его по требованию на develop
 

StalkerClasses

Новичок
Вообще базами называется репликация. В твоем случае проще делать лог изменений продакшна и писать потом его по требованию на develop
.
Почитал в интернете что это на примере статьи https://habr.com/ru/post/56702/ и https://ruhighload.com/Как+настроить+mysql+master-slave+репликацию?
Это настраивается больше через консоль.
Есть ли какие-нибудь готовые библиотеки которые позволяют сделать тоже самое только на стороне PHP?
Мне например очень нравиться библиотека: https://github.com/rap2hpoutre/fast-excel
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У тебя есть прямая связь между develop-master серверами? Что за окружение на develop? Где он расположен? Какой uptime? Что именно тебе надо реплицировать, только одну таблицу? Или всю базу все же?

И вообще при чем тут какой-то пакет для ларавеля?
 

StalkerClasses

Новичок
У тебя есть прямая связь между develop-master серверами? Что за окружение на develop? Где он расположен? Какой uptime? Что именно тебе надо реплицировать, только одну таблицу? Или всю базу все же?

И вообще при чем тут какой-то пакет для ларавеля?
Сайт продакшана на основном домене site.ru.
Сайт дев на поддомене dev.site.ru

Нужно реплицировать только 1 таблицу с характеристиками (либо что-то добавилось, либо переопределить то, что изменилось).
Например было добавлено поле цвет для такой-то сущности.

Пакет ларавеля просто пример. Мне хотелось бы сделать кнопку в админке "синхронизировать",
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну так в чем проблема, сделай. У тебя один мастер сайт(prod) и один слейв(dev). Читаешь построчно свой мастер(таблицу которая нужна) и сравниваешь со слейвом раз в день/неделю/месяц/как нажмешь. Но надо иметь колонку с датой последнего изменения строки в таблице и тогда будет тебе счастье...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Не забудь про то, чтобы у тебя в приложениях/серваках бд таймзоны были одинаковые, а то получится треш
 

weregod

unserializer
Если таблички маленькие, не проще ли дампить на проде и восстанавливать на деве?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Ну так в чем проблема, сделай. У тебя один мастер сайт(prod) и один слейв(dev). Читаешь построчно свой мастер(таблицу которая нужна) и сравниваешь со слейвом раз в день/неделю/месяц/как нажмешь. Но надо иметь колонку с датой последнего изменения строки в таблице и тогда будет тебе счастье...
нафига? по крону dump на проде (с drop if exists), на dev по крону rsync-выполнили-удалили, profit - дело на 20 минут, включая чай
 

StalkerClasses

Новичок
Вот структура которая у меня получилась...
SQL:
"tbl_page"
id    int(11)
title    varchar(255) []

"tbl_eav_attr"

id    int(11)
entity_type    varchar(255) []    // тип сущности которой принадлежит атрибут ("tbl_page")
attr_type    varchar(255) []    // тип атрибута (input, text, data и т.д.)
attr_key    varchar(255) []    // ключ атрибута
attr_title    varchar(255) []    // название атрибута

"tbl_eav_attr_value"
id    int(11)
entity_id    varchar(255) []    // id-сущности которой принадлежит запись (в таблице "tbl_page")
tbl_eav_attr_id    int(11) [0]    // id-атрибута
attr_value    text NULL // значение атрибута
У меня есть 4 атрибута (записи в таблице "tbl_eav_attr") для сущности страница:
цвет | color
фоновое изображение | bgimage
с новой строки? | flag_new_line
Серия дома | dom_seria

Как написать запрос на выборку всех страниц у которых
flag_new_line = 1
dom_seria = 'I-155'


Страницы выбираются SELECT * FROM page...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
нафига? по крону dump на проде (с drop if exists), на dev по крону rsync-выполнили-удалили, profit - дело на 20 минут, включая чай
не сработает, у него бывают случаи двунаправленной синхронизации, он писал в каком-то треде, что надо с dev сайта тоже забирать данные на прод, так что увы, а не "нафига"
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
с dev нельзя забирать данные на прод, без вариантов - на dev должно быть можно вбивать пограничные битые данные для тестирования
 

WMix

герр M:)ller
Партнер клуба
с dev нельзя забирать данные на прод, без вариантов - на dev должно быть можно вбивать пограничные битые данные для тестирования
не знаю о чем ты говоря про "dev" но на prod выставляется уже переведенная версия. (где-то табличку наполнили)
важнее что не два различных input которые при конфликте merge'ть надо
 

AmdY

Пью пиво
Команда форума
Его каждый вопрос превращается в анекдот.
Самое забавное, что автору в одной из его тем даже кто-то давал готовый sql код с ответом на его последний вопрос.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я вижу вопрос про добавление полей, в контексте "На продакте имеются все поля", так что с dev на прод переносить ничего не надо - там все поля уже есть
 

Yoskaldyr

"Спамер"
Партнер клуба
Думаю нужен специальный подраздел с названием BDSM-клуб
 
Сверху