ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据迁移:从mysql迁移到OceanBase

2021-12-27 11:03:39  阅读:282  来源: 互联网

标签:lcxtest OceanBase maven datax mysql 迁移 true dsc


1. 工具准备

mysqldump可以使用mysql自带的mysqldump。datax需要下载并编译。编译datax需要maven,使用maven需要java环境,所以。。。

1.1 安装openjdk

yum install java-1.8.0-openjdk -y
yum install java-1.8.0-openjdk-devel.x86_64 -y

1.2 部署maven

从Apache官网下载:https://maven.apache.org/download.cgi

wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.zip --no-check-certificate
mkdir /usr/local/maven
unzip apache-maven-3.8.4-bin.zip -d /usr/local/maven
ll /usr/local/maven

在这里插入图片描述

1.3 配置环境变量

vi .bash_profile
# 新增下面几行
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
export JRE_HOME=$JAVA8_HOME/jre
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin

source .bash_profile

在这里插入图片描述
在这里插入图片描述

1.4 配置maven镜像源为阿里镜像源

修改配置文件settings.xml,文件在/usr/local/maven/conf中。

<mirror>
    <id>aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun-public</name>
    <url>https://maven.aliyun.com/repository/public/</url>
</mirror>

<mirror>
    <id>aliyun-spring</id>
    <mirrorOf>spring</mirrorOf>
    <name>aliyun-spring</name>
    <url>https://maven.aliyun.com/repository/spring</url>
</mirror>

1.5 编译 DataX 可执行二进制文件

按以下步骤编译 DataX 可执行二进制文件:
运行以下命令,下载源代码。

git clone https://github.com/alibaba/DataX.git
速度慢的可以从gitee拉取,或者使用别人打包好的。
git clone https://gitee.com/yongfuxie/DataX.git

注释 DataX/pom.xml 文件中的以下内容,其他组件也可能遇到问题,遇到时从pom文件删除即可

<module>oscarwriter</module>
<module>mongodbreader</module>
<module>mongodbwriter</module>

运行以下命令,使用 Maven 将 DataX 打包。

$ cd  {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true

在这里插入图片描述
生成的文件在target目录下
在这里插入图片描述

tar zxvf datax.tar.gz
mv datax /usr/local/
cd /usr/local/datax/

在这里插入图片描述

2. 使用mysqldump迁移数据

与mysql之间的迁移没什么不同,如果只迁移表结构,指定-d参数

-d, --no-data       No row information.

现在全量迁移一个库:

mysqldump -h 127.0.0.1 -uroot -proot123 -d lcxtest > lcxtest_nodata.sql
mysqldump -h 127.0.0.1 -uroot -proot123 lcxtest > lcxtest.sql

在这里插入图片描述

在这里插入图片描述
把文件传到observer的机器上,或者在本地连接observer集群:

mysql --no-defaults -h192.168.32.111 -uroot@test_tenant#obcluster -P2883 -proot13 -Dlcxtest

导入时会报错,因为有表用了latin1字符集,修改掉。

sed -i 's/CHARACTER\ SET\ latin1//g' lcxtest_nodata.sql
mysql --no-defaults -h192.168.32.111 -uroot@test_tenant#obcluster -P2883 -proot13 -Dlcxtest 
source lcxtest_nodata.sql

在这里插入图片描述
仍然会有报错,影响不大,建表语句是正确的
看一下表已经创建出来了。
在这里插入图片描述
如果是连数据一起导入,操作相同。
在这里插入图片描述
看下数据:
在这里插入图片描述
数据迁移成功。

3. 使用datax迁移数据

mysql 创建datax用户,并赋予了all,使用它来迁移数据。(mysql版本5.7)

注意修改相关的配置

{
    "job": {
        "setting": {
            "speed": {
                "channel": 4 
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.1
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "datax",
                        "password": "root123",
                        "column": [
                            "*"
                        ],
                        "connection": [
                            {
                                "table": [
                                    "lcxtest1"
                                ],
                                "jdbcUrl": ["jdbc:mysql://192.168.32.130:3306/lcxtest?useUnicode=true&characterEncoding=utf8&useSSL=false"]
                            }
                        ]
                    }
                },

                "writer": {
                    "name": "oceanbasev10writer",
                    "parameter": {
                        "obWriteMode": "insert",
                        "column": [
                            "*"
                        ],
                        "preSql": [
                            "truncate table lcxtest1"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "||_dsc_ob10_dsc_||obcluster:test_tenant||_dsc_ob10_dsc_||jdbc:oceanbase://192.168.32.111:2883/lcxtest?useLocalSessionState=true&allowBatch=true&allowMultiQueries=true&rewriteBatchedStatements=true",
                                "table": [
                                    "lcxtest1"
                                ]
                            }
                        ],
                        "username": "root",
                        "password":"root123",
                        "writerThreadCount":10,
                        "batchSize": 1000,
                        "memstoreThreshold": "0.9"
                    }
                }
            }
        ]
    }
}

这里格式是 集群:租户
在这里插入图片描述
删除已经迁移的四张表
在这里插入图片描述
迁移之前需要在ob端创建相应的表结构。

source lcxtest_nodata.sql

启动datax

./datax.py ../job/mysql2ob.json

在这里插入图片描述

表迁移成功。
第二张表使用同样的方式,修改配置文件中的表名字即可。
第三涨使用csv格式来导入到OceanBase。

{
    "job": {
        "setting": {
            "speed": {
                "channel": 4 
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.1
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "datax",
                        "password": "root123",
                        "column": [
                            "*"
                        ],
                        "connection": [
                            {
                                "table": [
                                    "lcxtest1"
                                ],
                                "jdbcUrl": ["jdbc:mysql://192.168.32.130:3306/lcxtest?useUnicode=true&characterEncoding=utf8&useSSL=false"]
                            }
                        ]
                    }
                },

                "writer": {
                    "name": "txtfilewriter",
                    "parameter": {
                        "path": "/tmp/lcxtest3",
                        "fileName": "lcxtest3.csv",
                        "encoding": "UTF-8",
                        "writeMode": "truncate",
                        "dateFormat": "yyyy-MM-dd hh:mm:ss" ,
                        "nullFormat": "\\N" ,
                        "fileFormat": "csv" ,
                        "fieldDelimiter": ","
					}
                }
            }
        ]
    }
}

第三张表数据比较少,只有80条。
在这里插入图片描述
导入到OceanBase

{
    "job": {
        "setting": {
            "speed": {
                "channel": 4 
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.1
            }
        },
        "content": [
            {
                "reader": {
                    "name": "txtfilereader",
                    "parameter": {
                        "path": ["/tmp/lcxtest3"],
                        "fileName": "lcxtest3.csv",
                        "encoding": "UTF-8",
                        "column": ["*"],
                        "dateFormat": "yyyy-MM-dd hh:mm:ss" ,
                        "nullFormat": "\\N" ,
                        "fieldDelimiter": ","
                    }
				},

                "writer": {
                    "name": "oceanbasev10writer",
                    "parameter": {
                        "obWriteMode": "insert",
                        "column": [
                            "*"
                        ],
                        "preSql": [
                            "truncate table lcxtest3"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "||_dsc_ob10_dsc_||obcluster:test_tenant||_dsc_ob10_dsc_||jdbc:oceanbase://192.168.32.111:2883/lcxtest?useLocalSessionState=true&allowBatch=true&allowMultiQueries=true&rewriteBatchedStatements=true",
                                "table": [
                                    "lcxtest3"
                                ]
                            }
                        ],
                        "username": "root",
                        "password":"root123",
                        "writerThreadCount":10,
                        "batchSize": 1000,
                        "memstoreThreshold": "0.9"
                    }
                }
            }
        ]
    }
}

但如前后数据查询:
在这里插入图片描述

标签:lcxtest,OceanBase,maven,datax,mysql,迁移,true,dsc
来源: https://blog.csdn.net/weixin_46668148/article/details/122160309

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有