热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

canalmysql5.7_canal实现mysql跨机房备份

背景介绍跨机房数据库数据备份数据库增量异构系统分发(cache,mq等)数据内容聚合分析组件摘录作者的描述原理图canal模拟MySQLslave的交互协议,伪装自己

背景介绍

跨机房数据库数据备份

数据库增量异构系统分发(cache,mq等)

数据内容聚合分析组件

摘录作者的描述

原理图

851ffc514d025d63d5c2e59f3c047b87.png

canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议

MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )

canal 解析 binary log 对象(原始为 byte 流)

环境说明

服务

ip

版本

端口

备注

mysql

10.159.37.179

5.6.1

3306

数据库主库

canal-server

10.199.96.148

1.1.3

11111

canal服务端binlog程序

zookeeper

10.199.96.148

3.4.14

2181

HA服务

zookeeperUI

10.199.96.148

1.0.0

2181

HA服务前端展示

canal-admin

10.199.96.148

1.1.4

8090

canal管理控制系统

file-beats

10.199.96.148

1.1.4

8090

canal日志文件读取服务

logbash

10.199.96.148

1.1.4

8090

canal日志搜集传输服务

elasticsearch

10.199.96.148

1.1.4

8090

搜索引擎

kabana

10.199.96.148

1.1.4

8090

搜索引擎前端展示

整体架构

b33cfa83b070cec3ea11a2ff3f160b05.png

canal-server集群部署,使用zookeeper作为ha组件,有server当机时客户端自动根据心跳切换到可用server上。

canal-server充当数据库slave角色,把binlog日志转换为结构化数据,canal-client连接server接收数据库变化日志,自行处理,本案例打印固定格式的日志:

2019-09-05 01:19:26.294|[INFO] [pool-6-thread-1] DBSQL_LOGGER [SimpleCanalClient.java : 68]|INSERT INTO intelligent-family.biz_device_message (id,user_id,biz_devices_id,tel,mac,message_name,message_type,message_val,message_aos,message_content,message_content_url,create_time) VALUES ('2961971',null,null,'13818424752','38D269B0677DFC9E2900','被拆报警,请您尽快处理!','infTamperAlarm','infTamperAlarm','0','您家于2019-09-05 01:19:25被拆报警,请您尽快处理!',null,'2019-09-05 01:19:25')

filebeats/logstash收集canal-client数据库变更日志,统一发送到搜索引擎elasticsearch中构建索引。

kabana通过http请求查询搜索引擎中日志索引展示数据库变更日志。

部署及配置

mysql

当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48),ps. mysql4.x版本没有经过严格测试,理论上是可以兼容

canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row.

[mysqld]

log-bin=mysql-bin #添加这一行就ok

binlog-format=ROW #选择row模式

server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复

重启

service mysqld restart

数据库重启后, 简单测试 my.cnf 配置是否生效:

mysql> show variables like 'binlog_format';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| binlog_format | ROW |

+---------------+-------+

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin | ON |

+---------------+-------+

canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限

CREATE USER canal IDENTIFIED BY 'canal';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';

-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;

FLUSH PRIVILEGES;

#针对已有的账户可通过grants查询权限

show grants for 'canal'

canal-server

安装

配置

启动/停止

zookeeper & zkui

默认账号:admin/manager

canal-admin

默认账号:admin/123456

canal-client

依赖

代码

运行

A&Q&总结

参考



推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • MySQL DateTime 类型数据处理及.0 尾数去除方法
    本文介绍如何在 MySQL 中处理 DateTime 类型的数据,并解决获取数据时出现的.0尾数问题。同时,探讨了不同场景下的解决方案,确保数据格式的一致性和准确性。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • Scala与Java的数据类型对比及特性
    本文将深入探讨Scala和Java在数据类型上的差异与相似之处,重点介绍两种语言的基本类型、引用类型及其包装类,并分析它们在面向对象编程中的表现。 ... [详细]
author-avatar
星魂陨石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有