十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

2.1.1-3、SHELL版使用说明

2.1.1-3、SHELL版使用说明 一、配置1、源库类型​ 数据迁移支持多种源数据库为了防止相互之间的干扰按不同的源数据库类型生成了独立的配置文件所以我们需要知道当前激活的配置。#利用find命令查找application.yml文件将active的值设置当前激活的源数据库类型sping-profiles-active[rootnode1 ~]# find /KingbaseES/V9/ -nameapplication.yml/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/application.ymlactive: oracle# 准备迁移的数据库如 dm达梦、gbase、kingbase、mysql、oracle 等具体的配置在 kdts-数据库名.yml文件中2、运行模式​ 迁移工具除了进行数据迁移还可以进行源库和目标库的数据对比可根据需要切换运行模式。打开/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/application.yml文件去runningmode前的#号后设置要运行的模式#默认开启的。看自己的实际情况。runningMode: DataMigration3、源数据库3.1 源库连接设置[kingbasenode1 conf]$catdatasource-oracle.yml########################源数据库连接信息########################sources:#源数据库类型- dbType: Oracle#源数据库版本(9i,10g,11g,12c,19c)dbVersion: 11g#连接字符串格式为jdbc:oracle:thin://host:port/SERVICE_NAME#url: jdbc:oracle:thin:(DESCRIPTION(ADDRESS(PROTOCOLTCPS)(HOST1.2.3.4)(PORT2484))(CONNECT_DATA (SERVER DEDICATED)(SERVICE_NAMEorcl))) #SSL使用url: jdbc:oracle:thin://1.2.3.4:1521/ORCL#驱动类名driverClassName: oracle.jdbc.OracleDriver#用户名大写username: USERNAME1#用户名是否使用密文使用bin/cryptotool.sh或cryptotool.bat生成ciphertextUsername:false#密码password:123456#密码是否使用密文使用bin/cryptotool.sh或cryptotool.bat生成ciphertextPassword:false#数据库连接验证SQLconnectionTestSql:select1from dualMariadb与MySQL相同配置“连接字符串”时需要考虑数据库的初始化字符集等因素例如当 MySQL 数据库的字符集是 GBK 或 GB2312 时应在 url 中添加“useUnicodetruecharacterEncodingutf-8”。3.2 包含或排查的模式#要迁移的模式大写多个模式用英文逗号隔开如A,B,C不要回车换行也可填入*需要双引号将迁移源库中此用户所能访问的所有模式#schemas: SCHEMA1,SCHEMA2,SCHEMA3#schemas: *schemas: SCHEMA1#不迁移的模式多个模式用英文逗号隔开如A,B,C不要回车换行schemaExcludes: SYS,SYSTEM,MGMT_VIEW,DBSNMP,SYSMAN,OUTLN,FLOWS_FILES,MDSYS,ORDSYS,EXFSYS,WMSYS,APPQOSSYS,APEX_030200,OWBSYS_AUDIT,ORDDATA,CTXSYS,ANONYMOUS,XDB,ORDPLUGINS,OWBSYS,SI_INFORMTN_SCHEMA,OLAPSYS,SCOTT,ORACLE_OCM,XS$NULL,BI,PM,MDDATA,IX,SH,DIP,OE,APEX_PUBLIC_USER,HR,SPATIAL_CSW_ADMIN_USR,SPATIAL_WFS_ADMIN_USR3.3 大表拆分设置#游标提取记录数每次和服务器交互提取的数据行数加大该值可提升读取效率但会增加内存开销一次将指定数量的数据取回放在缓存中fetchSize:1000#含大对象数据表的游标提取记录数同上只是此参数针对有大对象字段的表tableWithLargeObjectFetchSize:100#含大大对象数据表的游标提取记录数同上只是此参数针对大对象字段长度超过1G的表tableWithBigLargeObjectFetchSize:5#大表拆分阈值行数当表的行数超过此值时将对表进行拆分每块的记录数为此值和表总记录数除以“拆分最大块数”中的最大值largeTableSplitThresholdRows:5000000#大表拆分阈值大小单位为M当表的数据大小普通字段大对象字段超过此值时将对表进行拆分largeTableSplitThresholdSize:5000#大表拆分阈值块数当表的块数超过此值时将对表进行拆分分块数为表总块数除以此值和拆分最大块数取小largeTableSplitThresholdBlocks:0#大表拆分最大块数每张表的最大拆分块数应不超过总的读线程数largeTableSplitMaxChunkNum:24#大表拆分条件定义文件优先于按行数和大小拆分largeTableSplitConditionFile: large-table-split-condition.json3.4 表过滤设置#表数据过滤条件定义文件tableDataFilterConditionFile: table-data-filter-condition.json3.5 包含或排查的对象#注意在下面使用英文逗号隔开的配置项中如果对象名称中包含!#$%^*(_}{]|\\g;:?/,等特殊字符时可使用双引号但双引号需加斜杠转义如\Schema1\.\Table!#$%^*(_}{]|\\,ABC\#只迁移的表多个表用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/table-includes.txt文件后在文件中配置文件优先tableIncludes:#不迁移的表多个表用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/table-excludes.txt文件后在文件中配置文件优先tableExcludes:#表优先列表tablePriorityList:#只迁移的字段多个字段用英文逗号隔开如A,B,Table1.C,Schema1.Table1.D不要回车换行可指定表名、模式名也可创建conf/column-includes.txt文件后在文件中配置文件优先columnIncludes:#不迁移的字段多个字段用英文逗号隔开如A,B,Table1.C,Schema1.Table1.D不要回车换行可指定表名、模式名也可创建conf/column-excludes.txt文件后在文件中配置文件优先columnExcludes:#只迁移的视图多个视图用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/view-includes.txt文件后在文件中配置文件优先viewIncludes:#不迁移的视图多个视图用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/view-excludes.txt文件后在文件中配置文件优先viewExcludes:#只迁移的函数多个函数用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/function-includes.txt文件后在文件中配置文件优先functionIncludes:#不迁移的函数多个函数用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/function-excludes.txt文件后在文件中配置文件优先functionExcludes:#只迁移的存储过程多个存储过程用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/procedure-includes.txt文件后在文件中配置文件优先procedureIncludes:#不迁移的存储过程多个存储过程用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/procedure-excludes.txt文件后在文件中配置文件优先procedureExcludes:#只迁移的包多个包用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/package-includes.txt文件后在文件中配置文件优先packageIncludes:#不迁移的包多个包用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/package-excludes.txt文件后在文件中配置文件优先packageExcludes:#只迁移的序列多个序列用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/sequence-includes.txt文件后在文件中配置文件优先sequenceIncludes:#不迁移的序列多个序列用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/sequence-excludes.txt文件后在文件中配置文件优先sequenceExcludes:#只迁移的同义词多个同义词用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/synonym-includes.txt文件后在文件中配置文件优先synonymIncludes:#不迁移的同义词多个同义词用英文逗号隔开如A,B,Schema1.C,D不要回车换行可指定模式名也可创建conf/synonym-excludes.txt文件后在文件中配置文件优先synonymExcludes:3.6 要迁移的对象类别#是否迁移序列migrateSequence:true#序列是否使用CurrVal做当前值调用CurrVal前需要调用NextVal会耗费一个序列值sequenceUseCurrentValue:true#序列仅更新值不创建sequenceOnlyUpdatingValue:false#是否迁移用户自定义类型migrateUserDefinedType:true#是否迁移用户自定义类型migrateUserDefinedTypeBody:true#是否迁移表结构migrateTableStructure:true#是否迁移数据migrateTableData:true#是否迁移主键migrateTablePrimaryKey:true#是否迁移索引migrateTableIndex:true#是否迁移唯一性约束migrateTableUnique:true#是否迁移外键migrateTableForeignKey:true#是否迁移检查约束migrateTableCheck:true#是否迁移视图migrateView:false#是否迁移函数migrateFunction:false#是否迁移存储过程migrateProcedure:false#是否迁移包migratePackage:false#是否迁移包体migratePackageBody:false#是否迁移同义词migrateSynonym:false#是否包含公共同义词includePublicSynonym:false#是否迁移触发器migrateTrigger:false#是否迁移注释migrateComment:true#是否排除无效对象excludeInvalidObject:false#是否使用数据库系统统计信息如表的记录数、大小等useDbmsStats:false#是否使用手工脚本useManualScript:false3.7 kdms转换设置#是否使用kdms做转换视图、函数、存储过程、包、触发器useDms:false#kdms访问地址dmsUrl: http://1.2.3.4:12580/kdms/#kdms源数据库类型dmsSourceDbType: Oracle#kdms目标数据库类型dmsTargetDbType: Kingbase_ES_V8_R63.8 其他设置项#网络读取超时时长秒0表示永不超时若出现类似“Socket read timed out”异常时可增大此值netReadTimeout:0#读数据超时时长单位毫秒0表示永不超时readDataTimeout:0#最大重试次数maxRetries:1#重试间隔毫秒retryInterval:500#读数据中断后能否恢复readDataCanResume:false#字符CHAR、VARCHAR、CLOB是否需要解码Oracle字符集为US7ASCII、WE8ISO8859P1等时若迁移后字符里的中文乱码设为true后重迁characterNeedDecoding:false#国家字符NCHAR、NVARCHAR、NCLOB是否需要解码Oracle字符集为US7ASCII、WE8ISO8859P1等时若迁移后国家字符里的中文乱码设为true后重迁nationalCharacterNeedDecoding:false#编码字符集Oracle字符集为US7ASCII、WE8ISO8859P1等时若迁移后字符里的中文乱码设为ISO-8859-1后重迁encodingCharset:#解码字符集Oracle字符集为US7ASCII、WE8ISO8859P1等时若迁移后字符里的中文乱码设为GB18030后重迁decodingCharset:#是否解码字节Oracle字符集为US7ASCII时若迁移后字符里的中文乱码设为true后重迁decodingBytes:false#保持数据有序keepSequentialData:false3.9 数据对比设置仅“数据对比”运行模式时有效#源端数据对比缓冲区大小行数dataCompareBufferSize:1000000#数据对比摘要算法dataCompareAlgorithm: MD5#CRC32、MD5、SHA1、SHA256、SHA384、SHA512#系统改变号SCN参考select TO_CHAR(CURRENT_SCN) from V$DATABASEsystemChangeNumber:#统计分区表记录数时是否不使用系统改变号(System Change Number, SCN)countingPartitionTableNotUsingScn:false#是否开启并行HINTenableParallelHint:true#是否允许并行拆分和读取表parallelSplitAndReadTable:true#数据盲迁dataBlindMigrating:false#数据分块逆序reverseDataChunkOrder:false#最后数据分区优先lastDataPartitionFirst:false#是否强制创建视图解决视图依赖问题forcibleView:false3.10 源数据库最大连接数#源数据库最大连接数maxPoolSize:1004、目标数据库4.1 目标库连接设置#目标数据库类型(Kingbase, Kingbase_ADB)dbType: Kingbase#目标数据库版本(Kingbase: V7,V8R3,V8R6,V8R6C7,V9;Kingbase_ADB: 3)dbVersion: V8R6#目标端数据库兼容模式(Oracle,PG,MySQL,SQLServer)compatibleDbType: Oracle#连接字符串格式为jdbc:kingbase8://{host}:{port}/{database}url: jdbc:kingbase8://1.2.3.4:54321/database1?ApplicationNamekingbase_transfer#Kingbase V8R6,V8R6C7,V9使用#url: jdbc:kingbase83://1.2.3.4:54321/database1 #Kingbase V8R3使用#url: jdbc:kingbase://1.2.3.4:54321/DATABASE1 #Kingbase V7使用#url: jdbc:postgresql://1.2.3.4:54322/database1 #Kingbase_ADB使用格式为jdbc:postgresql://{host}:{port}/{database}#连接字符串(Unix Domain Sockets)#url: jdbc:kingbase8:///db?socketFactoryorg.newsclub.net.unix.AFUNIXSocketFactory$FactoryArgsocketFactoryArg/tmp/.s.KINGBASE.54321sslModedisable#驱动类名driverClassName: com.kingbase8.Driver#KingbaseV8R6,V8R6C7,V9使用#driverClassName: com.kingbase83.Driver #Kingbase V8R3使用#driverClassName: com.kingbase.Driver #Kingbase V7使用#driverClassName: org.postgresql.Driver #Kingbase_ADB使用#用户名username: kingbase#用户名是否使用密文使用bin/cryptotool.sh或cryptotool.bat生成ciphertextUsername:false#密码password:123456#密码是否使用密文使用bin/cryptotool.sh或cryptotool.bat生成ciphertextPassword:false#目标模式多个模式用英文逗号隔开如A,B,C不要回车换行也可填入*需要双引号则目标模式与源模式同名#schemas: SCHEMA1,SCHEMA2,SCHEMA3#schemas: SCHEMA1schemas:*#目标模式统一前缀指定后所有的目标模式名前都会添加此前缀schemaPrefix:#目标模式统一后缀指定后所有的目标模式后都会添加此后缀schemaSuffix:#目标模式属主多个属主用英文逗号隔开如A,B,C不要回车换行也可填入*需要双引号则目标属主与目标模式同名schemaOwners:#目标模式表空间多个表空间用英文逗号隔开如A,B,C不要回车换行也可填入*需要双引号则目标表空间与目标模式同名schemaTablespaces:#数据库连接验证SQLconnectionTestSql:select1温馨提示如果迁移程序和目标数据库KingbaseES在同一台计算机上并且操作系统是 Linux可以使用 Unix Domain 进行连接可提高数据传输效率。4.2 其他设置项#批量提交记录数行数writeBatchSize:1000#批量提交记录数行数--大大对象数据writeBatchSizeBigLob:10#批量提交数据大小单位为MwriteBatchByteSize:128#大对象数据读入内存阈值单位兆默认128MlobInMemoryThresholdSize:128#删除目标库中已存在的对象如表、视图等dropExistingObject:true#是否截断表清空表数据truncateTable:false#目标数据库对象重命名-除表名、列名外的其他对象: pk、fk、constraint、unique constraint、index 等renameObject:true#检查约束不验证已存在数据checkConstraintNotValidated:true#是否记录成功脚本logSuccessScript:true#是否创建目标模式createTargetSchema:true#迁移结果保留时长单位为天resultRetentionDays:7#是否删除空字符解决 无效的 UTF8 编码字节顺序(invalid byte sequence for encoding UTF8: 0x00)removeNullCharacter:false#是否删除首尾空白字符removeWhiteSpaceCharacter:false#是否将分区表当作普通表迁移partitionTableAsNormal:false#是否创建默认分区表createDefaultPartitionTable:true#是否将全局临时表当作普通表迁移目标库未V8R3时设为trueglobalTemporaryTableAsNormal:false#写数据超时时长单位毫秒0表示永不超时writeDataTimeout:0#写数据任务超时后重置是否删除数据deleteWriteJobData:false#临时排除保留字excludeReservedWords:true#最大重试次数maxRetries:2#重试间隔毫秒retryInterval:500温馨提示如果只迁移表数据应将“drop-existing-object”设置为 false避免删除目标库中表。如果将大表拆分为多次迁移应将“truncate-table”设置为 false。4.3 数据对比设置仅“数据对比”运行模式时有效#目标端数据对比缓冲区大小行数dataCompareBufferSize:1000000#数据对比顺序比对并行度dataCompareSequentialParallelism:5#是否按照unlogged表迁移unloggedTable:false#是否将unlogged表重置为普通表,当unloggedTable: true时可以配置reloggedTable:true,两个参数配合使用reloggedTable:false#是否执行检查点以无日志表迁移时设为trueissueCheckpoint:false#是否使用 insert 的方式迁移数据默认为 Copy 方式当 ora_input_emptystr_isnullon 时Copy 方式迁移的数据无法查询到时设置为trueuseInsert:false#是否使用遗留二进制拷贝签名useLegacyBinaryCopySignature:true#是否转义对象标识符例如tableName、 tableName、[tableName]quotedIdentifier:true#对象识符大小写DefaultCase、UpperCase、LowerCase、NoneidentifierCase: DefaultCase#是否重试执行失败的迁移任务解决因依赖问题导致的迁移失败4.4 目标数据库最大连接数retryFailedJob:false#目标数据库最大连接数5、线程池线程数​ 数据迁移属于 IO 密集型操作涉及网络络 IO 和磁盘 IO 的交互一旦发生 IO线程就会处于等待状态当 IO结束数据准备好后线程才会继续执行。​对于 IO 密集型线程数的设置公式为线程数 CPU 核心数/(1-阻塞系数)其中阻塞系数一般为0.8~0.9 之间取 0.9 则#例如下面两个计算线程数的案例双核 CPU2/(1-0.9)2064核2路 CPU64*2/(1-0.9)1280配置文件kb-thread-config.xml6、其他配置/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/manual_script --手工脚本用于迁移编辑后的迁移失败的对象 /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/mapping_rule/column --自定义表字段映射规则 /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/mapping_rule/data_type --自定义数据类型映射规则 /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/mapping_rule/default_value --自定义字段缺省值映射规则 /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-CLI/conf/mapping_rule/table_datatable_data --自定义数据映射规则#每个目录下都有对应的使用说明文档 readme.md 和示例文件 example.json请参考对应文档使用。二、运行日志​ 迁移程序会在 kdts-xxx/logs 目录下按迁移日期和时间创建日志目录该目录下会有 3 个日志文件以及不同模式名的子目录每个子目录下存放该模式相关的日志error.log、info.log、warn.log请注意查看 error.log 中的内容。温馨提示Linux 平台下在 logs 根目录下会有一个名为“kdts-xxx-日期 时间.log”的日志里面会包含全部的日志内容Windows 平台受限于操作系统无此日志。“数据对比”的日志目录名有“DataCompare-”前缀。三、迁移报告​ 迁移程序会在 kdts-xxx/result 目录下按迁移日期和时间创建报告目录该目录下会有 index.html 以及不同模式名的子目录每个子目录下存放该模式的详细报告可打开 index.html 进行查看。模式信息首页index.htmlXXX 详细信息如表结构、表数据、表主键等, detail_XXX.html失败脚本目录 (FailedScript)成功脚本目录 (SuccessScript)在 FailedScript、IgnoredScript 和 SuccessScript 目录下会生成与之对应失败、略过、成功的脚本迁移成功表结构 SQL 脚本迁移失败表结构 SQL 脚本四、KingbaseES优化配置参数max_connections2000shared_buffersRAM*0.4GB#RAM 指内存最大设置为 64GBwork_mem10MBmaintenance_work_mem6GBeffective_cache_sizeRAM*0.5GB#RAM 指内存free -gRAM*0.5GBmax_locks_per_transaction1024#wal_level minimalmax_wal_size100GBcheckpoint_timeout5mincheckpoint_completion_target0.9max_parallel_workers_per_gather0logging_collectoronlog_destinationstderrlog_directorysys_loglog_filenamekingbase-%d.loglog_truncate_on_rotationonlog_rotation_age1440log_connectionsonlog_disconnectionsonlog_statementddllog_checkpointsonlog_lock_waitsonlog_autovacuum_min_duration0log_temp_files0lc_messagesClog_min_duration_statement1000log_line_prefix%t [%p]: [%l-1] user%u,db%d,app%a,client%hignore_char_null_checktruemax_worker_processes100max_parallel_workers80#max_parallel_workers_per_gather64max_parallel_maintenance_workers64#maintenance_work_mem16GB
返回列表