zoukankan      html  css  js  c++  java
  • canal实现mysql跨机房备份

    背景介绍


    跨机房数据库数据备份

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

    数据内容聚合分析组件

    摘录作者的描述

    原理图

    • 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 搜索引擎前端展示

    整体架构


    • 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

    canal-admin

    canal-client

    依赖
    代码
    运行

    A&Q&总结


    参考


    https://segmentfault.com/a/1190000020172570

    https://github.com/alibaba/canal

    zookeeper地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

    定位问题原因* 根据原因思考问题解决方案* 实践验证方案有效性* 提交验证结果
  • 相关阅读:
    my functions.h
    MFC中GDI之CBitmap(位图)
    MFC中GDI之CFont(字体)
    MFC中GDI之CBrush(画刷)
    MFC中SDI设置状态栏显示时间
    MFC中自定义消息
    MFC常用控件类
    MFC中改变窗口大小MoveWindow...
    MFC中建立关联变量的几种方式
    软件默认端口整理
  • 原文地址:https://www.cnblogs.com/jimoliunian/p/13026571.html
Copyright © 2011-2022 走看看