Синхронизировать локальную базу данных и базу данных живого сайта

0

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

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

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

Я смотрю больше на PHP способ решения этой задачи.

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

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

  • 2
    «Я не думаю, что репликация - это способ, которым я хочу это делать». Каковы ваши конкретные причины, по которым вы так думаете?
Теги:

2 ответа

0

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

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

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
    Локальный сервер работает на Windows.
0

Самый быстрый способ сделать это - использовать 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

  • 0
    Я думаю о сохранении таблицы в локальной базе данных для записи всех операций вставки, обновления, удаления для всех таблиц, а затем использую это для создания резервных копий и импорта в удаленную базу данных, чтобы мне не пришлось очищать базы данных каждый раз и вставьте все снова. Также у меня есть изображения, связанные с каждой записью, так что со временем я думаю, что это не будет подходящим способом TRUNCATE каждый раз. Есть мысли по этому поводу? или как это реализовать?
  • 0
    Вам нужно будет сравнить каждую запись в локальной базе данных с каждой записью в активной (что будет довольно медленно). Что-то, что делает SELECT * FROM local_database_name.table_name и то, что делает SELET * FROM live_database_name.table_name . Затем вы можете перебирать строки, связывая их по уникальному идентификатору. Любое, которого не было в действующей базе данных или которое было обновлением, вы можете запустить SQL для обновления из двух массивов в PHP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню