• XX项目--容灾方案
    案例简介:XX成立于1984年,是土耳其本土最大的企业软件公司,也是最大的公共软件公司之一,为各类企业提供应用软件解决方案。迄今为止,XX在X个不同国家的X个地区拥有X多名员工和X多个业务伙伴。与AAG均有合作。迁移方案描述:Ø信息调研:客户PostgreSQL数据库,其中SAAS实例单库最大对象数超过90W+,PAAS实例逻辑库超过600+。Ø方案设计:SAAS实例共25个逻辑库,使用DRS全量迁移,总共分6批迁移完成,割接窗口是每天6小时。因为DRS只支持单库迁移,所以PAAS实例使用shell脚本迁移。输出Runbook初版。Ø测试验证:使用DRS迁移客户备份的真实数据,验证准备时间、迁移时间、数据对比时间、系统切换时间、遗留问题、实施顺序等项,并完善Runbook。Ø迁移实施:按照Runbook一步步标准化实施迁移,数据比对一致。Ø系统割接:正式割接后,业务验证正常。迁移成功。Ø保障移交:监控与巡检,并进行一周的业务重点保障,配合客户完成项目验收,培训与赋能。异地容灾方案描述:          华为云伊斯坦布尔Region两个AZ组成主备高可用,在距伊斯坦布尔400KM的安卡拉与VDF共建HCSO,采用Postgres数据库原生的流复制技术,组成公 有云伊斯坦布尔的异地灾备中心。流复制技术原理:流复制是基于 wal 日志传送技术实现同步,主节点(master)启用 walsender 进程持续发送 wal 日志流,备节点(standby)通过 walreceiver 进程实时接受从主传过的 wal 日志流,并且通过 walreceiver 进程调用内部函数write() 和 fsync() 将 wal 数据全部写入wal segment 和刷新到 wal segment,并通知 starup 进程回放已经写入wal segment 的 wal 数据。
  • XX项目-RDA-SMS主机迁移
    案例简介:       采用专线网络迁移,带宽1G,利用两个私网NAT网关,配置SNAT、DNAT规则,可同时将源、目的网段地址转换为中转IP,通过使用中转IP实现两VPC间互通。私网NAT网关解决了两个重叠网段VPC中的云主机互相访问的问题。 在HCSO部署RDA迁移工具,在RDA界面配置云环境信息,测试RDA到源端IDC主机以及RDA到HCSO上ECS连通性;配置主机迁移任务进行主机迁移测试。将IDC机房Vmware虚拟化主机以及物理机通过RDA-SMS迁移至HCSO上ECS,对于外接物理Key的物理机,将物理机迁移至ECS后改造物理key为电子密钥;个别有物理秘钥且不可改造的物理机通过物理搬迁的方式托管在政务云托管区。主机迁移后进行数据校验及功能验证,确保业务可正常使用,验证完成后割接前做一次或多次增量数据迁移,缩短割接时最后一次增量迁移的时间。割接:优先割接无公网及数据库依赖的独立系统,最后统一割接依赖Oracle数据库及59段公网IP的所有系统。方案描述:开放端口:1、RDA服务器采集源端主机信息, Linux主机通过ssh协议root账户采集,需要开通RDA到源端主机ssh协议端口(默认为22,如果做过修改则开放对应端口)。Windows主机通过Winrm服务管理员账户采集,需要开通Winrm服务端口(默认为5985,目前RDA不支持修改Windows主机采集端口)。2、迁移时数据传输,Linux主机通过rsync传输文件,通过ssh协议需要开放目的端主机ssh默认端口22,Windows通过8899/8900端口传输数据,需要开放目的端主机8899/8900端口.迁移步骤:1、登录RDA服务平台,配置RDA所要上云的云账号及云环境。创建迁移任务。2、迁移任务配置好之后RDA通过API网关去OBS桶下载SMS-agent插件。3、 RDA服务推送SMS-agent插件到源端服务器并解压后启动安装,同时校验源端服务器到API网关的连通性。4、源端服务器通过SMS-agent调用EVS接口创建临时EVS公有镜像磁盘。5、挂载临时迁移镜像到目的端服务器。6、对目的端ECS进行规格,磁盘查询,如果目的端主机未创建会通过接口创建虚拟机。7、迁移源端磁盘数据到目的端服务器。相关文档:RDA 2.0用户指南RDA主机迁移最佳实践公有云上云迁移工具SMSRDA培训及实操
  • XX上云(实验局)-MongoDB迁移DDS
    案例简介:       XX目前数据库采用自建的MySQL、MongoDB。客户希望业务全面上云替换,现将采购少量部署在测试区进行业务验证。目前客户现网云平台采用全栈华为硬件以及华为云,预计涉及数据库软件服务订货价格XXw+。本次试验局验证主要验证DDS云服务基础功能与数据迁移功能。方案描述:    源端环境:自建MongoDB;数据大小100G;    数据迁移:使用DRS全量+增量的方法迁移数据    数据核对:使用DRS自带数据核对工具,对迁移数据条数进行数据核对,数据条数核对上就默认迁移完成    问 题解决:通过查询技术手册解决客户问题,如果有不能解决的问题就通过向开发需求提单,通过开发来解决客户问题。    DDS技术手册:文档数据库服务(DDS) 2.22.07.210 使用指南(for 华为云Stack 8.2.0) 01 - 华为 (huawei.com)
  • 北非XX项目Elastic Cache到GeminiDB Redis迁移上云
    案例简介:       XX成立于2015年,是目前全球UGC赛道最大的中国游戏公司,在全球拥有XX万注册用户,覆盖美国、新加坡、港澳台、法国、阿联酋、巴西等XX个国家。目前客户现网以AWS+GCP部署为主,目前在AWS一年消耗XXWUSD,主要为业务大厅服源站以及数据收集和分析功能,包含大数据、数据库等业务,GCP一年消耗XXWUSD,主要为业务战斗服,包含服务器和流量业务,本次迁移客户有待迁移Redis实例XX个。数据迁移:1、确认客户业务停止,无应用访问Elastic Cache;2、在AWS源端控制台Elastic Cache导出全量备份文件;3、通过公网传输至华为云,检查备份文件MD5码前后是否一致,使用Redis-Shake工具将数据恢复到GeminiDB Redis中。4、进行数据校验,对GeminiDB Redis进行key值校验;5、数据校验通过后,应用链接GeminiDB Redis实例开始对外提供业务。数据校验:1、查询迁移后源端和目的端内存占用量是否一致;2、使用info keyspace语句查询并对比源端和目的端的key数量是否一致;3、使用脚本随机多次进行抽样内容校验。(客户数据部分具有时效性,可能存在因源端数据过期后源端和目的端前后数据不一致的问题,需要手动查询不一致的数据是否因数据过期引起)。回退方案(A-B-A):1、AWS侧创建Elastic Cache备用实例,承接回退实例数据2、配置GeminiDB Redis到AWS EC2的DRS全量链路,EC2与Elastic Cache配置SSH隧道;3、启动DRS任务,全量完成后,进行数据校验;4、数据校验通过后,应用修改数据库链接为AWS Elastic Cache备用实例。
  • DRS数据库迁移指导
    案例简介:    XX公司成立于2016年,短短六年间,XX依托于自身在人工智能、大数据领域的技术优势,和丰富的教学资源,已占领法考在线教育领域XX以上的市场份额,用户数量全国第一。近年业务也在向CPA和英语在线培训领域快速发展。       目前XX业务全量部署在A3云上,云空间XX万左右。       此次迁移是XX A3部署的法考、CPA、官网等业务系统。    方案描述:平台部署:网络打通;华为各云服务开通;自建服务的搭建和对接业务表的创建:在DWS里面进行业务模型表的重建(分布列、分区列、冷热策略、行列存储,业务逻辑主键)数据迁移:离线Hive数仓各层数据迁移(客户自己通过回退的方式把数据会退到PoloDB中,再通过gaussdb同步到DWS);实时听课数据通过DMS接进,然后通过flink消费,最后落进DWS。由于kudu数据不大客户自己写进DWS; PoloDB全量+增量数据通过gaussdb同步到DWS。历史数据的处理:数据的打宽,清洗作业迁移:设计所有业务的数据打宽,清洗逻辑重构,DGC作业的配置及调度数据以及性能的校验:1.历史数据的验证.2.实时增量数据的验,验证范围(所有表)3.实时流程性能验证,4.主要业务场景验证。5.Polo到gaussdb后记录数据量验证。割接:停止往Polo写数据,切换到gaussdb ,埋点数据写进DMS,停止阿里的离线作业,DWS同步正常,flink作业验证正常,观察业务运行状态,核对数据正确性,完成业务割接。
  • 北非XX项目AWS DynamoDB到GeminiDB Cassandra迁移上云
    案例简介:XX公司成立于2015年,是目前全球UGC赛道最大的中国游戏公司,在全球拥有XX万注册用户,覆盖美国、新加坡、港澳台、法国、阿联酋、巴西等XX个国家。目前客户现网以AWS+GCP部署为主,目前在AWS一年消耗XXWUSD,主要为业务大厅服源站以及数据收集和分析功能,包含大数据、数据库等业务,GCP一年消耗XXUSD,主要为业务战斗服,包含服务器和流量业务,本次迁移包含DynamoDB(XX张表,XTB)需要跨云平台迁移。方案描述:数据迁移:1、在华为云申请ECS主机用于安装DynamoMigration;2、配置DynamoMigration参数文件;3、启动DynamoMigration进行全量迁移;4、全量迁移完成后,对数据进行抽检,检查数据一致性校验;5、数据校验通过后,停止DynamoMigration服务,业务连接华为云GaussDB for Cassandra实例开始对外提供业务。回退方案:1、AWS侧创建备用表,承接回退数据;2、配置DynamoMigration配置文件,建立华为云-AWS全量迁移链路;3、待全量迁移完成后,对数据一致性进行校验4、数据校验通过后,停止DynamoMigration服务,应用修改数据库链接为AWS 实例备用表,对外提供业务。
  • [生态工具] 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)
总条数:73 到第
上滑加载中