当前位置:网站首页>【云原生】-Docker容器迁移Oracle到MySQL
【云原生】-Docker容器迁移Oracle到MySQL
2022-07-31 05:21:00 【m0_67392409】
???
哈喽!大家好,我是【】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!???
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
如果有对【数据库】感兴趣的【小可爱】,欢迎关注【】???
感谢各位大可爱小可爱!
文章目录
前言
Kettle是开源的 【TEL】 工具,JVAV编写,可以运行在多个平台,使用时有图形界面、命令脚本,还可以二次开发。用于数据抽取、转存等,非常方便
1. 创建专用网络
docker network create --subnet=168.66.6.0/24 db-network
[[email protected] ~]# docker network inspect db-network --查看网络信息
2. Oracle 12C部署
2.1 镜像下载
docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201
2.2 容器创建
docker run -itd --name jemora1221 -h jemora1221
–net=db-network --ip 168.66.6.34
-p 1526:1521 -p 3396:3389
–privileged=true
registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201 init
2.3 创建业务用户
[[email protected] ~]# docker exec -it jemora1221 bash
[[email protected] /]# su - oracle
[[email protected] ~]$ sqlplus / as sysdba
[email protected]> startup
[email protected]> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 JEMPDB MOUNTED
alter pluggable database JEMPDB open;
[email protected]> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
[email protected]> alter session set container=JEMPDB;
[email protected]> create user jemmes identified by jemmes
[email protected]> GRANT DBA to jemmes ;
2.4 监听启动
[[email protected] ~]$ cd $ORACLE_HOME/network
[[email protected] network]$ cd admin
## 配置TNS,后续连接数据库
[[email protected] admin]$ vi tnsnames.ora
JEMPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = jemora1221)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = JEMPDB)
)
)
## 监听启动
lsnrctl start
lsnrctl status
3. MySQL8部署
3.1 容器创建
docker run -d --name mysql8027 -h mysql8027 -p 3418:3306
–net=db-network --ip 168.66.6.35
-v /etc/mysql/mysql8027/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=jeames -e TZ=Asia/Shanghai
mysql:8.0.27
查看容器
[[email protected] ~]# docker ps --format “table { {.ID}} { {.Names}} { {.Status}}”
CONTAINER ID NAMES STATUS
043d1652404d jemora1221 Up 7 minutes
dc2989508b67 mysql8027 Up 23 seconds
7e6a53d71017 centos7.8 Up 20 minutes
3.2 参数设置
cat > /etc/mysql/mysql8027/conf/my.cnf << “EOF”
[mysqld]
default-time-zone = ‘+8:00’
log_timestamps = SYSTEM
skip-name-resolve
log-bin
server_id=80273418
character_set_server=utf8mb4
default_authentication_plugin=mysql_native_password
EOF
3.3 登陆MySQL
mysql -uroot -pjeames -h 168.66.6.35
create database jemdb;
4. kettle迁移Oracle到MySQL
4.1 部署kettle
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行.
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
??? kettle的组成
整个流程一共分为两步:一是安装JAVA环境;二是下载kettle的安装包
??? 安装AVA JDK
下载jdk安装包后打开文件开始安装
添加以下3个变量
【1】JAVA_HOME:刚刚Java安装的路径,我的是:C:Program FilesJavajdk1.8.0_231
【2】CLASSPATH:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;
【3】配置环境变量Path
双击Path,添加“%JAVA_HOME%in”;添加“%JAVA_HOME%jrein”。
Win+R键弹出运行窗口,输入cmd,回车运行
分别输入“java -version”,“javac”进行测试,显示以下内容说明配置成功
??? 下载kettle安装包
这里我们选择7.1版本
下载完成解压到任意路径,打开文件夹,找到Spoon.bat,创建桌面快捷方式,打开
??? 数据库驱动包下载
将mysql驱动和oracle驱动放在kettle包下面的lib包下面即可。
MySQL JDBC 驱动下载
文件后缀名为 .tar.gz 的是Linux/IOS的压缩包;后缀为 .zip 的是Windows下的压缩包,
根据系统选择下载。
下载这个版本即可:mysql-connector-java-5.1.49-bin.jar
Oracle JDBC 驱动下载
??? 数据库连接
A.建立转换
在文件->新建装换,新建转换后在左边的主对象树中建立DB连接用以连接数据库
B.数据库连接MySQL
C.数据库连接Oracle 12C
4.2 Oracle端数据校验
## 创建测试表
[email protected]> conn jemmes/[email protected]
@/home/oracle/demo_ora_create.sql
@/home/oracle/demo_ora_insert.sql
create table flower(
id varchar2(32) default sys_guid() primary key,
flower_name varchar2(200),
color varchar2(100),
origin varchar2(200),
moral varchar2(200),
create_time timestamp default sysdate,
update_time timestamp
);
[email protected]> insert into flower(flower_name) values('dd');
--oracle所有表
[email protected]> select * from tab;
--迁移前相关检查
col TABLE_NAME format a30
SELECT a.table_name,a.num_rows FROM dba_tables a where a.OWNER='JEMMES' ;
select object_type,count(*) from dba_objects where owner='JEMMES' group by object_type;
select object_type,status,count(*) from dba_objects where owner='JEMMES' group by object_type,status;
select sum(bytes)/1024/1024 from dba_segments where owner='JEMMES';
4.3 迁移Oracle到MySQL
复制多表
完成后,会自动生成如下的执行树:
点击run,开始执行即可:
4.4 迁移后MySQL数据验证
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
随机推荐
数据库原理作业3 — JMU
随机数,函数
银河麒麟v10 sp1 安装 PostgreSQL 11.16
三本毕业,中途转行软件测试,顶着这些光环从月薪7k干到20k+,感觉还不错
APP测试:测试流程及常规测试内容
记录一下,今天开始刷剑指offer
定位元素之后操作对象
浅析瀑布流布局原理及实现方式
Oracle入门 10 - Linux 设备类型与文件目录结构
VNC 启动脚本
DOM-DOM的介绍以及通过方法获取元素
浅析v-model语法糖的实现原理与细节知识及如何让你开发的组件支持v-model
第一次实践——计算器
读写文件,异常,模块和包
Koa框架的基本使用
11.0 堆参数调优入门之堆参数调整
What is float?What is document flow?Several ways and principles of clearing floats?What is BFC, how to trigger BFC, the role of BFC
【内网开发日记】用websocket手搓一个聊天软件
Oracle入门 11 - Linux 开关机及系统进程命令
ES6-class类