作者:吴毅
之前有做过python+flask+echarts+mysql的大屏数据可视化,现在想把mysql改为openGauss,需要把mysql的基础数据shares_basic表迁移到openGauss上。在网上看到如何使用pgloader迁移MySQL数据库至openGauss:https://blog.csdn.net/GaussDB/article/details/120336223,也想根据步骤做,测试一下是否能安装成功。
运行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
/
create database share1 with owner wuy
/
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;
docker cp openGauss.loader pgloader1:/
/
进入docker环境
docker exec -it pgloader1 /bin/bash
/
把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中的数据库对象。