暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

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

原创 吴毅 2021-11-22
1924

之前有做过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时,出现如图所示:
image.png
原因是安装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 /

image.png

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

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

image.png
修改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后报错,如图所示:
image.png
把openGauss.loader 里面kafka.wuyi.com:26000/share1/的最后面的’/’去掉再把修改后的配置文件拷贝到pgloader1容器里,进入容器在执行,还是报错:
image.png
原因是:配置里WITH include drop, create tables, create indexes, reset no sequences, workers = 8, concurrency = 1, multiple readers per thread, rows per range = 50000是一条命令,被我拆分成3条命令。修改如图所示:
image.png
执行后还是报错,如图所示:
image.png
域名写错了,应该把kfaka1修改为kafka1,因为是docker版的pgloader,使用域名会报错,还是写内部IP地址172.16.32.5,还有把mysql数据库test修改为test1。运行还是出错,报错如图所示:
image.png
原因是:openGauss数据库部署在服务器上时,如果要允许其他电脑远程连接,则需要对openGauss进行配置,否则,出现上图的错误。

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

image.png
还是不行,出现报错如图所示:
image.png
最后经过多次排查,发现之前创建的用户名wuyicom有问题,重新创建新用户名wuyi,执行远程白名单:

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

重新拷贝到容器,再执行成功,如下图所示:
image.png
image.png

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

最后修改时间:2021-11-25 12:25:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论