当前位置: 首页 > news >正文

MYSQL 8.0 配置CDC(binlog)

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'@'%';

**
授权附录:

PrivilegeColumnContext
ALL [PRIVILEGES]Synonym for “all privileges”Server administration
ALTERAlter_privTables
ALTER ROUTINEAlter_routine_privStored routines
CREATECreate_privDatabases, tables, or indexes
CREATE ROUTINECreate_routine_privStored routines
CREATE TABLESPACECreate_tablespace_privServer administration
CREATE TEMPORARY TABLESCreate_tmp_table_privTables
CREATE USERCreate_user_privServer administration
CREATE VIEWCreate_view_privViews
DELETEDelete_privTables
DROPDrop_privDatabases, tables, or views
EVENTEvent_privDatabases
EXECUTEExecute_privStored routines
FILEFile_privFile access on server host
GRANT OPTIONGrant_privDatabases, tables, or stored routines
INDEXIndex_privTables
INSERTInsert_privTables or columns
LOCK TABLESLock_tables_privDatabases
PROCESSProcess_privServer administration
PROXYSee proxies_priv tableServer administration
REFERENCESReferences_privDatabases or tables
RELOADReload_privServer administration
REPLICATION CLIENTRepl_client_privServer administration
REPLICATION SLAVERepl_slave_privServer administration
SELECTSelect_privTables or columns
SHOW DATABASESShow_db_privServer administration
SHOW VIEWShow_view_privViews
SHUTDOWNShutdown_privServer administration
SUPERSuper_privServer administration
TRIGGERTrigger_privTables
UPDATEUpdate_privTables or columns
USAGESynonym for “no privileges”Server administration
http://www.lryc.cn/news/216821.html

相关文章:

  • 软件测试/测试开发丨ChatGPT能否成为PPT最佳伴侣
  • java对象的创建过程
  • Salesforce创建一个页面,能够配置各种提示语,而不需要修改代码
  • 轻松管理MySQL权限:Python脚本带你飞
  • Py之transformers_stream_generator:transformers_stream_generator的简介、安装、使用方法之详细攻略
  • 2023年Zotero最新同步教程-使用TeraCloud的25G免费空间实时跨设备同步文献
  • 面试题:用宏定义写出swap(x,y),即交换两数。
  • 微服务框架SpringcloudAlibaba+Nacos集成RabbitMQ
  • 低代码开发,一场深度的IT效率革命
  • 虚拟串口软件使用介绍
  • 如何编写一份完整的软件测试报告?(进阶版)百分之90不知道
  • python企业微信小程序发送信息
  • Java入门篇 之 逻辑控制(练习题篇)
  • Android Google登录并获取token(亲测有效)
  • npm ERR! code ELIFECYCLE
  • Mgeo:multi-modalgeographic language model pre-training
  • [激光原理与应用-75]:西门子PLC系列选型
  • Linux上编译sqlite3库出现undefined reference to `sqlite3_column_table_name‘
  • 第十五章 EM期望极大算法及其推广
  • 自动化测试如何准备测试数据
  • javaEE -13(6000字CSS入门级教程 - 2)
  • vscode 使用python无法导入库
  • 三维向量旋转
  • 顺序表——leetcode
  • Kaprekar 7641 - 1467= 6174
  • 李宏毅机器学习笔记.Flow-based Generative Model(补)
  • Java使用Spark入门级非常详细的总结
  • kubernetes集群编排——k8s存储
  • 【软件STM32cubeIDE下H73xx配置串口uart1+中断接收/DMA收发+HAL库+简单数据解析-基础样例】
  • jdk8和jdk9中接口的新特性