У меня есть два сайта site1.dev и site2.dev, указывающие на одно и то же приложение. Я хочу подключить site1.dev к одной базе данных (db1) и site2.dev к другим (db2) и sync db1 to db2. Я выяснил, что использование более двух баз данных возможно, но я действительно хочу синхронизировать все действия db1 с db2. Я также создал таблицу журналов для записи активности для создания, редактирования и удаления. Это схема таблицыLaravel5.3 подключение и синхронизация нескольких баз данных
Schema::create('sync_logs', function (Blueprint $table) {
$table->increments('id');
$table->integer('model_id')->nullable()->default(null);
$table->string('model')->nullable()->default(null);
$table->integer('action')->comment('0=>Create, 1=>Update, 2=>Delete');
$table->text('data');
$table->boolean('synced')->default(0);
$table->timestamps();
});
я планирую получить все несинхронизированные данные и вставлять данные в db2 в цикле. Возможно ли это? Каковы способы сделать это?
Вы пробовали [репликацию базы данных] (https://en.wikipedia.org/wiki/Replication_ (вычисления) #Database_replication), или вы пытаетесь реализовать это самостоятельно. Если это вторая, пожалуйста, сообщите нам дополнительную информацию о том, когда вы хотите реплицировать базы данных и немного больше для настройки, которую вы ожидаете. например, будут ли базы данных всегда находиться на одной машине? – melanholly
Базы данных не всегда будут находиться на одной машине. db1 будет на клиентской машине и db2 на облачном сервере, но для целей разработки я хочу, чтобы они оба были на моей машине. Когда приложение установлено на клиентской машине, все действия записываются в db1, а db2 будет обновляться каждый день за один раз. – sar
Итак, вы можете использовать https://laravel.com/docs/5.3/scheduling для синхронизации и затухания сериализации всех моделей, которые не были синхронизированы – melanholly