普查 / sql
一个用于解析binlog到sql的包
1.3.4
2021-03-05 09:43 UTC
Requires
- php: >=7.3.0
- illuminate/console: ^5.5|^6.0|^7.0|^8.0
- illuminate/database: ^5.5|^6.0|^7.0|^8.0
- illuminate/filesystem: ^5.5|^6.0|^7.0|^8.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
- krowinski/php-mysql-replication: ^7.0
- predis/predis: ^1.1
Requires (Dev)
- phpunit/phpunit: ~7
README
一个用于解析binlog到sql的包,主要用于之前准备使用binlog进行恢复操作,但后来没有找到合适的插件,曾考虑过使用ali的canal,功能介绍得很全面,但使用起来有些问题,服务端可以运行起来,但在进行数据同步时一直有问题,PHP客户端没有问题,可以正常获取数据。后来找到了krowinski/php-mysql-replication包,准备在其中添加一些数据处理功能。
安装
$ composer require census/sql -vvv
运行环境要求
- PHP 7.3+
- Mysql 5.7+
使用方法
基于Laravel框架,在Commands目录下,新建命令BinlogConsumer,代码如下:
namespace App\Console\Commands\BinlogWatcher;
use Illuminate\Console\Command;
use Parse\Sql\Binlog;
use Parse\Sql\Exceptions\Exception;
use Parse\Sql\Exceptions\InvalidArgumentException;
use Parse\Sql\Exceptions\InvalidInstanceException;
class BinlogConsumer extends Command
{
protected $signature = 'binlog-consumer';
// 命令描述信息
protected $description = '监听binlog日志服务';
public function handle()
{
try {
(new Binlog(config('sys.binlogConsumer')))->watcher();
} catch (Exception $exception) {
$message = $exception->getMessage();
// 参数异常捕获
if ($exception instanceof InvalidArgumentException) {
$message = '参数异常:' . $message . PHP_EOL;
}
// 实例化异常捕获
if ($exception instanceof InvalidInstanceException) {
$message = '实例化异常:' . $message . PHP_EOL;
}
echo $message;
}
}
}
如果打算使用supervisorctl来执行上述脚本,会有问题,因为上述程序执行后本身就是守护进程,所以通过nohup方式运行:nohup php artisan binlog-consumer > /var/log/binlog-operate.log 2>&1 &
建议
许可证
MIT