同步许多数据库?

时间:2019-12-28 13:44:41

标签: php database laravel synchronization

我有一个使用Postgress数据库的Web应用程序。几个具有自己数据库的基于Web的记帐程序已与Web应用程序集成。必须实现所有数据库的同步。换句话说,如果在一个数据库中进行了某些更改,则所有其他数据库都应同步数据。

我以前从未做过此事,想知道有什么解决方案或方法吗?

应该使用Web API进行同步。

1 个答案:

答案 0 :(得分:2)

您可以只使用DB::listen()来获取所有查询,然后复制每个插入,更新或删除查询。

# app/Providers/AppServiceProvider.php
namespace App\Providers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        //
    }

    public function boot()
    {
        // Only listens to default connection, no need to worry on it firing on each replication
        DB::listen(function ($query) {
            if(Str::startsWith($query->sql, ['insert', 'update', 'delete'])) {
                DB::connection('connection2')->statement($query->sql, $query->bindings);
                DB::connection('connection3')->statement($query->sql, $query->bindings);
                DB::connection('connection4')->statement($query->sql, $query->bindings);
            }
        });
    }
}