襄阳住房和城乡建设网站亚马逊品牌网站要怎么做

web/2025/9/26 2:55:41/文章来源:
襄阳住房和城乡建设网站,亚马逊品牌网站要怎么做,鞍山+网站建设,网站网站建设公司上海MySQL 部分 1. 查看是否开启 binlog MySQL 8 默认开启 binlog。可以通过以下命令查看是否开启#xff1a; SHOW VARIABLES LIKE log_bin;如果返回结果为 ON#xff0c;则表示 binlog 已开启。 Variable_nameValuelog_binON 2. 若未开启 binlog#xff0c;则需手动配置 …MySQL 部分 1. 查看是否开启 binlog MySQL 8 默认开启 binlog。可以通过以下命令查看是否开启 SHOW VARIABLES LIKE log_bin;如果返回结果为 ON则表示 binlog 已开启。 Variable_nameValuelog_binON 2. 若未开启 binlog则需手动配置 如果 binlog 未开启需要在 MySQL 配置文件中添加以下配置 log-binmysql-bin # 开启 binlog server_id1 # 配置 MySQL replication 需要定义确保不与 Canal 的 slaveId 重复修改完成后重启 MySQL 使配置生效。 3. 创建 Canal 使用的 MySQL 用户 Canal 需要连接到 MySQL 并读取 binlog因此需要创建一个专门的用户并授予相应权限。 # 创建用户 CREATE USER canal IDENTIFIED WITH mysql_native_password BY canal;# 授予权限 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO canal%;# 刷新权限 FLUSH PRIVILEGES;MQ 部分 在 RabbitMQ 中我们需要创建一个交换机和队列并将它们绑定在一起。我使用的是已经创建过的 Virtual Host trovebox_dev你可以根据实际情况决定是否创建新的 Virtual Host。 1. 新建交换机 在 RabbitMQ 管理界面中创建一个新的交换机命名为 canal.exchange。 2. 添加队列 创建一个新的队列命名为 canal.queue。 3. 绑定交换机 将队列 canal.queue 绑定到交换机 canal.exchange并设置路由键为 canal.routing.key。 Canal 部分 Docker 安装 Canal 使用 Docker 安装 Canal 非常简单以下是安装步骤 拉取 Canal 镜像没有tag默认最新的 docker pull canal/canal-server运行 Canal 容器 docker run -p 11111:11111 -p 11110:11110 -p 11112:11112 \--name canal \-e canal.destinationsdestination \-e canal.instance.master.addressip:port \-e canal.instance.dbUsernamecanal \-e canal.instance.dbPasswordcanal \-e canal.instance.connectionCharsetUTF-8 \-e canal.instance.tsdb.enabletrue \-e canal.instance.gtidonfalse \-e canal.instance.filter.regexdataBaseName\\..* \-d canal/canal-server:latest将 Canal 的配置文件和日志文件拷贝到宿主机 docker cp containerId:/home/admin/canal-server/conf /www/dk_project/dk_app/canal/ docker cp containerId:/home/admin/canal-server/logs /www/dk_project/dk_app/canal/修改配置文件 conf/canal.properties canal.serverMode rabbitMQ rabbitmq.host ip rabbitmq.virtual.host trovebox_dev rabbitmq.exchange canal.exchange rabbitmq.username trovebox_dev rabbitmq.password troveboxadmin修改配置文件 conf/destination/canal.properties canal.instance.dbUsernamecanal canal.instance.dbPasswordcanal canal.mq.topiccanal.routing.key删除并重新创建 Canal 容器 docker rm -f canaldocker run -p 11111:11111 -p 11110:11110 -p 11112:11112 \--name canal \-e canal.destinationsdestination \-e canal.instance.master.addressip:port \-e canal.instance.dbUsernamecanal \-e canal.instance.dbPasswordcanal \-e canal.instance.connectionCharsetUTF-8 \-e canal.instance.tsdb.enabletrue \-v /www/dk_project/dk_app/canal/conf:/home/admin/canal-server/conf/ \-v /home/admin/canal-server/logs:/home/admin/canal-server/logs/ \-e canal.instance.filter.regexdataBaseName\\..* \-d canal/canal-server:latestJava 部分代码 BinLogDto.java BinLogDto 类用于解析 Canal 发送的 binlog 数据。 package online.trovebox.ruyiai.common.dto;import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import lombok.Data;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;Data public class BinLogDto {private String database; // 数据库private String table; // 表private String type; // 操作类型private JSONArray data; // 操作数据private JSONArray old; // 变更前数据private JSONArray pkNames; // 主键名称private String sql; // 执行 SQL 语句private Long es;private String gtid;private Long id;private Boolean isDdl;private JSONObject mysqlType;private JSONObject sqlType;private Long ts;public T ListT getData(ClassT clazz) {if (this.data null || this.data.size() 0) {return null;}return this.data.toList(clazz);}public T ListT getOld(ClassT clazz) {if (this.old null || this.old.size() 0) {return null;}return this.old.toList(clazz);}public ListString getPkNames() {if (this.pkNames null || this.pkNames.size() 0) {return null;}ListString pkNames new ArrayList();for (Object pkName : this.pkNames) {pkNames.add(pkName.toString());}return pkNames;}public MapString, String getMysqlType() {if (this.mysqlType null) {return null;}MapString, String mysqlTypeMap new HashMap();this.mysqlType.forEach((k, v) - {mysqlTypeMap.put(k, v.toString());});return mysqlTypeMap;}public MapString, Integer getSqlType() {if (this.sqlType null) {return null;}MapString, Integer sqlTypeMap new HashMap();this.sqlType.forEach((k, v) - {sqlTypeMap.put(k, Integer.valueOf(v.toString()));});return sqlTypeMap;} }Listener.java Listener 类用于监听 RabbitMQ 中的消息并处理 binlog 数据。 package online.trovebox.ruyiai.listener;import com.alibaba.fastjson2.JSON; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import online.trovebox.ruyiai.common.dto.BinLogDto; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ScanOptions; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.stereotype.Component;import java.nio.charset.StandardCharsets; import java.util.HashSet; import java.util.Set;Component Slf4j RequiredArgsConstructor public class CanalListener {Resourceprivate RedisTemplateString, Object redisTemplate;String[] prefixes new String[]{coin_change_log,log,message,};RabbitListener(bindings {QueueBinding(value Queue(value canal.queue, durable true),exchange Exchange(value canal.exchange),key canal.routing.key)})public void handleDataChange(Payload Message message) {String content new String(message.getBody(), StandardCharsets.UTF_8);BinLogDto binLog JSON.parseObject(content, BinLogDto.class);String type binLog.getType();if (type.equalsIgnoreCase(select)) {return;}String table binLog.getTable();for (String prefix : prefixes) {if (table.startsWith(prefix)) {System.err.println(table);return;}}log.info(表{} 操作类型:{}, table, binLog.getType());log.info(操作后数据{} , binLog.getData().toStringPretty());deleteKeysStartingWith(table);}public void deleteKeysStartingWith(String prefix) {String cursor 0;do {SetString keys scanKeys(cursor, prefix);cursor keys.isEmpty() ? 0 : 1;if (!keys.isEmpty()) {redisTemplate.delete(keys);}} while (!0.equals(cursor));}private SetString scanKeys(String cursor, String prefix) {return redisTemplate.execute((RedisCallbackSetString) connection - {ScanOptions options ScanOptions.scanOptions().match(prefix *).count(1000).build();Cursorbyte[] cursorScan connection.scan(options);SetString keys new HashSet();while (cursorScan.hasNext()) {byte[] keyBytes cursorScan.next();keys.add(new String(keyBytes, StandardCharsets.UTF_8));}return keys;});} }效果图 知识点说明 BinlogMySQL 的二进制日志用于记录数据库的所有更改操作。Canal 通过读取 binlog 来获取数据库的变更数据。Canal阿里巴巴开源的数据库同步工具基于 MySQL 的 binlog 实现数据同步。RabbitMQ消息队列中间件用于在分布式系统中传递消息。Canal 可以将 binlog 数据发送到 RabbitMQ供其他服务消费。Redis内存数据库用于缓存数据。在监听 binlog 变更时可以通过 Redis 缓存相关数据并在数据变更时清除缓存。 通过以上步骤和代码你可以实现 MySQL 数据库的变更监听并将变更数据通过 RabbitMQ 发送到其他服务进行处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页建设网站代码网站备案ip查询网站查询

flask篇之URL重定向(二十三) 通过url_for()函数构造动态的URL: 我们在flask之中不仅仅是可以匹配静态的URL,还可以通过url_for()这个函数构造动态的URL from flask import Flask from flask import url_forapp Flask(__name__)app.route(/) def inde…

最好网站建设公司运营团队旺道网站排名优化

下班路上,一个武汉的朋友发我一份简历,问这个简历值多少。打开简历,九年工作经验,但只有两个项目经验,看着没啥亮点,建议他根据面试情况综合考虑。正好趁机分享一点自己的面试心得。1、编码能力这是做技术最…

discuz视频网站模板中企动力和东莞朝阳做的网站对比

这章讲到了可见性在逐像素渲染光照场景中的作用,也考虑如何使用可见性减少必须渲染的批次数量,从而改善性能。 假设一个非常简单的场景,一个房间,因为房间的不同部位是不同的材质,所以将其分为8个batch,另…

drupal网站建设数据库小米云网站开发

文章目录 一、设计模式概述1. 软件设计模式的产生背景2. 软件设计模式的概念3. 学习设计模式的必要性4. 设计模式分类(1)创建型模式(2)结构型模式(3)行为型模式 二、UML图1. 类图概述2. 类图作用3. 类图表示…

可以建设网站非常成功的网站

模拟场景: 当用户登录后,后台会返回一个token给前端,前端下次进入首页后,会先判断token是否过期,如果过期自动进入登录页面。配置路由: 1.安装 npm install vue-router42.安装后在src目录下创建router文…

优化网站费用ftp怎么做网站的备份

c 前缀 变量命名如果您是第一次查看Takes或Cactoos的源代码,很可能会像其他命名约定一样被命名约定触发,这意味着大多数类名都有两个字母的前缀: BkSafe , RqFake , RsWithStatus , TkGzip等。 老实说&…

网站建设资讯站做网站打电话话术

9 map Go 语言中提供的映射关系容器为 map ,其内部使用 散列表(hash) 实现。它是一种无序的基于 key-value 的数据结构。 Go 语言中的 map 是引用类型,必须初始化之后才能使用。 9.1 map 定义 Go 语言中 map 的定义语法为&…

龙岩做网站多少钱成都最好的设计公司

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 // 在看 Unsafe 类源码时看到一个注解:Deprecated,似曾相识... Deprecated 用在类或者方法上,表示…

车公庙网站建设wordpress主题 demo

一、引言 乳腺癌是女性中最常见的恶性肿瘤之一,也影响着全球范围内许多人们的健康。据世界卫生组织(WHO)的数据,乳腺癌是全球癌症发病率和死亡率最高的肿瘤之一,其对个体和社会的危害不可忽视。因此,早期乳…

企业网站建设应用研究论文在线制图

课程大纲被分成6个部分,每个部分又被分解为多个阶段, 而每个阶段包含了多个Try, Workshop, FactToFace, Apply. 这里只列出部分,和阶段:CHAPTER 0 : 预科[可选]Linux使用,常用CMD,服务配置,IDE&…

咸阳网站开发wordpress 文章页面怎样全屏显示

我是个幸运的人。虽然幸运不能被复制,但是眼光和努力可以。 关涛/关老板,80后的阿里P10,阿里巴巴通用计算平台负责人,阿里巴巴计算平台研究员。12年职场人生,微软和阿里的选择。 关涛的花名取自谐音:观涛。…

阳光梦网站建设好看的主页背景图片

nmap 扫描内网IP, 系统, 端口 扫描内网ip 对内网进行ARP扫描 .\nmap.exe -sn 192.168.110.0/24 # 全网段 .\nmap.exe -sn 192.168.110.100-200 # 100-200范围 扫描端口 .\nmap.exe -sT 192.168.110.130 # 三次握手连接 较慢, 但更有效 .\nmap.exe -sS 192.168.110.130 # 发…

吉林沈阳网站建设滨江道做网站公司

提供资料: php 基础 : https://www.runoob.com/php/php-tutorial.html php是什么? PHP 是服务器端脚本语言。 首先在学习PHP前需要对HTML 和CSS有一定的认识 PHP 能做什么? PHP 可以生成动态页面内容PHP 可以创建、打开、读取、写入、关…

建设部网站政策法规网站建设yuue

序列化与反序列化 序列化就是说内存中的某一个对象保存到硬盘当中,以二进制序列的形式存储下来,这就是一个序列化的过程。 而反序列化,就是将硬盘中存储的二进制的数,反序列化到内存当中,得到一个相应的对象&#xff…

门户网站是专一化好还是多元化好长春哪里做网站好

来源:今日头条11月27日,今日头条CEO朱文佳在36kr wise大会上谈及头条搜索。在他看来,要做好搜索,有三件事最重要。首先是技术,技术决定搜索的体验;其次是内容,内容是搜索的根本;最后…

如何用wordpress做网站建站模板行情

Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结 Atitit.java load class methods 1. 动态加载jar文件和class文件。 1 2. 使用Class静态方法 Class.forName 1 2.1. 使用ClassLoader 1 2.2. 3. 直接new 2 3. Ref 2 1. 动态加载jar文件和class文件。 完成…

江南大学做网站做汽车价格的网站

支付宝简介 使用流程 支付宝开放平台 (alipay.com) 1、登录支付宝开放平台-创建应用 得到app_id 2、绑定应用:在产品绑定中,绑定支付宝的相关功能3、配置应用: 配置各种加密方式 4、提交审核:5、把支付宝整个功能整合项目 沙箱…

做电影网站会有什么惩罚网站建设会计分录怎么做

文章目录 前言键盘呼起问题靠近底部的输入项被键盘遮挡底部按钮被顶上去 全面屏适配图片大小显示问题解决300ms延迟首屏优化 前言 这篇文章总结了我在工作中做H5遇到的一些问题,包括我是怎么解决的。可能不是当下的最优解,但是能保证解决问题。 单位适…

金融贷款和网站建设哪个赚钱个人网站能 做淘客吗

Windows 系统 Solr 8.11.3 安装详细教程 说明什么是Solr下载与解压如何启动启动命令:浏览器中打开dashboard其他命令查看关闭命令 说明 本次只是简单安装,为了在项目中使用,如果在公开服务器中安装需要更改开放端口,配置权限等。 …

手机网站开发者模式长春长春网站建设网

小生预言,鉴于目前CG产业中学术界与生产界之间的差异,未来必将有一门独立的学科,专门用于研究自然界的材质特性与表现,从此艺术界与学术界将呈现完美之统一,应该先在MIT或者Cornell出现。本人姑且将这门学科命名为“应…