canal简介
Canal是阿里巴巴开源的一个基于MySQL协议的数据同步工具,可以将MySQL数据库中的数据实时同步到其他数据源中。在PHP应用程序中,可以使用Canal轻松实现与MySQL数据库的实时数据同步,减少了数据同步的延迟和数据丢失的风险,提高了系统的可靠性和实时性。
Canal提供了丰富的API和文档支持,可以方便地进行集成和使用
伪装成mysql从服务器,解析mysql的binlog文件
我主要是用来做redis缓存的更新&以及商品订阅降价的通知
安装
# 这玩意依赖java
# java8以后版本的jdk根据 stdout.log 中的报错对 startup.sh 中的执行参数进行更改# 我的下载canal位置为 /download/canal
cd /download/canal
# 下载 得到 canal.deployer-1.1.5.tar.gz
wget http://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
# 解压
tar -zxvf canal-1.1.5/canal.deployer-1.1.5.tar.gz
# /download/canal/当前目录结构
# bin 可执行sh
# conf 配置
# lib 包
# plugin 插件
# logs 日志 stdout.log 位置: /download/canal/logs/canal/stdout.log
配置
# 配置canal上的数据库连接设置
vim /download/canal/conf/example/instance.properties
canal.instance.master.address=127.0.0.1:3306# 通过mysql show master status 中的 File
canal.instance.master.journal.name=mysql-bin.000001
# 通过mysql show master status 中的 Position
canal.instance.master.position=856
# 连接mysql的用户名 一定要有读取binlog的权限
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal# 可以这么创建用户
CREATE USER 'canal'@'%' IDENTIFIED by 'canal';
GRANT SELECT,REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES
启动
/download/canal/bin/startup.sh
安装php与canal连接的组件
# github地址
https://github.com/xingwenge/canal-php
# 我在laravel中使用,所以选择composer的安装方式
composer require xingwenge/canal_php
简单示例
//我在laravel下的public同级下建bin/core.php require __DIR__.'/../vendor/autoload.php'; use xingwenge\canal_php\CanalClient; use xingwenge\canal_php\CanalConnectorFactory; use xingwenge\canal_php\Fmt; try { $client = CanalConnectorFactory::createClient(CanalClient::TYPE_SOCKET_CLUE); # $client = CanalConnectorFactory::createClient(CanalClient::TYPE_SWOOLE); $client->connect("127.0.0.1", 11111); $client->checkValid(); // $client->subscribe("1001", "example", ".*\\..*"); $client->subscribe("1001", "example", "laravel.school"); # 设置过滤 while (true) { $message = $client->get(100); if ($entries = $message->getEntries()) { foreach ($entries as $entry) { Fmt::println($entry); } } sleep(1); } $client->disConnect(); } catch (\Exception $e) { echo $e->getMessage(), PHP_EOL; }
结果展示
以上是怎麼使用Canal實作PHP應用程式與MySQL資料庫的即時資料同步的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具