MySQL cdc
1. 執行語句 show grants for 'user'查詢MySQL賬號權限
2. 檢查是否包含以下權限:SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT
3. 若權限缺失,用root賬號登錄MySQL(root賬號可能只允許在服務器上登錄)
4. 登錄語句 mysql -P{port} -u{username} -p
5. 執行語句
(1) GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user' IDENTIFIED BY 'password';
(2) FLUSH PRIVILEGES;
Oracle cdc
1. 登錄oracle機器,docker exec -it oracle11g /bin/bash 進入容器,su - root 密碼helowin,然后 su - oracle
2. 新建sql腳本 vi exesql.sql,腳本內容如下
shutdown immediate;
startup mount;
3. 執行sqlplus /nolog,切換到管理員用戶 conn /as sysdba
4. 執行sql腳本 @ /home/oracle/exesql.sql
5. 執行alter database archivelog; alter database open;
6. 檢查日志歸檔是否開啟:archive log list;
7. 設置數據庫啟用補充日志記錄;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
-- 查看是否開啟歸檔模式
select name,log_mode from v$database;
Pgsql cdc
1. 登錄pgsql的機器,進入容器docker exec -it postgresql13 /bin/bash
2. 修改/var/lib/postgresql/postgresql.conf,將wal_level屬性改成logical
3. docker restart postgresql13
4. ALTER TABLE tablename REPLICA IDENTITY FULL;
Sqlserver cdc
1.執行開啟代理語句:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Agent XPs', 1;
GO
RECONFIGURE
2. 登錄sqlserver機器,docker exec -it sqlserver /bin/bash
3. 啟用 SQL Server 代理:
執行/opt/mssql/bin/mssql-conf set sqlagent.enabled true
5. 退出容器,重啟sqlserver:docker restart sqlserver
6. sqlserver客戶端運行:
-- 開啟數據庫CDC
USE 庫名;
GO
EXEC sys.sp_cdc_enable_db;
USE tlsoft;
GO
EXEC sys.sp_cdc_help_change_data_capture
GO
-- 開啟表CDC
USE 庫名
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'表名',
@role_name = N'MyRole',
@filegroup_name = N'PRIMARY',
@supports_net_changes = 0
GO
-- 查詢開啟cdc的庫
select is_cdc_enabled, name from sys.databases;
-- 查看表cdc開啟狀態
SELECT name, is_tracked_by_cdc FROM sys.tables WHERE name like '%表名%';