CDC(Change Data Capture)即数据变更抓取,通过源端数据源开启CDC,ROMA Connect 可实现数据源的实时数据同步以及物理表的物理删除同步。这里介绍通过开启Binlog模式CDC功能。
注意:1、使用MYSQL8.0及以上版本。
2、不支持采集二进制类型的字段例如:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
一、登录数据库
需要用数据库管理员root账户进行CDC功能配置,登录root账户:
mysql -uroot -p
回车输入数据库密码。
二、查看数据库是否已经开启了Binlog
这里先查看是否开启了Binlog,因为如果数据库配置过双主或者主从库那么一般情况下是已经开启了,可以直接跳到第四步。
执行以下命令查看数据库是否开启了Binlog:
show variables like 'log_bin';
若变量log_bin的值为“ON”则说明Binlog已开启,执行以下SQL命令检查相关参数的配置是否符合要求:
show variables like '%binlog_format%';
show variables like '%binlog_row_image%';
变量binlog_format的值应该为“ROW”,变量binlog_row_image的值应该为“FULL” 则代表已经配置过Binlog无需重复配置,直接跳到第四步。
三、开启Binlog
如果上面经过 “show variables like ‘log_bin’; ”查询,结果为OFF 或者下面的条件查询不满足,建议直接重新配置Biglog
3.1 配置前先退出在命令窗口输入:quit 退出数据库
3.2 使用vi 命令编辑MYSQL配置文件(Linux)
这里以linux为例,windows server 系统配置文件在安装目录,my.ini
vi /etc/my.cnf
输入“i”进入修改模式,在配置文件中增加:
server-id = 123 # 应为大于1的整数,根据实际设置,注意在创建数据集成任务时设置的“Server Id”值需要此处设置的值不同
log_bin = mysql-bin #
binlog_format = row
binlog_row_image = full
expire_logs_days = 10 # Binlog日志文件保留时间,超过保留时间的Binlog日志会被自动删除,应保留至少10天的日志文件
gtid_mode = on # MYSQL 版本大于5.6.5时添加,否则删除
enforce_gtid_consistency = on # MYSQL 版本大于5.6.5时添加,否则删除
按Esc退出编辑模式,输入“:wq”保存并退出。
3.3重启数据库,并返回到第二步查询,验证设置是否生效
重启数据库:
service mysqld restart
返回第二步查询验证
四、创建ROMA Connect连接数据库的用户
4.1 重新使用root账户登录数据库(步骤略)
4.2 创建账户:
CREATE USER 'wyzx_data_train'@'%' IDENTIFIED BY 'password';
wyzx_data_train:是创建的用户名,自定义
% :是任意IP都可以登录
password : 账户密码,自定义
4.3 修改数据库连接用户的密码认证
mysql8.0版本 后都需要修改密码认证
ALTER USER wyzx_data_train IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;
wyzx_data_train: 上面创建的用户名
flush privileges; 最后刷新权限
4.3 为账户授权
grant select, replication slave, replication client on *.* to 'wyzx_data_train'@'%';
grant:用户权限管理命令,可以管理用户访问哪些库哪些表,管理用户对表的操作(SELECT、CREATE、DELETE、DELETE、ALTER等详见下),管理用户登录的ip和域名,限制用户自己的权限是否可以授权给别的用户等。
select, replication slave, replication client:等等是要授权的用户权限,可以使用全部权限 all privileges
on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
另外有with grant option:
with grant option:表示允许用户将自己的权限授权给其它用户
**注意:
1、可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。
2、如果on不是所有库的所有表模式,那么应该注意授权的权限,有些权限不能针对某个库某个表授权,会报错:“incorrect usage of db grant and global privileges”。 那么根据上面一条的叠加规则可以分开授权,例如:
grant select, on my_db.* to 'wyzx_data_train'@'%';
grant replication slave, replication client on my_db.* to 'wyzx_data_train'@'%';
**
授权附录:
Privilege | Column | Context |
---|---|---|
ALL [PRIVILEGES] | Synonym for “all privileges” | Server administration |
ALTER | Alter_priv | Tables |
ALTER ROUTINE | Alter_routine_priv | Stored routines |
CREATE | Create_priv | Databases, tables, or indexes |
CREATE ROUTINE | Create_routine_priv | Stored routines |
CREATE TABLESPACE | Create_tablespace_priv | Server administration |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | Tables |
CREATE USER | Create_user_priv | Server administration |
CREATE VIEW | Create_view_priv | Views |
DELETE | Delete_priv | Tables |
DROP | Drop_priv | Databases, tables, or views |
EVENT | Event_priv | Databases |
EXECUTE | Execute_priv | Stored routines |
FILE | File_priv | File access on server host |
GRANT OPTION | Grant_priv | Databases, tables, or stored routines |
INDEX | Index_priv | Tables |
INSERT | Insert_priv | Tables or columns |
LOCK TABLES | Lock_tables_priv | Databases |
PROCESS | Process_priv | Server administration |
PROXY | See proxies_priv table | Server administration |
REFERENCES | References_priv | Databases or tables |
RELOAD | Reload_priv | Server administration |
REPLICATION CLIENT | Repl_client_priv | Server administration |
REPLICATION SLAVE | Repl_slave_priv | Server administration |
SELECT | Select_priv | Tables or columns |
SHOW DATABASES | Show_db_priv | Server administration |
SHOW VIEW | Show_view_priv | Views |
SHUTDOWN | Shutdown_priv | Server administration |
SUPER | Super_priv | Server administration |
TRIGGER | Trigger_priv | Tables |
UPDATE | Update_priv | Tables or columns |
USAGE | Synonym for “no privileges” | Server administration |