Синхронизировать локальную базу данных и базу данных живого сайта - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть локальный веб-сайт, на котором пользователь ежедневно добавляет элементы в БД Mysql.Теперь я хочу сделать живую версию сайта.

Но вместо добавления элементов в обе базы данных я хочу добавить только в локальную базу данных.И синхронизировать удаленную базу данных.

Локальный сайт использует XAMPP.Кроме того, я не думаю, что репликация - это способ, которым я хочу это делать.

Я ищу способ решения этой задачи на PHP.

В настоящее время я не знаю, как этого добиться.

Есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Если вы не хотите устанавливать схему репликации, почему бы просто не использовать (2 или 3) задания cron, дамп local / dump remote / update remote с локальным дампом.И нет, это не лучший способ сделать это, но он работает ...

С помощью всего лишь (2), выгрузите локальный / удаленный дамп с локальным дампом, ежедневно запускайте дамп @ 1:00 AM и!: 15:00 обновление

0 1 * * * mysqldump --host="localhost" --user="user" --password="password" database_name > backup_name.sql

15 1 * * * mysql --host="remote_host" --user="user" --password="password" --port="3306" database_name < backup_name.sql
0 голосов
/ 28 февраля 2019

Самый быстрый способ сделать это был бы с MySQL, но если вы хотите использовать строго PHP, есть два способа сделать это, если вы хотите, чтобы живые данные отражали только локальные данные (то есть у вас все в порядке)с удалением всех данных и повторным извлечением данных).Поскольку это решение на PHP, , вам придется проходить по каждой отдельной таблице .Вы можете запустить скрипт PHP, который использует PDO или MySQLi, но вам понадобится одна из двух стратегий удаления, перечисленных ниже:

1) TRUNCATE и SELECT FROM (Быстро, но имеет потенциальную безопасностьриски ) Это больший риск, поскольку разрешения MySQL для TRUNCATE равны DROP и ALTER.Не команды, к которым у обычного пользователя базы данных есть доступ.Вот SQL для этого:

TRUNCATE live_database_name.table_name

INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name

2) DELETE FROM и SELECT FROM ( Чем меньше данных выесть , но безопаснее).Это решение медленнее, потому что вам нужно проходить каждую запись в таблице, а не отбрасывать и заново создавать таблицу.Однако DELETE считается более безопасным разрешением для пользователей базы данных, поскольку они не могут DROP целых таблиц.Вот что вам нужно для этого:

DELETE FROM live_database_name.table_name

INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...