壹、源端Oracle
一、安装前置配置
1、创建安装用户
groupadd flysync
useradd flysync -g flysync -G mysql
passwd flysync
2、上传安装文件包和license文件到服务器/home/flysync目录下,并解压
tar -xzvf KingbaseFlySync-V001R006C003B20211213-replicator.tar.gz
3、配置将hosts文件,将源端和目标端服务器都加上去
vi /etc/hosts
192.168.100.111 oracle
192.168.100.124 kes8-2
4、配置/etc/security/limits.conf文件【可选】
vi /etc/security/limits.conf
flysync - nofile 65535
flysync - nproc 8096
mssql - nofile 65535
mssql - nproc 8096
5、开启时间同步服务【可选】
yum install ntp
systemctl start ntpd
systemctl enable ntpd
6、在/etc/sysctl.conf配置swappiness参数【可选】
vi /etc/sysctl.conf
vm.swappiness = 10
sysctl -p
7、检查依赖软件jdk和ruby【必须】
--jdk
java -version
版本小于1.8的,可以使用yum安装1.8版本
yum install java-1.8.0-openjdk.x86_64
也可以下载oracle的1.8版本的JDK包手动上传安装
--ruby
可以使用yum方式安装
yum install ruby
也可以使用KFS控制台服务器里自带的ruby包进行替换,位置在:/opt/KFS/console/media/rbenv,
将压缩包解压到/usr/local,然后配置/etc/profile文件里$PATH环境变量,将ruby的bin目录添加进去
vi /etc/profile
export PATH=$PATH:/usr/local/ruby/bin
配置完成后,使用source命令应用
source /etc/profile
二、安装
1、oracle数据库参数配置
(1)、配置数据库时间格式:
ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD' SCOPE=SPFILE;
(2)、创建连接用户并授予相关权限:
create user flysync identified by 123456;
alter user flysync default tablespace users;
alter user flysync quota unlimited on users;
A.logminer解析方式:
a.如果能够提供 DBA 权限,那么该用户应该赋予的权限包括:
GRANT CONNECT, RESOURCE TO FLYSYNC;
GRANT EXECUTE_CATALOG_ROLE TO FLYSYNC;
GRANT CREATE SESSION TO FLYSYNC;
GRANT SELECT ANY TRANSACTION TO FLYSYNC;
GRANT SELECT ANY TABLE TO FLYSYNC;
b.如果不能够提供 DBA 权限,可以赋予以下权限包括:
GRANT CONNECT TO FLYSYNC;
GRANT CREATE SESSION TO FLYSYNC;
GRANT UNLIMITED TABLESPACE TO FLYSYNC;
GRANT CREATE TABLE TO FLYSYNC;
GRANT CREATE MINING MODEL TO FLYSYNC;
GRANT LOGMINING TO FLYSYNC;
GRANT EXECUTE ON DBMS_FLASHBACK TO FLYSYNC;
GRANT EXECUTE ON DBMS_LOGMNR TO FLYSYNC;
GRANT EXECUTE ON DBMS_LOGMNR_D TO FLYSYNC;
GRANT EXECUTE ON SYS.DBMS_LOGMNR TO FLYSYNC;
GRANT EXECUTE ON SYS.DBMS_LOGMNR_D TO FLYSYNC;
GRANT EXECUTE ON SYS.DBMS_LOGMNR_INTERNAL TO FLYSYNC;
GRANT EXECUTE ON SYS.DBMS_LOGMNR_LOGREP_DICT TO FLYSYNC;
GRANT EXECUTE ON SYS.DBMS_LOGMNR_SESSION TO FLYSYNC;
GRANT EXECUTE_CATALOG_ROLE TO FLYSYNC;
GRANT SELECT ANY DICTIONARY TO FLYSYNC;
GRANT SELECT ANY TABLE TO FLYSYNC;
GRANT SELECT ANY TRANSACTION TO FLYSYNC;
GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO FLYSYNC;
GRANT SELECT ON SYS.V_$DATABASE TO FLYSYNC;
GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO FLYSYNC;
GRANT SELECT ON V_$ARCHIVED_LOG TO FLYSYNC;
GRANT SELECT ON V_$DATABASE TO FLYSYNC;
GRANT SELECT ON V_$LOG TO FLYSYNC;
GRANT SELECT ON V_$LOGFILE TO FLYSYNC;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO FLYSYNC;
GRANT SELECT ON V_$LOGMNR_DICTIONARY TO FLYSYNC;
GRANT SELECT ON V_$LOGMNR_LOGS TO FLYSYNC;
GRANT SELECT ON V_$LOGMNR_PARAMETERS TO FLYSYNC;
GRANT SELECT ON V_$PARAMETER TO FLYSYNC;
B.redo解析方式:
a.如果能够提供 DBA 权限,那么该用户应该赋予的权限包括:
GRANT CONNECT, RESOURCE TO FLYSYNC;
GRANT EXECUTE_CATALOG_ROLE TO FLYSYNC;
GRANT CREATE SESSION TO FLYSYNC;
GRANT SELECT ANY TRANSACTION TO FLYSYNC;
GRANT SELECT ANY TABLE TO FLYSYNC;
GRANT UNLIMITED TABLESPACE TO FLYSYNC;
GRANT DBA TO FLYSYNC;
b.如果不能够提供 DBA 权限,可以赋予以下权限包括:
GRANT CONNECT TO FLYSYNC;
GRANT CREATE SESSION TO FLYSYNC;
GRANT UNLIMITED TABLESPACE TO FLYSYNC;
GRANT CREATE TABLE TO FLYSYNC;
GRANT EXECUTE_CATALOG_ROLE TO FLYSYNC;
GRANT SELECT ANY DICTIONARY TO FLYSYNC;
GRANT SELECT ON V_$PARAMETER TO FLYSYNC;
(3)、安装 Logminer(redo解析方式不需要)
命令如下(Oracle 10g、Oracle 11g 和 Oracle 12c):
@$ORACLE_HOME/RDBMS/ADMIN/dbmslm.sql
@$ORACLE_HOME/RDBMS/ADMIN/dbmslmd.sql
@$ORACLE_HOME/RDBMS/ADMIN/dbmslms.sql
注意:以上三个 SQL 脚本,如果在安装的 Oralce 数据库相应的目录中有则必须执行;如果没有则可忽略
(4)、开启 Oracle 数据库的归档日志(必须开启)了,具体步骤如下:
A.查看当前归档模式
SQL>select log_mode from v$database;
B.创建归档目录
[oracle@zjtmp-db oracle]$ mkdir -p $ORACLE_BASE/archivelog
[oracle@zjtmp-db oracle]$ sqlplus / as sysdba
SQL> alter system set log_archive_dest_1="location=/data/oracle/archivelog" scope=both;
C.将数据库重启到mount状态
SQL>shutdown immediate
SQL>startup mount
D.将数据库更改为归档模式
SQL>alter database archivelog;
E.打开数据库
SQL>alter database open;
F.查看归档模式是否开启
SQL>select log_mode from v$database;
(5)、开启补全日志:
• 检查补全日志的状态
SQL> SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_all FROM v$database;
SUPPLEME SUP SUP
-------- --- ---
NO NO NO
• 开启补全日志 (建议在 MOUNT 模式下执行)
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
• 再次检查补全日志的状态
SQL> SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
SUPPLEME SUP SUP
-------- --- ---
YES YES YES
必须3项都为YES
(6)、切换日志文件
SQL> ALTER SYSTEM SWITCH LOGFILE;
如果数据库是12c或19c可插接数据库(pdb),需要注意以下几点:
a.启用归档和补全日志必须在CDB里配置
b.用户权限在PDB里配置
c.数据库连接参数里的数据库名为PDB名,不是SID
d.如果要同步的数据在CDB里,则CDB创建的用户名前必须加前缀”c##”,连接的数据库名为SID
2. flysync.ini配置
在安装用户的家目录下配置flysync.ini文件
vi /home/flysync/flysync.ini
I.logminer解析模式
[defaults]
install-directory=/home/flysync/kfsrep
profile-script=~/.bash_profile
rmi-port=11000
[oracle11g]
role=master
master=oracle
members=oracle
kufl-port=3112
replication-host=192.168.100.111
replication-port=1521
replication-user=FLYSYNC
replication-password=123456
datasource-type=oracle
oracle-extractor-method=logminer
datasource-oracle-service=orcl
svc-extractor-filters=dropstatementdata
property=replicator.extractor.dbms.tablePatterns=FLYSYNC.*,TEST.T2
property=replicator.extractor.dbms.scnSegmentationThreshold=5000
property=replicator.datasource.global.catalogPrefix=false
注意:
(1). oracle-extractor-method 设置为 logminer(数据抽取方式)
(2). replication-user=FLYSYNC,用户名必须配置为大写
(3). replicator.extractor.dbms.scnSegmentationThreshold logminer 查询数据的阈值(当 Flysync 软件刚启动时,会查询到最早开启归档日志的 Scn 号,如果最早的 Scn 号与当前数据库的 Scn 号跨度很大的话,会严重影响数据库的性能,所以设置此阈值),默认值为 5000
(4). svc-extractor-filters 表示是否同步 DDL 语句(默认值:dropstatementdata,表示不同步 DDL 语句)
(5). property=replicator.extractor.dbms.tablePatterns 进行表过滤,FLYSYNC.*,TEST.T2表示同步FLYSYNC模式下所有表和 TEST 模式下 T2 表多个规则采用逗号 (,) 分割
(6). 若配置了 property=replicator.extractor.dbms.tablePatterns 进行表过滤参数时,请确保将 flysync 使用的数据库用户下的心跳表加入 tablePatterns 参数中,即:若使用 flysync 使用的数据库用户为KINGBASE, 待同步的用户模式为 TEST,则应配置
property=replicator.extractor.dbms.tablePatterns=KINGBASE.*,TEST.*
(7). replicator.datasource.global.catalogPrefix KFS 系统表是否按服务名增加前缀 (serviceName_), 配置后需要考虑由于 KFS 系统表的表名改变,导致目标端 casetransform 和 replicate 过滤器会对系统表生效。
• 解决方法一:先配置 rename,再配置 casetransform 和 replicate 过滤器
• 解决方法二:配置 casetransform 后,rename 按照 casetransform 后的进行配置
II.redo解析方式
[defaults]
user=flysync
install-directory=/home/flysync/kfsrep
profile-script=~/.bash_profile
rmi-port=11000
[oracle11g]
role=master
master=oracle
members=oracle
kufl-port=3112
replication-host=192.168.100.111
replication-port=1521
replication-user=FLYSYNC
replication-password=123456
datasource-type=oracle
oracle-extractor-method=redo
datasource-oracle-service=orcl
svc-extractor-filters=dropstatementdata,ignoreddl
property=replicator.extractor.dbms.tablePatterns=FLYSYNC.*,TEST.T2
property=replicator.extractor.dbms.keepMixDML=false
property=replicator.filter.ignoreddl.ignore=CREATE;ALTER;DROP;TURNCATE
注意:
(1).REDO 形式的部署,KFS 必须和数据库处于同一台物理机器
(2).replication-user=FLYSYNC,用户名必须配置为大写
(3).replicator.extractor.dbms.keepMixDML 在开启同步 DDL 后生效,主要针对 create table as 类型语句,同时产生 DDL 和 DML,可以通过 replicator.extractor.dbms.keepMixDML 来确认是否保留 DML,true为保留,false 为不保留,默认为 false。
(4).svc-extractor-filters=dropstatementdata,ignoreddl(默认值:dropstatementdata,表示不同步DDL语句;ignoreddl,表示不同步指定 DDL 语句,两者配置其一即可)
(5).property=replicator.filter.ignoreddl.ignore 配置 ignoreddl 时生效, 参数可为所有 DDL 语句或关键字, 如CREATE/DROP 等, 多个用分号隔开
3、安装
切换到安装包目录下的tools子目录
cd /home/flysync/KingbaseFlySync-V001R006C003B20211213-replicator/tools
./fspm install
4、将license文件复制到安装目录下
cp license_8703_0.dat /home/flysync/kfsrep/license.dat
5、启动KFS
replicator start
查看KFS状态
replicator status
查看服务状态
fsrepctl status
查看KUFL列表
kufl list
贰、目标端KES V8R6
一、安装前置配置
1、创建安装用户
groupadd flysync
useradd flysync -g flysync -G mysql
passwd flysync
2、上传安装文件包和license文件到服务器/home/flysync目录下,并解压
tar -xzvf KingbaseFlySync-V001R005C002B20210524-replicator.tar.gz
3、配置将hosts文件,将源端和目标端服务器都加上去
vi /etc/hosts
192.168.100.111 oracle
192.168.100.124 kes8-2
4、配置/etc/security/limits.conf文件【可选】
vi /etc/security/limits.conf
flysync - nofile 65535
flysync - nproc 8096
mssql - nofile 65535
mssql - nproc 8096
5、开启时间同步服务【可选】
yum install ntp
systemctl start ntpd
systemctl enable ntpd
6、在/etc/sysctl.conf配置swappiness参数【可选】
vi /etc/sysctl.conf
vm.swappiness = 10
sysctl -p
7、检查依赖软件jdk和ruby【必须】
--jdk
java -version
版本小于1.8的,可以使用yum安装1.8版本
yum install java-1.8.0-openjdk.x86_64
也可以下载oracle的1.8版本的JDK包手动上传安装
--ruby
可以使用yum方式安装
yum install ruby
也可以使用KFS控制台服务器里自带的ruby包进行替换,位置在:/opt/KFS/console/media/rbenv,
将压缩包解压到/usr/local,然后配置/etc/profile文件里$PATH环境变量,将ruby的bin目录添加进去
vi /etc/profile
export PATH=$PATH:/usr/local/ruby/bin
配置完成后,使用source命令应用
source /etc/profile
二、安装
1、数据库配置
创建连接数据库账号并授权:
ksql>CREATE USER FLYSYNC SUPERUSER PASSWORD 'password';
2、flysync.ini配置
[defaults]
install-directory=/home/flysync/kesrep
profile-script=~/.bash_profile
rmi-port=11000
[kingbase8]
role=slave
master=oracle
master-kufl-port=3112
members=kes8
kufl-port=3112
replication-host=192.168.100.114
replication-port=54321
replication-user=flysync
replication-password=123456
datasource-type=kingbase
datasource-version=8
kingbase-dbname=TEST
svc-parallelization-type=none
svc-remote-filters=casetransform,rename
property=replicator.filter.casetransform.to_upper_case=false
property=replicator.applier.dbms.optimizeRowEvents=true
property=replicator.applier.dbms.maxRowBatchSize=5000
3、从KFS安装包目录下的extensions/jdbc拷贝jdbc包
V8R3(不含)之上的版本,使用kingbase8-8.6.0.jar
V8R3(含)以下版本,使用kingbase8-8.2.0.jar
cd /home/flysync/KingbaseFlySync-V001R005C002B20210524-replicator/extensions/jdbc
cp kingbase8-8.6.0.jar /home/flysync/KingbaseFlySync-V001R005C002B20210524-replicator/flysync-replicator/lib
4、安装
cd /home/flysync/KingbaseFlySync-V001R005C002B20210524-replicator/tools
./fspm install
5、复到license文件到安装目录
cp license.dat /home/flysync/kesrep/license.dat
6、修改rename文件
vi /home/flysync/kesrep/filters-config/rename.csv
FLYSYNC,trep_commit_seqno,*,flysync_kingbase8,-,-
FLYSYNC,consistency,*,flysync_kingbase8,-,-
FLYSYNC,heartbeat,*,flysync_kingbase8,-,-
FLYSYNC,trep_shard,*,flysync_kingbase8,-,-
FLYSYNC,trep_shard_channel,*,flysync_kingbase8,-,-
test,*,*,public,-,-
——备注:如果rename里模式映射是映射到public模式的话,flysync.ini里的大小写转换参数必须为小写,即property=replicator.filter.casetransform.to_upper_case的值必须为false
7、启动并初始化
/home/flysync/kesrep/flysync/cluster-home/bin/startall
source ~/.bash_profile
查看KFS状态
replicator status
查看服务状态
fsrepctl status
查看KUFL列表
kufl list
8、搬迁
--结构搬迁(极速模式)
ddlscan -target.service kingbase8 -source.user FLYSYNC -source.pass 123456 -source.db TEST -source.dbtype oracle -source.host 192.168.100.111 -source.port 1521 -source.schema TEST -target.db test -mgType 0
--数据搬迁
loader -source.user FLYSYNC -source.pass 123456 -source.db TEST -source.dbtype oracle -source.host 192.168.100.111 -source.port 1521 -source.schema test -target.service kingbase8 -mgType 0 -clean