• [生态工具] datax同步问题
    通过DataX实现Oracle到dws的数据互相迁移1. 抽取从oracle读数据写进dws.Json文件配置读使用oraclereader,写入使用postgresqlwriter从dws读数据写进oracleJson文件配置读使用postgresqlreader,写入使用oraclewriterDatax任务脚本参数并发数32:2. 迁移速率:迁移过程中datax Speed速率每秒40k~60k,速率太低。客户期望至少每秒2万行,4MB的速率源端 oralce并没有呈现出io,cpu,内存压力。优化:按照常规的datax优化参数方法,进行channel,record,byte参数不同数值设置,进行测试速率,速率没得到提升。问题如何datax的同步速率提升上去?把官方是否提供专门的dws读写插件?
  • [问题求助] 导出项目或环境依赖的数据
    导出项目或环境依赖的数据,报错问题,提示:无效的对象权限,对象:dhccyq_cameraHis__CST,权限:!AllowBulkAPIAccess,权限值:false
  • [问题求助] 迁移目前遇到两个问题
    1.将源码包通过软件包安装新建,dhccyq__TZ-0.51.8.zip导入报错了,查看附件2.编译已上传的mySystem项目,编译报错了,查看附件
  • [问题求助] 使用平台的数据导出能力,导出项目或环境依赖的数据
    某个项目里面的数据导出,能批量导出吗,我看文档上面只有这一个一个导出的办法,如图↓
  • [问题求助] 迁移appcube,使用InitializationDataTool工具导出迁移项目所依赖的
    数据迁移,在库中搜索InitializationDataTool,没有搜索对应模块,不知道啥情况,求指点,谢谢大佬们
  • [伙伴总结分享] 【中软CTSP项目分享】河北xxx上云迁移项目案例分享
    【项目名称】:河北xxx公司上云迁移项目【交付地点】:北京【客户需求】:通过华为云或第三方工具,将咱家健康业务系统从腾讯云迁移到华为云上【迁移要求】:选择在线迁移方式,在迁移过程中不影响原服务对外提供服务,在线业务割接时要求业务不中断【实施难度】:1、需要将客户在腾讯云上面的云服务、云资源和数据全量迁移到华为云;2、在线迁移方式在迁移过程中不影响原服务对外提供服务,业务不中断;3、需要支撑客户进行端到端的业务模拟环境的功能和性能测试,提供技术支持。
  • [迁移系列] 【Oracle迁移】数据一致性xor_md5函数
    同GaussDB(DWS)、Teradata、Oracle保持一致的xor_md5函数,用于验证跨平台间checksum值相同。CREATE OR REPLACE FUNCTION xor_md5(inputString VARCHAR2) RETURN NUMBER IS result NUMBER(38); md5 NUMBER; BEGIN select m1+m2-BITAND(m1, m2) * 2 into md5 from ( select n1+n2-BITAND(n1, n2) * 2 as m1, n3+n4-BITAND(n3, n4) * 2 as m2 from ( select to_number(substr(md5,1,8),'xxxxxxxx') n1, to_number(substr(md5,9,8),'xxxxxxxx') n2, to_number(substr(md5,17,8),'xxxxxxxx') n3, to_number(substr(md5,25,8),'xxxxxxxx') n4 from ( select standard_hash(inputString, 'MD5') as md5 from dual )a ) b) c; RETURN md5; END xor_md5;/用法:select sum(xor_md5(校验字段)) from 业务表;
  • [迁移系列] 【DB2迁移】数据一致性xor_md5函数
    同GaussDB(DWS)、Teradata、Oracle保持一致的xor_md5函数,用于验证跨平台间checksum值相同。CREATE FUNCTION hex_to_dec(param1 char(8))returns bigintlanguage sqlbegin atomic declare num bigint; declare i int; declare s varchar(1); set num = 0; set i = 1; while i <= 8 do set s = substr(param1,i,1); set num = num + power(16,8-i) * (case s when 'A' then 10 when 'B' then 11 when 'C' then 12 when 'D' then 13 when 'E' then 14 when 'F' then 15 else to_number(s) end); set i = i + 1; end while; return num;end@CREATE FUNCTION xor_md5(param1 varchar(32000))returns bigintlanguage sqlbegin atomic declare hash_value varchar(32); declare num bigint; set hash_value = hex(sysibm.hash(param1,0)); set num = hex_to_dec(substr(hash_value,1,8)) ^ hex_to_dec(substr(hash_value,9,8)) ^ hex_to_dec(substr(hash_value,17,8)) ^ hex_to_dec(substr(hash_value,25,8)); return num;end@注意,创建函数方式:db2 -td@ "创建函数SQL"
  • [技术干货] 【第五届openGauss技术文章征集】MySQL到OpenGauss的数据迁移测试
    前言       本文将测试利用chameleon工具从MySQL迁移数据到OpenGauss3.1.0。环境环境信息MYSQLOpenGauss版本5.7.363.1.0系统版本docker 19.03.15CentOS Linux release 7.9.2009 (Core)IP192.168.10.5192.168.10.3工具安装1、下载chameleon工具======》我只找到了源码安装包,没找到wheel的版本2、解压/安装依赖包解压:[root@opengauss01 /]# unzip openGauss-tools-chameleon-master.zip 创建python虚拟环境并激活 安装 (venv) [root@opengauss01 openGauss-tools-chameleon-master]# python3 setup.py install 如果缺包就挨个安装下: (venv) [root@opengauss01 openGauss-tools-chameleon-master]# pip3 install geomet argparse daemonize mysql-replication py-opengauss PyYAML rollbar tabulate 注意需要安装: (venv) [root@opengauss01 openGauss-tools-chameleon-master]# pip3 install PyMySQL==0.10.03、创建迁移配置文件(venv) [root@opengauss01 openGauss-tools-chameleon-master]# su - omm 上一次登录:二 11月 8 22:39:38 CST 2022pts/0 上 [omm@opengauss01 ~]$ cd /openGauss-tools-chameleon-master/ [omm@opengauss01 openGauss-tools-chameleon-master]$ source venv/bin/activate (venv) [omm@opengauss01 openGauss-tools-chameleon-master]$ (venv) [omm@opengauss01 openGauss-tools-chameleon-master]$ (venv) [omm@opengauss01 openGauss-tools-chameleon-master]$ (venv) [omm@opengauss01 openGauss-tools-chameleon-master]$ (venv) [omm@opengauss01 openGauss-tools-chameleon-master]$ chameleon set_configuration_files creating directory /home/omm/.pg_chameleon creating directory /home/omm/.pg_chameleon/configuration/ creating directory /home/omm/.pg_chameleon/logs/ creating directory /home/omm/.pg_chameleon/pid/ copying configuration example in /home/omm/.pg_chameleon/configuration//config-example.yml3、修改配置文件(venv) [omm@opengauss01 configuration]$ cp config-example.yml default.yml vim default.ymlpg_conn: host: "localhost" ===========》opengauss的ip port: "15400" ===========》opengauss的端口 user: "opengauss" ========== 》open gauss的用户 password: "openGauss01" ===========》opengauss的密码 database: "mysql_test" ===========》opengauss的目标数据库 charset: "utf8" sources: mysql: readers: 4 writers: 4 db_conn: host: "192.168.10.5" ============》mysql的ip port: "33650" ===========》mysql的端口 user: "root" ============》mysql的用户 password: "root" ============》mysql的密码 charset: 'utf8' connect_timeout: 10 schema_mappings: test: sch_mysql_database ================》test是mysql中的库,sch_mysql_database====》是opengauss中的库4、初始化迁移(venv) [omm@opengauss01 configuration]$ chameleon create_replica_schema --config default (venv) [omm@opengauss01 configuration]$ chameleon add_source --config default --source mysql 5、复制存量数据(venv) [omm@opengauss01 configuration]$ chameleon init_replica --config default --source mysql Init replica process for source mysql started.=======》MySQL数据库test中的表:mysql> use test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | big_table | | checksums | | hahaha | | test | | test1 | | test2 | +----------------+ 6 rows in set (0.00 sec)======》复制启动后,test库中的表都复制到sch_mysql_database下了。 Name | Owner --------------------+----------- blockchain | omm cstore | omm db4ai | omm dbe_perf | omm dbe_pldebugger | omm dbe_pldeveloper | omm dbe_sql_util | omm loxodonta_africana | opengauss pkg_service | omm public | omm sch_chameleon | opengauss sch_mysql_database | opengauss snapshot | omm sqladvisor | omm (14 rows) mysql_test=# set current_schema to sch_mysql_database mysql_test-# ; SET mysql_test=# \d List of relations Schema | Name | Type | Owner | Storage --------------------+------------------+----------+-----------+---------------------------------- sch_mysql_database | big_table | table | opengauss | {orientation=row,compression=no} sch_mysql_database | big_table_id_seq | sequence | opengauss | sch_mysql_database | checksums | table | opengauss | {orientation=row,compression=no} sch_mysql_database | test | table | opengauss | {orientation=row,compression=no} sch_mysql_database | test1 | table | opengauss | {orientation=row,compression=no} sch_mysql_database | test1_id_seq | sequence | opengauss | sch_mysql_database | test2 | table | opengauss | {orientation=row,compression=no} sch_mysql_database | test2_id_seq | sequence | opengauss |6、开启实时复制(venv) [omm@opengauss01 configuration]$ chameleon start_replica --config default --source mysql Starting the replica process for source mysql7、在mysql中插入数据Mysql中的数据 mysql> select * from test; +----+--------+ | id | name | +----+--------+ | 2 | bbbb | | 5 | cccc | | 4 | dddd | | 3 | eeee | | 1 | hehehe | +----+--------+ 5 rows in set (0.00 sec) Opengauss中的数据 mysql_test=# select * from test; id | name ----+-------- 2 | bbbb 5 | cccc 4 | dddd 3 | eeee 1 | hehehe (5 rows)Mysql中插入一条数据: mysql> insert into test values(6,'fffff'); Query OK, 1 row affected (0.01 sec) mysql> select * from test; +----+--------+ | id | name | +----+--------+ | 2 | bbbb | | 5 | cccc | | 4 | dddd | | 3 | eeee | | 6 | fffff | | 1 | hehehe | +----+--------+ 6 rows in set (0.00 sec) Opengauss中查看数据,可以看到新插入的(6,'fffff')已经同步到了openGauss中。 mysql_test=# select * from test; id | name ----+-------- 2 | bbbb 5 | cccc 4 | dddd 3 | eeee 1 | hehehe 6 | fffff (6 rows)
  • [生态空间] dws数据通过foreign table写入hdfs有问题
    如图,decimal类型的数据写入hdfs后,通过hive external表读取,两边类型一致(均为decimal)时,hive读取的值为NULL,当修改hive external数据类型为String时,读取到的值为7014XXXX,烦请专家予以解答。
  • [综合] 如何使用数据迁移工具,通过存储方式迁移上云
    1、对于EVS存储:一、迁移工具1.SMS整机迁移2.通过数据盘创建数据盘镜像:将A区域的数据盘制作成数据盘镜像,跨区域复制到B区域,然后在B区域使用数据盘镜像创建新的数据盘。二、步骤:(以SMS为例)2、针对SFS存储一、迁移工具1.(1)通过mount方式挂载访问SFS Turbo,将本地NAS存储中的数据迁移至SFS Turbo。通过云专线迁移(rclone工具)、通过云专线迁移(rsync工具)(2)无法打通网络直接挂载,可以通过公网访问华为云ECS绑定的EIP,也可进行传输迁移。使用公网迁移(rclone工具)2.英方工具I2NAS二、步骤:(以云专线迁移rclone工具为例)1.登录弹性云服务器管理控制台。2.登录已创建好的Linux系统云服务器,用于同时访问本地NAS存储和云上SFS Turbo文件系统。3.输入挂载命令,用于访问本地NAS存储。4.在Linux云服务器中执行以下命令安装rclone工具。5.进行数据同步(以云专线迁移rsync工具为例)1.登录已创建好的Linux系统云服务器,用于同时访问本地NAS存储和SFS Turbo文件系统。2.输入挂载命令,用于访问本地NAS存储。3.输入挂载命令,用于访问SFS Turbo文件系统。4.在Linux云服务器中执行以下命令安装rsync工具。5.安装完成后,可以输入以下命令查询rsync工具的安装和版本情况。6.执行命令,将源端服务器/mnt/src目录中的数据全量同步迁移至目的端服务器/mnt/dst目录(文件系统)中。3、针对OBS存储一、迁移工具搬迁本地数据至OBS:OBS工具、CDM、DES、DES Teleport、云专线迁移第三方云厂商数据至OBS:OMS、CDM、镜像回源OBS之间数据迁移(跨帐号、跨区域以及同区域内数据迁移):OMS还可以使用工具流:swift、英方I2DTO二、步骤:(以对象存储迁移服务OMS为例)1.创建源端和目的端的访问密钥(AK/SK)。源端:参见源端云服务提供商的相关资料。目的端:参见创建访问密钥(AK/SK)。2.在对象存储服务中创建用于存放迁移数据的桶。3.在对象存储迁移服务中创建迁移任务,开始迁移。4.在对象存储迁移服务中检查迁移任务的结果。
  • [综合] 在线迁移和离线迁移的对比
    在线迁移:是指在系统不停机的情况下,将服务器或虚拟机上的系统、服务程序等从自建机房(IDC)或云平台等源环境迁移同步至云上,方便实现企业上云、跨云平台迁移、跨账号/区域迁移或部署混合云等业务需求。@离线迁移:(1)离线实例迁移:将系统盘镜像(若需同时迁移实例已挂载的数据盘,则可将系统盘镜像和数据盘镜像)迁入至指定的云服务器。(离线数据迁移)将数据盘镜像迁入至指定的云硬盘。区别:离线迁移需要先将源端服务器的系统盘或数据盘制作成镜像,再将镜像迁移至您指定的云服务器或云硬盘。在线迁移无需制作镜像,直接在源端服务器运行迁移工具,即可将源端服务器迁移至指定的云服务器。在线迁移、离线迁移对比三方面:成本、效率、安全性。成本:大规模数据的迁移需要耗费大量传输资源,就是网络,成本较高,因此数据量太大有时不适合在线传输。效率:效率受网速限制,如通过网络转移1EB的数据大约需要26 年,而用十辆卡车可以将传输时间降至6个月内安全:利用云计算的黑客攻击愈发频繁,尤其像金融等传统客户是不放心数据在线迁移的。在线迁移工具:技术流:Oracle系统迁移(自带)Oracle Golden Gate/ Data Guard(DG),MS Always On……服务流:采用数据复制服务DRS做数据库迁移,此外若客户涉及异构数据库迁移,则也可用数据库应用迁移服务UGO做迁移离线迁移工具:DES数据快递服务、OBS对象存储
  • [交流吐槽] 总结出这套数据库迁移经验,我花了20年……
    作者:白鳝   2022-06-09 10:23:06数据库迁移是DBA经常会面临的工作,这二十多年来,我们也做过很多数据库迁移的工作。早期的时候,作为一个DBA,考虑迁移方案的时候总是从数据库的角度去考虑。随着项目做多了,知识范围不断地扩大,加入了很多系统级的迁移方案,使迁移工作变得更加简单了。迁移工作做多了,也难免会遇到鬼,在这二十多年,上百个迁移项目中,也确实遇到过不少坑,有时候甚至面对命悬一线的绝境。​到了后来,面对迁移方案的选择,如果是十分重要的核心系统,一定要选择最为稳妥的方案,以备不测。昨天微信群里有人在问一个数据库想迁移存储,有没有什么好方案,从我脑子里冒出来的都是系统层面的迁移方案,而群里的DBA朋友往往都说的是数据库层面的迁移技术。实际上没有最好的技术和方案,只有最合适的。具体选择哪种数据库迁移方案,最终还是要看具体的系统环境以及迁移实施队伍的技术能力。一、存储复制存储复制是最近我比较喜欢的一种数据库跨存储迁移的方法,可以用于很多迁移需求。特别是一个环境中存在多种数据库/多个数据库的场景,用存储复制的方式一下子可以搞定所有的数据库,十分便捷。存储复制的主要实施工作都由存储厂商完成,对于DBA来说也是最为轻松的,如果出问题,都不需要DBA去甩锅,肯定是存储厂商的问题。DBA要做的就是打开数据库,用rman validate校验一下数据文件是否存在物理/逻辑坏块就可以了。十年前一个金融客户的核心数据库数据库从9i HA升级为10g RAC,存储从IBM 8000系列迁移到HDS高端存储,采用的就是这个方案。使用HDS自带的异构存储虚拟化能力,首先将数据从IBM 8000系列存储复制到HDS上,最后切换的那一晚上停掉生产数据库,作最后一次增量复制后,用10g RAC的环境挂在新的卷,然后UPGRADE数据库,整个数据库迁移升级工作一个多小时就完成了。很多DBA会把卷复制和存储复制看作一码事,对于DBA来说,存储和卷并无不同,反正看到的是一堆裸设备。实际上二者还是不同的,卷复制采用的是卷管理软件的数据同步功能,比如VERITAS的LVM,卷管理软件天生就是支持异构平台的,因此使用卷复制技术同步数据有更广泛的适用性,而存储复制技术需要存储本身的支持(不过现在大多数高端存储都支持异构存储的存储虚拟化,因此大多数情况下都能支持,如果实在你的环境中的存储不支持异构复制,也可以考虑租借一台支持你所需要复制的存储的虚拟化机头来做实施,费用在几千块钱到几万块钱不等,看你租借的设备和租借的时间)。大概十年前吧,一个运营商从HP小机上迁移一个数据库到IBM小机,存储也从HP存储更换为EMC存储,当时他们原来的系统使用了VCS,因此使用VERITAS的卷复制做的数据迁移。在IBM端CONVERT数据库的时候(因为HP-UX和AIX都是大端的,所以可以做DATABASE CONVERT,而不需要使用XTTS)遇到了ORACLE 10G的一个BUG, UNDO表空间CONVERT失败,数据库无法打开,当时也是惊出一身冷汗,最后通过强制OFFLINE相关UNDO SEGMENT,重新创建UNDO表空间切换等方式解决了这个问题,不过完成迁移的时候已经接近早上8点,超出了申请的停机窗口,差点影响了第二天营业厅开门。所以说,再简单的迁移方案,都不能保证不出意外。二、逻辑复制逻辑复制是一种停机窗口较为紧张时候常用的数据库迁移的方案。两千零几年的时候帮助一个运营商把计费/账务两大核心系统从Oracle 8i迁移到Oracle 10g的时候,为了缩短停机窗口,使用ogg进行逻辑复制。那时候的OGG也是比较垃圾的,功能、性能都存在一定的问题,BUG也比较多。切换当晚发现有几张表总是追不上,最后决定直接通过dblink CTAS重建的方式迁移了。最后还好,在规定的时间窗口内完成了数据库的迁移和数据校验工作。使用OGG做迁移,数据校验的工作量十分大,如果是十分核心的系统,对数据一致性和完整性要求较高,一定要留足时间做数据校验。逻辑导出导入一直是被认为最为安全的迁移方式,不过天底下没有绝对安全的迁移方案。大概6/7年前,一个银行把核心系统从HDS存储迁移到华为18K上的时候,想把数据库也顺便从10g升级到11g,因为核心应用也要做升级,因此申请了36小时的业务停机窗口,其中核心系统完全停止业务18小时,这18小时中,给了数据库迁移8个小时的时间。通过综合考虑,他们决定采用最为稳妥的数据库逻辑导出导入的方式。首先在老存储上导出数据,然后把整个卷挂载到新的服务器上,再做导入。按理说够安全了吧,没想到主机工程师挂载这块盘的时候没注意给挂载成只读的了。DBA也没检查就开始导入了,几个小时后报无法写入磁盘数据,impdp异常退出了。这时候8小时的时间窗口已经使用了5个多小时了,如果重新导入一次,时间上肯定是不够的。当时我正好在现场,通过检查发现是impdp输出日志的时候无法写盘导致了错误,而刚开始的时候写入日志的时候是写在缓冲里并没有刷盘,所以没有报错,等刷盘的时候就报错了。通过校验数据表和索引发现所有的索引都已经完成创建了。因此报错时可能已经完成了主要的数据导入过程。最后经过会商决定暂时不回退整个工作,继续进行后续工作。不过因为这个插曲,原本计划的对所有表和索引做一次重新统计(通过SPA分析后发现11g对统计数据的依赖性更强,因此建议最后做一次表分析)就没有进行了。核心系统启动顺利完成,主要功能测试也顺利完成,大家揪着的心才放了下来。不过前台很快传来更坏的消息,应用开发商在测试性能的时候,认为主要核心交易的延时都慢了几十毫秒,平均核心交易延时从升级前的80毫秒提高到120毫秒以上,因此拒绝新系统上线。大家折腾了这么长时间还要回退,这对IT部门的打击十分严重的。因此CIO希望我们能够尽快找到问题,解决问题。通过分析存储的性能,数据库的总体性能没有发现什么问题。时间已经接近8小时的窗口了,按道理现在必须做回退了。我当时和CIO说,能不能再给我20分钟我再分析一下,如果找不到原因再回退。当时CIO说,我给你40分钟,如果不行只能我去向行长请罪了。最后在差不多半小时后,我终于定位了引起一部分核心交易延时增加的主要原因是几张表的统计数据过旧,更新了统计数据后,核心交易延时恢复到90毫秒左右,低于开发商要求的不高于120毫秒的要求。从这个案例上看,最简单靠谱的迁移方案,也不是万全的。三、ASM磁盘组加盘/删盘ASM磁盘组上加入新存储的磁盘,然后逐步删除老存储的磁盘,利用ASM的REBALANCE功能实现存储迁移也是一种挺不错的方案,只是REBALANCE时间比较长(如果数据量较大,业务负载较大),需要DBA随时关注整个进程,如果系统负载较高,IO吞吐量较大,那么在此期间可能会引起一些IO方面的性能问题。严重时可能导致应用系统总体性能严重下降,而一旦这些问题发生,我们只能暂时降低REBALANCE的优先级,缓解问题,无法彻底解决问题。因此对于特别核心的系统使用这种方式还是要十分注意。我把这个方法教给一家银行后,他们就喜欢上了这种迁移方式,并用这种方式迁移了大量的系统,总体上来说还是比较平稳的。不过在核心交易系统上,他们还是没敢使用。数据库迁移的方法有很多,今天时间的关系我就不一一举例了。不过无论采用何种方式,都需要实施者不要掉以轻心,对每个环节都做最精心的准备。不过有一定可以提醒大家的是,跳出DBA的思维方式,可能会找到更好的方法。​
  • [技术干货] 第二讲:鲲鹏代码迁移工具基础知识读书笔记
    本文课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1533984621405396993 本文主要介绍鲲鹏代码迁移工具的功能与特性。通过本文,你可以了解到: ① 了解什么是代码迁移工具 ② 了解代码迁移工具的功能 ③ 了解到代码迁移工具在实际案例中如何运用 ## 1.代码迁移工具是什么 处理器所支持的指令集不同,意味着开发者可能需要对代码进行跨平台的迁移。通常,代码迁移是件复杂又繁琐的工作,需要花费开发者大量精力对软件包、源代码、依赖库文件进行人工分析、检查和识别,手动修正不同指令集之间的相关差异,这些差异主要涉及语法、指令、函数和库文件支持情况。为了解决用户代码可迁移性人工排查困难、移植经验欠缺、反复依赖编译调错定位等,投入工作量大,整体效率低的问题,我们推出Kunpeng Porting Advisor鲲鹏代码迁移工具。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607437314868946.png) 2.代码迁移工具功能 鲲鹏代码迁移工具是一款可以简化应用迁移到鲲鹏架构服务器过程的工具。主要面向鲲鹏平台的开发者、用户和第三方待迁移软件提供方开发工程师,对海量代码进行快速地自动化扫描和分析,提供专业的迁移指导报告。同时能够自动分析出需修改的代码内容,并指导如何修改,帮助开发者实现高效的代码迁移。同时支持原生开发代码亲和检查等能力。 3.功能特性 代码迁移工具可以作为独立软件提供给鲲鹏生态用户安装使用 支持的功能特性如下∶ 当前工具支持五组功能,支持的功能特性分别如下: 软件迁移评估 检查用户提供的软件安装包,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。·检查用户在x86服务器上已安装的软件,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。 源码迁移 · 检查用户C/C++/汇编/Fortran代码软件构建工程文件, 并指导用户如何迁移该文件。 检查用户C/C++/汇编/Fortran/python/Java/ScalalGo软件构建工程文件使用的链接库,并提供可迁移性信息。 - 检查用户C/C++/汇编/Fortran软件源码,并指导用户如何迁移源文件。 - 软件包重构,分析用户x86软件包构成,重构为适用于鲲鹏平台的软件包。 - 专项软件迁移,基于我们丰富的软件迁移经验,帮助用户快速迁移Web、数据库、大数据、高性能计算四大解决方案类软件。鲲鹏亲和分析,目前含64位运行模式检查、结构体字节对齐检查、缓存行字节对齐检查、内存一致性检查、构建亲和检查。 - 用户通过安全传输协议上传软件源码、软件包、二进制文件等资源到工作空间,也可以从Web页面上直接对工作目录下的文件进行删除清理或 者覆盖重命名。 - 支持命令行方式、Web、IDE插件三种工作模式,后两种方式下支持多用户并发扫描。 > 特别说明:工具不支持迁移windows环境下的软件或者IOSMacOS平台应用至Kunpeng平台Linux环境下。 4.应用场景 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607455837197525.png) 对最常用的x86汇编指令进行识别并转换 - 最常用的100O+条汇编指令自动翻译。 针对受支持的嵌入式汇编指令,提供修改指导;针对完全由受支持的完整汇编指令构成的文件,支持自动转换为结果汇编文件; - 支持对尚无法指导修改和转换的汇编指令的识别、提醒。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607461453552415.png) 鲲鹏迁移亲和检查可以告知用户需要修改的地方,而不需要自己去查找,节约时间,提高开发效率。 5.部署方式 代码迁移工具采用单机部署方式,部署环境要求如下表所示。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607475159948277.png) 6. 如何访问使用 代码迁移工具提供两种用户访问模式,安装时由用户选择,同一套环境只能安装一种: - CLI方式: 通过命令行方式使用代码迁移工具各功能,最终移植分析结果输出到.csv和.json文件,用户可以根据迁移建议进行处理。. - Web/IDE插件方式: 通过浏览器IDE远程使用代码迁移工具各功能,最终迁移分析结果输出到.csv和.html文件(可下载)中,用户可以根据迁移建议进行处理。如果当前用户已经在登录使用,重复登录会挤掉前面的登录。用户的各种分析和迁移任务都在自己的工作空间内完成。访问Web界面时,对本地浏览器的要求如下表所示。 ## 2. 代码迁移工具的功能 ### 2.1 源码迁移 - 识别C/C++/Fortran(汇编源代码,提供修改建议;Make、CMake、Automake编译选项、编译宏的解析及迁移建议 - 支持100%Intrinsic函数转换(6000+个),包括MMX、SSE及AVX Intrinsic等 - 支持Fortran内联函数和语法特性以及编译选项的识别 - 支持Go语言迁移,对go程序使用cgo编译部分中的编译选项、宏定义提供兼容性检查,给出修改建议 - 支持python、Java、Scala语言,对程序中的动态链接库提供兼容性检查,给出修改建议 ### 2.2 源码迁移业务流程 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607492943813936.png) ### 2.3 源码迁移 源码迁移中如果有不同的源码混合编程则需要填写全部源码类型 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607499930494700.png) ### 2.4 迁移报告 ### 2.5 汇编翻译 鲲鹏DevKit支持全汇编翻译和嵌入式汇编翻译 - 支持汇编代码自动识别,一键替换迁移,一分钟完成汇编代码的迁移。 - x86汇编常用指令100%识别,1000+指令自动翻译,覆盖80%的常用应用场景。 ### 2.6 软件迁移评估 - 识别检查x86平台软件安装包或已安装软件中使用的动态链接库、静态链接库和可执行文件,并将检查出的文件与工具内置的依赖文件列表进行比较匹配,从而为用户提供迁移建议 - Jar,war包扫描增强,识别鲲鹏平台已经支持的依赖,提供更精准的依赖兼容替换建议 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607516722194866.png) ### 2.7 软件迁移评估流程 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607521296227908.png) ### 2.8 软件包重构 识别分析用户x86软件包构成,重构适用于鲲鹏平台软件包,并输出重构报告 软件包重构功能主要对包内包含的.so文件,.a文件和.jarl.war文件进行分析,会对其中需要适配鲲鹏平台的依赖文件进行替换,然后执行软件包的重构,最终输出鲲鹏兼容版本的软件安装包。如果包中需要的依赖不确定是否鲲鹏平台兼容,可在鲲鹏平台验证后,手动上传依赖配置文件,进行重构操作。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607526265993772.png) ### 2.9专项软件迁移 - —键下载开源代码,并编译、构建为鲲鹏软件包 - 支持大数据、数据库、Web、高性能计算等场景主流软件的一键编译迁移 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607533215228609.png) ### 2.10 内存一致性 - 静态检查,检查用户软件迁移到鲲鹏平台可能存在的弱内存序问题并修复 - 支持下载静态检查工具产生的BC文件,可根据实际需要进行BC - 自动修复功能,更新用户使用的GCC编译器,在用户软件的编译过程中自动文件扫描分析完成弱内存序问题的修复 - 静态检查工具、编译器自动修复工具组合使用,可一键式修复 - 支持自动生成目标工程的中间文件,不需要用户修改编译脚本 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607570034295090.png) ## 3.案例演示 ### 3.1 源码迁移1 案例下载链接: https://github.com/kunpengcompute/devkitdemo/tree/main/Porting_advisor/testdemo/code_migrationlcode 操作步骤上传源码,选择CIC++、make参数扫描出源码需修改文件进行逐个修改然后进行保存。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607579200994304.png) ### 3.2 源码迁移2 Python语言扫描,识别出工程中使用的依赖库,对其兼容性进行判断,样例报告中可直接下载使用依赖库。 ### 3.3 软件迁移与软件包重构案例 软件迁移评估:找出so依赖库和可执行文件,并评估so依赖库和可执行文件的可迁移性。 软件包重构:用户上传需要重构的软件包和依赖配置文件,重构完成后,用户可以直接下载重构后的rpm软件包,然后在鲲鹏平台上直接使用。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607685657168812.png) ### 3.4 内存一致性案例 操作步骤 上传源码,填写编译命令,样例中使用“make NO_LAPACKE=1”,点击下一步,开始BC文件解析,选择生成的BC文件,进行弱内存问题检查。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607606902498191.png)
  • [迁移系列] 数据仓库迁移方案
    第1章. 项目背景和目的首先,了解项目的背景和目的,才能设计出满足客户需求的迁移方案。1.1. 项目背景比如:XX银行基于Teradata一体机构建的数据仓库,存在成本高、可替换性差、在线升级能力弱等问题,希望引入扩展性更强、具有成本竞争力、在线升级能力强的产品替代。1.2. 项目目标比如项目总体目标:替换的数据仓库产品能力要不低于现网Teradata的整体能力,而且要满足数仓上下游生态工具的对接,做到对应用的改动量最小化。第2章. 数仓迁移方案设计2.1. 需求分析与规划设计 2.1.1. 数仓迁移总体规划数仓迁移是一个系统的复杂的过程,涉及数据迁移、加工逻辑迁移及应用改造。在掌握通用迁移方法论的基础上,还需要结合源数据库和目标数据库的数据库特性进行迁移方案的优化,不然就有可能导致迁移项目失败,浪费人力和财力。比如:分为两个大的阶段进行,第一阶段从xx日期到xx日期完成主仓迁移,第二阶段从xx日期到xx日期完成集市层迁移等。2.1.2. 需求分析及调研评估2.1.2.1 需求调研分析信息收集会贯穿整个数仓迁移项目的生命周期,通常需要多次多种方式的收集动作。在不同阶段使用的信息收集方法也不相同。• 数仓信息收集1) 数据库环境信息调研表比如:源数据版本,并发数,字符集,函数等2) 源数据搬迁调研表比如:源数据库的数据架构、数据量等。3) 第三方软件调研比如:ETL的调度工具,对接的分析工具等。4) 用户权限调研比如:总共有多少个用户、多少个应用,用户与应用的权限关系等。5) 特定源数据库技术(以下为示例)如有,请描述。2.1.2.2. 系统架构系统架构主要表述了契合一个环境的系统的基本元素及元素之间的关系构成的结构集,在环境中体现出来的基本属性,以及设计与演进的原则。通过系统架构,我们通常可以粗略了解该系统的一个全貌,包括该系统由哪些组件构成,他们的关系是什么,以及与其有关联的上下文系统的关系。比如常见的金融数仓系统架构主要由数据仓库系统、作业调度系统、文件或数据传输系统、上游业务系统、下游应用系统等构成,他们直接通过一定的关系有机地组成了一个数据仓库的整体。比如2.1.2.3. 数据架构数据架构,可以帮助我们熟悉数据的源头以及数据在整个系统中的一个流转过程。比如,下图是一个常见的金融系统的数据架构。2.1.2.4. 调研评估迁移评估调研是整个数仓迁移工作的基础,为数仓迁移方案规划和实施提供信息基础。并对迁移技术可行性、实施难度、风险、资源需求进行整体分析和评估。迁移评估调研主要包括以下内容:1) 信息调研:通过上述信息调研和原厂以往经验,认为可以从当前环境中将数据迁移到GaussDB数据库。2) 业务关联性分析和评估:根据上述基本信息调研,评估是否可以对接其关联的系统。3) 迁移风险分析和评估:可能存在极少数兼容性的问题或者数值型精度的问题,评估风险可控。2.2. 环境准备 四套环境:原数仓的比对环境、新数仓的单元测试环境、集成测试环境和生产环境。2.2.1. 环境部署方案GaussDB(DWS)系统的网络划分为2个平面,即业务平面和管理平面,两个平面之间采用物理隔离的方式进行部署,保证业务、管理各自网络的安全性。主备管理节点还支持设置外部管理网络的IP地址,用户可以通过外部管理网络进行集群管理。采用双平面组网时,集群中每个节点分别接入管理平面和业务平面,每个节点需要准备一个管理IP地址和一个业务IP地址,每个IP地址用两个网络接口配置Bond,分别接入两个接入交换机。各节点的业务平面建议采用25GE带宽,业务平面接入交换机与汇聚交换机之间建议采用25GE带宽,业务平面汇聚交换机的堆叠带宽建议设置为40GE。2.2.2. 数据库设计数据库设计需要考虑的问题:1、 创建数据库时,使用什么字符集?比如使用UTF8 or latin字符集2、 目标数据库与原数据库的特性差异及对应关系比如:Teradata是按照”库,子库”这样的方式进行的单元组织;GaussDB(DWS)是按照“库,Schema”这样的方式进行的单元组织。两者转换后的对应关系如下:原Teradata的根库DBC转换到GaussDB以后为一个schema;(之所以仍然保留DBC是因为我们脚本中使用了很多原dbc的系统表,为了减小业务脚本的改动量,我们保留该Schema)。3、 用户及权限管理用户的权限设计应该与原设计基本相同,数据库的用户权限管理与原Teradata的权限管理的形式基本一致。原Teradata库中的权限设计中将每个库的权限拆成四类权限组:表和视图的查询访问权限(查询)表和视图的增删改访问权限(IDU)创建对象、清空表、修改对象的约束等权限(Tab)函数执行、序列访问等其他权限(其他)4、作业调度方案作业调度通常可以采用与原来一致的调度方式即可。5、迁移工具迁移工具通常分两类:一类考虑如何将数据从源数据库中搬迁到目标数据库中;比如DSC工具。一类考虑如何根据目标数据库生成业务脚本:比如XX银行的IDE工具2.3.4. 迁移策略2.3.4.1. 迁移策略分析常见的三种迁移策略:2.3.4.2. 迁移策略的选择根据信息调研以及业务的不同、目标和计划的不同,综合评估后选择上述其中之一即可;比如zx客户选择了“渐进式迁移”,而hg客户选择了“重新设计迁移”。2.3.5. 迁移实施计划通常根据客户的目标和总体计划倒排计划,不详述。2.3.6. 迁移流程从异构数据库迁移到GaussDB(DWS)数据库,一般要经过需求调研与评估→环境准备→分析设计→开发→测试→切换六个阶段,期间涉及数据库厂商、应用开发商、业务部门、科技部门等多个部门和组织的协同配合,为了保证迁移项目成功,每一个环节都要仔细分析并加以充分验证。2.3.6.1. 迁移对象分类数仓迁移是一个系统的复杂的过程,涉及数据迁移、加工逻辑迁移及应用改造。为了将整个工程变得简单化,通常情况会将迁移对象分为以下几大类,包括元数据迁移,业务数据迁移,业务脚本迁移,调度系统迁移等。在这几大类的基础上,通常还会结合客户的实际情况分阶段,分层次等手段进一步拆解任务。2.3.6.2. 元数据迁移2.3.6.2.1. 元数据迁移方案元数据迁移包括源数据库的库,表,视图,函数,用户及权限等;首先从源库中读取建表的DDL等信息;通过人工创建或者DSC语法迁移工具自动化实现语法的转译和改写后,在目标库中执行创建,并进行测试和验证;语法迁移工具将显示迁移过程状态,并用日志记录操作过程中发生的错误。2.3.6.2.2. 各模块元数据迁移方案缓冲层元数据迁移数据缓冲层包括接收的核心系统、个贷系统等业务系统的数据。数据以增量或全量形式进入数据仓库,表数量、脚本程序数量较大,缓冲层表是根据DDL每日根据数据加载程序自动生成“表名+数据日期”的数据表。主要工作包括:统计需要完成多少DDL、视图,函数,用户及权限的迁移等。主题层元数据迁移主题加工层是数据仓库的核心部分,采用三范式设计。当前银行数仓主要采用FS-LDM主题模型设计。主要工作包括:统计需要完成多少DDL、视图,函数,用户及权限的迁移等。汇总层元数据迁移汇总层又叫共性加工层,通常分为明细加工层、汇总加工层;是对主题模型的轻度汇总。主要工作包括:统计需要完成多少DDL、视图,函数,用户及权限的迁移等。集市元数据迁移集市主要是根据不同的业务进行划分的应用;比如监管报送、1104报表等。 主要工作包括:统计需要完成多少DDL、视图,函数,用户及权限的迁移等。2.3.6.3. 作业脚本迁移2.3.6.3.1. 作业迁移方案业务迁移,主要是将作业脚本中Teradata的SQL语法等信息通过语法迁移工具自动化实现转换为GaussDB(DWS)语法,实现作业一对一的迁移, 作业转换后需要测试功能及性能调优;语法迁移工具将显示迁移过程状态,并用日志记录操作过程中发生的错误。各个模块的迁移方法同“元数据迁移”类似,需要根据不同的模块分别调研并统计需要迁移的作业等,不再赘述。2.3.6.4. 业务数据迁移在数仓迁移项目中,现有存量数据迁移占据着非常重要的位置,通常在数据库元数据迁移完成之后进行,主要包括历史数据迁移和实时数据迁移,可使用迁移工具将数据从源数据库迁移到目标数据库。2.3.6.4.1. 各模块数据迁移方案根据数据架构,调研每个模块需要迁移的数据,方法类似“元数据迁移”,不再赘述。 2.3.6.5. 数据核验方案2.3.6.5.1. 数据核验目标数据检核的目标主要有:据核验的目标是比对新平台的业务数据与原平台的业务数据一致。为了达到以上目标,需要考虑以下几个方面:• 表级记录数一致• 表级记录sum值一致• 表级按照维度分类一致• 记录级的MD5值一致2.3.6.5.2. 各模块数据核验方案各模块的验证方案需要根据数据架构进行调研并参照“元数据迁移”的方法进行验证。2.3.6.6. 并行期策略方案2.3.6.6.1. 作业追批方案对于业务数据迁移,一般采用首次全量导出导入,之后通过增量文件追批的方式进行。在保证调度系统一致,首次全量验证通过以后,可以开始追批。不同的环境,追批的标准不同,开发测试环境可以进行多轮追批,集成测试环境一般设置2~3轮的追批,而生产环境一般是两轮的的追批方式。2.3.6.7. 应用切换方案2.3.6.7.1. 应用切换原则应用切换的原则主要有:1) 应用切换要确保原来的数据及任务平稳从原来的源环境过渡到目标环境。2) 数据迁移的上线,要稳抓稳打,逐步推进。或分层、或分应用,分阶段、分步骤逐步上线。3) 确保切换前后数据的完整性;也就是转换过程中不能丢失数据。4) 确保切换前后加工任务的工作效率,达到项目要求的效率。
总条数:66 到第
上滑加载中