1.数据采集流程
2. 环境准备
2.1 MySQL主从数据库环境准备
组件
hdp01(主机)
hdp02(主机)
MySQL数据库(主)
√
MySQL数据库(从)
√
Canal Server
√
说明:
DBus-0.6.1使用Canal-v1.1.4,支持MySQL5.6和5.7
被同步的MySQL bin-log需要是row模式
考虑到Kafka的message大小不宜太大,目前设置的是最大10MB,因此不支持同步MySQL MEDIUUMTEXT/MediumBlob和LongTEXT/LongBlob类型的数据,如果表中有这样类型的数据会直接被替换为空
MySQL主从配置:这里不再说明MySQL如何安装,只说明主从如何配置
主库配置:
# 主库配置
[client]
default-character-set=utf8mb4
[mysql]
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4
[mysqld]
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
datadir=/data/mysql
character_set_server=utf8mb4
character-set-client-handshake=FALSE
collation-server=utf8mb4_unicode_ci
max_connections=800
max_connect_errors=1000
############################### 以下为主从配置以及binlog配置,新增这些配置 ###############################
# 用于标识唯一的数据库,不能和别的服务器重复,建议使用ip的最后一段,默认值0代表不允许任何从库同步数据,不可以使用
server-id=105
# 用于指定binlog日志文件名前缀
log-bin=mysql-bin
binlog-format=Row
# 这些是表示同步的时候忽略的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=ambari
binlog-ignore-db=dbusmgr
binlog-ignore-db=hive
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
重启主库服务:
[admin@hdp01 ~]$ sudo systemctl restart mysqld
# 登录MySQL,创建一个用户,从库使用此用户连接主库进行bin-log同步
mysql> set global validate_password_policy=0;
mysql> set global validate_password_mixed_case_count=0;
mysql> set global validate_password_number_count=3;
mysql> set global validate_password_special_char_count=0;
mysql> set global validate_password_length=3;
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by '123456';
mysql> flush privileges;
# 查看主库状态
mysql> show master status;
+------------------+----------+--------------+-