普查/sql

一个用于解析binlog到sql的包

1.3.4 2021-03-05 09:43 UTC

This package is auto-updated.

Last update: 2024-09-05 17:45:08 UTC


README

一个用于解析binlog到sql的包,主要用于之前准备使用binlog进行恢复操作,但后来没有找到合适的插件,曾考虑过使用ali的canal,功能介绍得很全面,但使用起来有些问题,服务端可以运行起来,但在进行数据同步时一直有问题,PHP客户端没有问题,可以正常获取数据。后来找到了krowinski/php-mysql-replication包,准备在其中添加一些数据处理功能。

Build Status

安装

$ 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