DB helpers to complement phlib/db
This package, db-helper-replication, is split out from phlib/db-helper due to the additional process-control dependencies which users of the more typical helpers may not require or have available.
composer require phlib/db-helper-replication
The Replication helper monitors replica lag, which it stores in Memcache. This known lag can then be used to throttle long-running processes by introducing variable amounts of sleep.
Set up replica monitoring using the CLI script (you might consider using Monit to run this automatically):
./vendor/bin/db replication:monitor -c path/to/config.php -p /var/run/db-replication.pid -d start
$config = require 'path/to/config.php';
$replication = Replication::createFromConfig($config);
while ([...]) {
[... some repetitive iteration, like writing thousands of records ...]
$replication->throttle();
}
Your config file might look something like this:
<?php
$config = [
// primary
'host' => '10.0.0.1',
'username' => 'foo',
'password' => 'bar',
'replicas' => [
[
'host' => '10.0.0.2',
'username' => 'foo',
'password' => 'bar',
],
],
'storage' => [
'class' => \Phlib\DbHelperReplication\Replication\Memcache::class,
'args' => [[]],
],
];
return $config;
This package is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.