Docker容器遷移Oracle到MySQL的實現方法
前言 Kettle是開源的 【TEL】 工具,JVAV編寫,可以運行在多個平臺,使用時有圖形界面、命令腳本,還可以二次開發。用於數據抽取、轉存等,非常方便
⛳️ 1. 創建專用網絡
docker network create --subnet=168.66.6.0/24 db-network [root@docker ~]# 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 創建業務用戶
[root@jeames ~]# docker exec -it jemora1221 bash [root@jemora1221 /]# su - oracle [oracle@jemora1221 ~]$ sqlplus / as sysdba SYS@jem> startup SYS@jem> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 JEMPDB MOUNTED alter pluggable database JEMPDB open; SYS@jem> select con_id,dbid,NAME,OPEN_MODE from v$pdbs; SYS@jem> alter session set container=JEMPDB; SYS@jem> create user jemmes identified by jemmes SYS@jem> GRANT DBA to jemmes ;
✨ 2.4 監聽啟動
[oracle@jemora1221 ~]$ cd $ORACLE_HOME/network [oracle@jemora1221 network]$ cd admin ## 配置TNS,後續連接數據庫 [oracle@jemora1221 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
查看容器
[root@jeames ~]# docker ps --format “table {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.ID}}\t{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.Names}}\t{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.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 Files\Java\jdk1.8.0_231
【2】CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
【3】配置環境變量Path
雙擊Path,添加“%JAVA_HOME%\bin”;添加“%JAVA_HOME%\jre\bin”。
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端數據校驗
## 創建測試表 SYS@jem> conn jemmes/jemmes@JEMPDB @/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 ); JEMMES@JEMPDB> insert into flower(flower_name) values('dd'); --oracle所有表 JEMMES@JEMPDB> 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數據驗證
到此這篇關於Docker容器遷移Oracle到MySQL的實現方法的文章就介紹到這瞭,更多相關Docker遷移Oracle到MySQL內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Oracle數據庫失效對象處理詳情
- 使用Docker制作Python環境連接Oracle鏡像
- 通過LogMiner實現Oracle數據庫同步遷移
- 如何在mac上用docker對Oracle進行部署使用
- Oracle中的table()函數使用