当前位置:   article > 正文

flink CDC-SqlServerCDC 开启代理及SQL Server开启CDC的完整操作过程_flink cdc sqlserver

flink cdc sqlserver
  • 写在前面
  • SQL Server开启CDC
    • 1. 将指定库的实例先开启CDC
    • 2. 开启需要开启CDC的表
    • 3. 关闭CDC功能
  • 更详细信息参照官网

写在前面

鉴于老旧数据的结构和项目都在sqlserver上存储,且迁移成本巨大,当下要为sqlserver的存储过程减负。要将一部分流式的动态数据实现实时查询并存储数仓。那在现有的数据环境下, 将sqlserver的数据通过flink 接管实现数据输出和仓库存储。

SQL Server开启CDC

数据同步的开启方式对于sqlserver来说有点特殊,集成在现有的环境中,我们的sqlserver是2012版本的
具体操作如下:

1. 将指定库的实例先开启CDC

命令:

  1. USE database;
  2. GO
  3. EXEC sys.sp_cdc_enable_db

必须指定库名先开启CDC不然会报类似以下的错:
请确保已设置正确的数据库上下文,然后重试该操作。若要报告数据库已启用变更数据

执行成功之后会在sys下创建以下几张表,通过客户端,可以在系统表的目录下看到

cdc.captured_columns
cdc.change_tables
cdc.ddl_history
cdc.index_columns
cdc.lsn_time_mapping
dbo.systranschemas

客户端展示

执行之后查看对应的数据库是否已经开启,可以查看已经开启CDC的库都有那些:
命令:

  1. select *
  2. from sys.databases where is_cdc_enabled = 1

2. 开启需要开启CDC的表

指定的库开启了CDC之后,可以单独指定具体某一个表来开启CDC功能,可以通过命令来实现具体某个表启用CDC
命令:

EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't1', @role_name = null;

为第一个表启用CDC后,SQLServer生成两个Agent作业
cdc.dbname_capture
cdc.dbname_cleanup

具体的命令可以通过找到官网相关介绍来查看更多的关于sqlserver CDC的东西

查看刚刚开启CDC的表是否启用了CDC

  1. select name, is_tracked_by_cdc
  2. from sys.tables where object_id = OBJECT_ID('dbo.t1')

当然,也可以查看哪些表开启了CDC

  1. select name, is_tracked_by_cdc
  2. from sys.tables where is_tracked_by_cdc = '1'

3. 关闭CDC功能

关闭表(“dbo.t1”)的CDC

EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 't1', @capture_instance = 'all';

禁用数据库所有实例CDC

EXEC sys.sp_cdc_disable_db; 

 另外如果SqlServer没有开启SqlServer代理请看:

2021-09-06 docker中SqlServer开启代理服务,并配置cdc_docker安装sqlserver2007并启用cdc_KX-UP的博客-CSDN博客


 

补充一句,如果操作提示没权限

docker exec -it -u root sql1 /bin/bash

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/845737
推荐阅读
相关标签
  

闽ICP备14008679号