【参赛作品8】mysql迁移openGauss遇到的问题和解决办法

作者:吴毅
之前有做过python+flask+echarts+mysql的大屏数据可视化,现在想把mysql改为openGauss,需要把mysql的基础数据shares_basic表迁移到openGauss上。在网上看到如何使用pgloader迁移MySQL数据库至openGauss:https://blog.csdn.net/GaussDB/article/details/120336223,也想根据步骤做,测试一下是否能安装成功。

1. 安装docker的pgloader

运行yum clean all时,出现如图所示:

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第1张图片

原因是安装openGauss时升级了python的版本, 导致python3.6解析python2.7的语法出错。解决方法:修改/usr/bin/yum和/usr/libexec/urlgrabber-ext-down文件中的第一行为#!/usr/bin/python2.7。

yum install -y yum-utils device-mapper-persistent-data lvm2
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y
systemctl start docker
docker pull dimitri/pgloade
/

启动docker:

docker run -tid --name pgloader1 dimitri/pgloader
/

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第2张图片

2. 创建数据库和修改MySQL迁移到openGauss的配置文件openGauss.loader

create database  share1 with owner wuy 
/

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第3张图片
修改openGauss.loader

LOAD DATABASE
 FROM mysql://root:[email protected]:3306/test/shares_basic
INTO postgresql://wuyicom:[email protected]:26000/share1/ 
WITH include drop, create tables, create indexes, reset no sequences,
 workers = 8, concurrency = 1,
 multiple readers per thread, rows per range = 50000
 CAST
 type varchar when(= 1 precision) to "boolean" drop typemod keep default keep not null;

3. 复制配置文件到docker

docker cp openGauss.loader pgloader1:/
/

进入docker环境

docker exec -it pgloader1 /bin/bash
/

4. 执行pgloader openGauss.loader后报错,如图所示:

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第4张图片

把openGauss.loader 里面kafka.wuyi.com:26000/share1/的最后面的’/’去掉再把修改后的配置文件拷贝到pgloader1容器里,进入容器在执行,还是报错:

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第5张图片

原因是:配置里WITH include drop, create tables, create indexes, reset no sequences, workers = 8, concurrency = 1, multiple readers per thread, rows per range = 50000是一条命令,被我拆分成3条命令。修改如图所示:

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第6张图片

执行后还是报错,如图所示:

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第7张图片

域名写错了,应该把kfaka1修改为kafka1,因为是docker版的pgloader,使用域名会报错,还是写内部IP地址172.16.32.5,还有把mysql数据库test修改为test1。运行还是出错,报错如图所示:

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第8张图片

原因是:openGauss数据库部署在服务器上时,如果要允许其他电脑远程连接,则需要对openGauss进行配置,否则,出现上图的错误。

gs_guc reload -I all -N all -h "host all wuyicom 172.17.0.1/24 md5"

【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第9张图片
还是不行,出现报错如图所示:
【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第10张图片
最后经过多次排查,发现之前创建的用户名wuyicom有问题,重新创建新用户名wuyi,执行远程白名单:

gs_guc reload -I all -N all -h "host all wuyi 172.17.0.1/24 md5"

重新拷贝到容器,再执行成功,如下图所示:
【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第11张图片
【参赛作品8】mysql迁移openGauss遇到的问题和解决办法_第12张图片

通过这次测试,了解到openGauss用户权限的重要性。使用迁移时,建议创建新用户,因为以前的用户权限可能变动或没设置好,造成报错。还有需要不同IP的连接时,需要给新用户分配IP权限,否则也会报错。还有可以从上图看到,迁移的mysql的数据库名test1变成openGauss里面schema的test1。openGauss的一个数据库可以包含多个schema,在不同的schema可以创建相同的表名,用户一次只能访问一个数据库,但可以访问该数据库的多个schema中的数据库对象。

你可能感兴趣的:(mysql,数据库,database)