测试环境:操作系统版本:openEuler-20.03-LTS-SP2-everything-x86_64,硬件配置:4C8G 1台,服务器名称:gbase.wuyi.com, IP地址: 192.168.1.200
1. 通过学习《09.GBase 8s数据迁移》,了解数据迁移分类,数据迁移遇到的问题和数据迁移的方法。
特别注意:(1)默认的行分隔符为linux和windows系统时,windows系统多了\r,可以使用dos2unix工具来解决。(2)导入数据时,可能对字符进行转义会使数据产生膨胀,可根据情况对目标字段进行加长处理。(3)基于特定规则的换行符处理,导致不兼容第三方系统。(4)不同的汉字编码格式和数据截断导致数据产生乱码。
2. 数据迁移除了使用课程介绍的5种工具外,还可以使用GBaseMigrationToolkit迁移到GBase 8s或8a等数据库上。
测试数据使用股票采集的数据。因股票的数据直接写入到GBase 8s有缺失,可以先写入到mysql数据库,在通过GBaseMigrationToolkit迁移到GBase 8s。 在文章《GBase 8a的docker版安装、迁移和js连接测试》:https://www.modb.pro/db/240832有介绍mysql迁移GBase 8a,但特别注意迁移8a与8s有所不同。如图所示:
但是连接GBase 8s设置时,报错如图所示:
容易看错以为连接参数同时支持多种字符集,造成报错。使用下面命令查看GBase 8s中shares数据库属于那个字符集。
select * from sysmaster:sysdbslocale;
复制
经查询Zh_CN.57372就是utf8字符集,所以在连接参数上选择utf8即可。之后在迁移表里选择详细设置可以选择需要迁移的表。设置完成后,启动任务。
选择迁移2个表,只有shares_wide表成功,另外一个shares_basic表报错。但是在GBase 8s里无法查询到shares_wide的数据。
在mysql中查询shares数据库中shares_basic和shares_wide表的数据类型。
经过多次测试,发现不支持text类型,即使有些表迁移成功,但还是无法查询数据。只要把text类型的字段排除,而且发现text类型长度为65535,比较占空间资源。
简单在mysql里建立一个带text类型的表test来测试,在迁移过程中也会报错,如图所示:
通过数据迁移的操作,发现GBase 8s和GBase 8a有很多不同,GBase 8a大部分情况能兼容mysql,而GBase 8s却不支持textl类。在迁移到GBase 8a时, 不需要设置字符集,而GBase 8s需要相对应的字符集,否则会报错。对个人使用习惯来说,我比较喜欢GBase 8a,而GBase 8s的兼容性和使用习惯还有待改善。
评论
