ITPub博客

首页 > 数据库 > 国内数据库 > 实践练习四:迁移 MySQL 数据到 OceanBase 集群

实践练习四:迁移 MySQL 数据到 OceanBase 集群

原创 国内数据库 作者:a001z82 时间:2022-12-21 19:31:19 0 删除 编辑

1.准备mysql及数据

1.1清理mariadb以免冲突

(1)  yum list installed |grep mariadb 查看是否安装Mariadb服务
yum -y remove mariadb 删除Mariadb

或
rpm -qa |grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
(2) yum list installed |grep mysql 查看是否安装MySQL
yum -y remove mysql 删除MySQL

rm -rf /etc/my.cnf
( 3 )删除MySQL和mariadb相关文件夹   非必须
find / -name mariadb
find / -name mysql
(5)添加MySQL组
groupadd mysql
(6)建MySQL用户并指定到MySQL组
useradd -g mysql mysql
(7)给MySQL用户添加密码
passwd mysql

1.2 安装mysql(非专业严谨的)

在此页面找到 mysql版本及适用系统,下载 bundle 捆版本

https://downloads.mysql.com/archives/community/  

可用 root安装也可用mysql用户安装

tar xf  MySQL-5.6.51-1.el7.x86_64.rpm-bundle.tar

含 7个 -

MySQL-client-5.6.51-1.el7.x86_64.rpm

MySQL-devel-5.6.51-1.el7.x86_64.rpm

MySQL-embedded-5.6.51-1.el7.x86_64.rpm

MySQL-shared-5.6.51-1.el7.x86_64.rpm

MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm

MySQL-test-5.6.51-1.el7.x86_64.rpm

MySQL-server-5.6.51-1.el7.x86_64.rpm

 

以 rpm -ivh 或 yum install安装  

MySQL-server-5.6.51-1.el7.x86_64.rpm最后安装  MySQL-test-5.6.51-1.el7.x86_64.rpm不安装

复制 mysql配置文件 模板 到 my-default.cnf为/etc/my.cnf

cp   /usr/share/mysql/my-default.cnf    /etc/my.cnf

vim /etc/my.cnf命令修改文件内容,这里注意将最下面的【sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES】注释掉   不然可能登录不上 。

[mysql]                                    #mysql 客户端

default-character-set=utf8 mb4                  #设置默认字符集

socket = /var/lib/mysql/mysql.sock          #添加socket 路径 , 本地连接 的套接字文件

[mysqld]                                   #mysql 服务端

port = 3306

socket = /var/lib/mysql/mysql.sock

basedir = /opt/mysql                        # 改 安装位置

datadir = /opt/mysql/data                   # 改 数据存放位置

character-set-server=utf8

default-storage-engine=INNODB               #默认的存储引擎

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]                                    #客户端设置,即客户端默认的连接参数

port=3306

socket=/var/lib/mysql/mysql.sock

 

因为历史遗留问题,MySQL 中的 utf8 编码并不是真正的 UTF-8,而是阉割版的,最长只有3个字节。当遇到占4个字节的 UTF-8 编码,例如 emoji 字符或者复杂的汉字,会导致存储异常。 utf8 mb4 是 utf8的超集 , 是 变长的编码机制,可以用1~4个字节存储 。

初始化数据库 ( 后面操作没有使用上面的 my.cnf , 且未建立 my.cnf , 路径都是默认的 )

cd /bin

./mysql_install_db --user=mysql

启动

service mysql start     或 s ys temctl start mysqld

service mysql status  

chkconfig mysql on   或 systemctl enable mysql

配置 mysql(设置密码等)

mysql_secure_installation

mysql -uroot -p

直接回车,查看初始密码:

cat /root/.mysql_secret

登录后修改密码:

mysql> SET PASSWORD = PASSWORD('111111');

mysql> flush privileges;    即时生效

放开 远程登录:

mysql> use mysql;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION;

 

mysql的文件 默认 所在的位置 参考 :

/usr/bin(客户端程序和脚本)

/usr/sbin(mysql服务器)

/var/lib/mysql/(日志文件和数据库)

/usr/share/doc/packages(文档)

/usr/include/mysql(包含(头)文件)

/usr/lib/mysql(库文件)

/usr/share/mysql/(错误消息和字符集文件)

/usr/share/sql-bench(基准程序)

建数据库和数据

create database dbtest 1 utf8 ;       新版本 mysql应为utf8bm4

use dbtest ;

CREATE TABLE c ourse(Cno VARCHAR(20) ,Cname VARCHAR(20) ,Tno VARCHAR(20) );

INSERT INTO course values ("6-166","数字电路",856);

INSERT INTO course values ("9-888","高等数学",831);

也有使用 sysbench或tpcc-mysql测试工具造数据的方法

2.使用mysqldump迁移数据

mysqldump -h 127.0.0.1 -uroot -proot123 db test > db test.sql

obclient -h 127.0.0.1 -P 2883 -uroot@sys -p -c -A oceanbase

登入 ob后 source db test.sql

3.使用 data x迁移 MySQL 数据到 OceanBase 集群

datax 源码方式 需要下载并编译。编译 datax需要 maven ,使用 maven需要java环境

使用 Datax包方式 数据迁移 (感觉是写入端要有表结构)

下载 Datax 并解压

wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

tar -xf datax.tar.gz -C /usr/local/

cd /usr/local/datax

删除 datax中的隐藏文件 不然会出问题

find /usr/local/datax/plugin -name ".*" | xargs rm -f

或者

cd   /usr/ local /datax/ plugin /reader && rm   -rf .*

cd   /usr/ local /datax/ plugin /writer && rm   -rf .*

yum install -y python2 java

-- 生成模板文件

python2 /usr/local/datax/bin/datax.py -r mysqlreader -w oceanbasev10writer > /usr/local/datax/job/my2ob.json

# 根据实际环境修改

vi m   /usr/local/datax/job/my2ob.json     只能每个表配置一段   

cat > /usr/local/datax/job/my2ob.json <<"EOF"

{    

"job": {

         "setting": {

             "speed": {

                 "channel": 2,

             },

             "errorLimit": {

                 "record": 10

             }

         },

         "content": [

             {

                 "reader": {

                     "name": "mysqlreader",

                     "parameter": {

                         "username": "root",

                         "password": " 111111 ",

                         "splitPk": "id",

                         "column": ["*"],

                         "connection": [

                             {

                                 "jdbcUrl": [

                                     "jdbc:mysql://1 27.0.0.1 :3306/ dbtest "

                                 ],

                                 "table": [

                                     " c ourse "

                                 ]

                             }

                         ]

                     }

                 },

                 "writer": {

                     "name": "oceanbase v10 writer",

                     "parameter": {

                         "writeMode": "insert",

                         "username": "root",

                         "password": " 111111 ",

                         "writerThreadCount": 5,

                         "column": [

                             "*"

                         ],

                         "connection": [

                            {

                                 "jdbcUrl": "||_dsc_ob10_dsc_||ob demo : sys ||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/oceanbase?useUnicode=true&characterEncoding=utf-8",

                                 "table": [

                                     " c ourse "

                                 ]

                             }

                         ]

                     }

                 }

             }

         ]

     }

}

EOF

 

信息说明: ||_dsc_ob10_dsc_||ob demo :my_tenant1||_dsc_ob10_dsc_||jdbc:oceanbase://127.0.0.1:2883/oceanbase?useUnicode=true&characterEncoding=utf-8",

_dsc_ob10_dsc_ 是固定字   ob demo :my_tenant1   是集群名:租户名    127.0.0.1:2883/oceanbase    oceanbase是库名

执行数据迁移

python2   /usr/local/datax/bin/datax.py   /usr/local/datax/job/my2ob.json

报错, 可以查 DATAX日志

 

正常结果为

2022-12-22 00:40:04.393 [job-0] INFO  JobContainer -
任务启动时刻                     : 2022-12-22 00:39:53
任务结束时刻                     : 2022-12-22 00:40:04
任务总计耗时                     :                 10s
任务平均流量                     :          348.26KB/s
记录写入速度                     :          10830rec/s
读出记录总数                     :              108309
读写失败总数                     :                   0

以下为视频中的工具介绍:



 

 


 

 

 

 

 

 

 

 

 

 

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22333459/viewspace-2928960/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-12-14

  • 博文量
    4
  • 访问量
    1642