ICode9

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

迁移 MySQL 数据到 OceanBase 集群

2021-12-29 13:31:51  阅读:287  来源: 互联网

标签:INFO OceanBase true MySQL jar 集群 datax mysql com


练习内容

请记录并分享下列内容:

  • 1(必选)使用 mysqldump 将 mysql的表结构和数据同步到 OceanBase 的MySQL 租户中。
  • 2(必选)使用 datax 配置至少一个表的 MySQL 到 OceanBase 的 MySQL 租户的离线同步。

1、基础环境

mysql 单机 192.168.237.137:22

OceanBase zone1 单副本 192.168.237.132

2、创建测试表

mysql> CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

mysql> create table Student(Sno char(9) primary key,Sname char(20) not null,Ssex char(2),Sage smallint,Sdept char(20));

添加student表数据
mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215121','李勇','男','20','CS');
mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215122','刘晨','女','19','CS');
mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215123','王敏','女','18','MA');
mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215125','张立','男','19','IS');


3、导出文档(练习必选1)

mysqldump -h 127.1 -uroot -P3306 -p  -d mxdata > mx_ddl.sql

4、导入数据(个人建议不这么搞 ,错太多) 我是没办法,官方练习题。

MySQL [mxdata] > source mx_ddl.sql

这个导出来的脚本有几个特征:

  • 视图的定义也会在里面,但是会以注释 /!/。视图我们不关注,这部分内容可以删除。
  • 会有一些特别的语法 OceanBase MYSQL 会不支持,但是不影响,需要替换掉其中部分。比如说变量 SQL_NOTESDEFINER 语句等。

5、安装datax (重点pom.xml 如果编译不通过就去注释)

5.1,系统要求:

System Requirements
Linux
JDK(1.8以上,推荐1.8)
Python(推荐Python2.6.X)
Apache Maven 3.x (Compile DataX)
官方的要求,基本上可用。但建议:Linux使用CentOS 6.9,因为配套的Python版本即是2.6.6,只需要配置Maven就好。Maven的版本建议使用3.2.5。刚开始用的3.8.1报错太多…

5.2,下载DataX源码:

$ git clone git@github.com:alibaba/DataX.git
1
使用git下载源码的方式,参考别的文档。BTW: 外网不稳定访问,多试。

5.3,通过maven打包:

$ cd {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
3.1,一定要记得配置国内镜像,修改setting.xml

<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
5.2,常见错误(找不到依赖包)
[ERROR] Failed to execute goal on project hdfsreader: Could not resolve dependencies for project com.alibaba.datax:hdfsreader:jar:0.0.1-SNAPSHOT: Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde in nexus-aliyun (https://maven.aliyun.com/repository/central) -> [Help 1]

从提示上看,是hdfsreader的包缺失,相应的hdfswriter也应该是不行的。因为我用不到这两个组件,于是在pom.xml中注释掉。

还有一个 oscarwriter,也用不到,也在pom.xml中注释掉。

[ERROR] Failed to execute goal on project oscarwriter: Could not resolve dependencies for project com.alibaba.datax:oscarwriter:jar:0.0.1-SNAPSHOT: Could not find artifact com.oscar:oscar:jar:7.0.8 at specified path /opt/DataX/oscarwriter/src/main/lib/oscarJDBC.jar -> [Help 1]
5.4、然后,编译成功。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:43 min
[INFO] Finished at: 2021-05-28T00:42:50+08:00
[INFO] Final Memory: 305M/492M
[INFO] ------------------------------------------------------------------------
5.5配置datax 连接mysql和ocneanbase端 json文件
{
    "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"
                    }
                }
            }
        ]
    }
}

注明:这里需要

mysql增加一个同步账号 datax 可自行更改

onceanbase 修改 租户 账号密码

启动datax 进行同步

./datax.py ../job/mysql2ob.json (自行命名)

标签:INFO,OceanBase,true,MySQL,jar,集群,datax,mysql,com
来源: https://blog.csdn.net/qq_40877676/article/details/122213632

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

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

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

ICode9版权所有