2017-02-13 16 views
0

我有两个站点site1.dev和site2.dev指向同一个应用程序。我想要的是将site1.dev连接到一个数据库(db1),将site2.dev连接到其他(db2)并将db1同步到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的模式。 这可能吗?有什么办法做到这一点?

+0

您是否尝试过[数据库复制](https://en.wikipedia.org/wiki/Replication_(computing)#Database_replication),或者您正试图自己实现此目的。如果是第二个,请给我们关于何时想复制数据库的更多信息,以及关于您期望的设置的更多信息。例如数据库将始终在同一台机器上? – melanholly

+0

数据库不会总是在同一台机器上。 db1将位于客户端计算机上,db2位于云服务器上,但为了开发目的,现在我希望它们都位于我的计算机上。当应用程序安装在客户端机器上时,所有活动都记录在db1中,并且db2将每天更新一次。 – sar

+0

好的,您可以使用https://laravel.com/docs/5.3/scheduling进行计时,并对所有尚未同步的模型进行序列化 – melanholly

回答

0

您可以通过记录同步到数据库的数据的轨迹来执行此操作。例如,将雇员表的最后一个ID保存在跟踪表中,并每天运行一次cronjob以检查雇员表ID是否大于跟踪表外键(employee_id),然后将未同步的员工数据同步到DB2。