• canal数据同步的环境配置


    canal数据同步的环境配置:(适用于mysql)

    前提:在linux和windows系统的mysql数据库中创建相同结构的数据库和表,我的linux中mysql是用docker实现的(5.7版本),拉取mysql镜像后,当我们创建容器时,一定要记得对目录进行挂载,否则后期是无法开启logbin功能的。

    1.开启mysql的logbin功能

    #拉取镜像
    docker pull mysql
    #创建容器
    docker run -p 33306:3306 
    --name mysql 
    -v /root/mysql/conf:/etc/mysql/mysql.conf.d 
    -v /root/mysql/logs:/logs 
    -v /root/mysql/data:/var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=root 
    -di mysql
    

    (1)可以通过进入mysql然后修改/etc/mysql/mysql.conf.d/mysqld.cnf文件

    docker exec -it mysql /bin/bash
    cd /etc/mysql/mysql.conf.d
    #docker中并没有vim命令 所以可以选择安装vim
    apt-get update
    apt-get install -y vim
    #安装完后可以进行修改
    

    (2)也可以使用命令进行修改

    docker exec myMysql bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
    

      

    docker exec myMysql bash -c "echo 'server-id=123454' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
    

    (3)因为进行了目录挂载所以也可以直接在宿主机上修改

    然后重启mysql

    docker restart myMysql
    

    检查binlog功能是否有开启

    mysql> show variables like 'log_bin';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_bin       | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    log_bin是ON则代表开启了。

    2.在linux中安装canal服务并启动

    下载地址:

    https://github.com/alibaba/canal/releases

    (1)下载之后,放到目录中,先创建好目录,目录任意,linux中要有Java环境

    mv 安装包 /usr/local/canal/
    

    然后解压

    tar -zvxf 安装包
    

    (2)修改配置文件

    vi conf/example/instance.properties
    
    #需要改成自己的数据库信息(linux中mysql的ip和端口)
    canal.instance.master.address=192.168.44.132:3306
    
    #需要改成自己的数据库用户名与密码 该用户必须有权限来跨系统连接
    #可以通过windows中数据库连接工具进行测试,连上就代表有权限
    canal.instance.dbUsername=canal
    canal.instance.dbPassword=canal
    
    #需要改成同步的数据库表规则,例如只是同步一下表
    #canal.instance.filter.regex=.*\..*
    canal.instance.filter.regex=guli_ucenter.ucenter_member
    

    若没有权限,则给用户赋予权限

    CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
    GRANT SHOW VIEW, SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    FLUSH PRIVILEGES;
    

    注意:

    mysql 数据解析关注的表,Perl正则表达式.
    多个正则之间以逗号(,)分隔,转义符需要双斜杠(\) 
    常见例子:
    1.  所有表:.*   or  .*\..*
    2.  canal schema下所有表: canal\..*
    3.  canal下的以canal打头的表:canal\.canal.*
    4.  canal schema下的一张表:canal.test1
    5.  多个规则组合使用:canal\..*,mysql.test1,mysql.test2 (逗号分隔)
    注意:此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)
    

    (3)进入bin目录下启动

    cd bin
    sh startup.sh
    

    (4)关闭服务

    ./stop.sh
    

      

  • 相关阅读:
    TF中的自定义正则项
    [工具]多线程下载 axel
    [算法]kv-memory 表示dense特征
    [code]tensorflow分桶
    [code]Keras API的用法记录
    vim显示下划线不高亮问题
    [代码] kv2sparse
    [代码]并发执行python的例子
    AI算法手册
    [工具]soundflower
  • 原文地址:https://www.cnblogs.com/jamers-rz/p/14396932.html
Copyright © 2020-2023  润新知