mysql迁移openGauss遇到的问题和解决办法

举报
wuyicom 发表于 2021/11/22 22:34:44 2021/11/22
【摘要】     之前有做过python+flask+echarts+mysql的大屏数据可视化,现在想把mysql改为openGauss,需要把mysql的基础数据shares_basic表迁移到openGauss上。在网上看到如何使用pgloader迁移MySQL数据库至openGauss:https://blog.csdn.net/GaussDB/article/details/12033622...

    之前有做过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时,出现如图所示:

原因是安装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

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

create database share1 with owner wuyicom dbcompatibility='PG';

修改openGauss.loader

LOAD DATABASE


FROM mysql://root:xxxxxx@kafka1.wuyi.com:3306/test/shares_basic

INTO postgresql://wuyicom:xxxxxx@kfaka1.wuyi.com: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后报错,如图所示:

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

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

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

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

运行还是出错,报错如图所示:

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

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

还是不行,出现报错如图所示:

最后经过多次排查,发现之前创建的用户名wuyicom有问题,重新创建新用户名wuyi,执行远程白名单:gs_guc reload -I all -N all -h "host all wuyi 172.17.0.1/24 md5"。重新拷贝到容器,再执行成功,如下图所示:

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

    转本人的博客:https://www.modb.pro/db/174196




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。