数据库迁移的几种方式
數(shù)據(jù)遷移(Data migration)是指在存儲類型、格式和計(jì)算機(jī)系統(tǒng)之間的數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)遷移當(dāng)一個機(jī)構(gòu)決定使用新的計(jì)算系統(tǒng)或與當(dāng)前的系統(tǒng)不兼容的數(shù)據(jù)管理系統(tǒng)時是必須的。數(shù)據(jù)遷移通常有計(jì)劃的執(zhí)行來完成一個自動的遷移,從單調(diào)的任務(wù)中解放人力資源。當(dāng)機(jī)構(gòu)或個人改變計(jì)算機(jī)系統(tǒng)或升級到新的系統(tǒng)時需要它。
一、exp/imp邏輯備份與恢復(fù):
二、Storage存儲遷移:
將數(shù)據(jù)文件、控制文件、日志文件、spfile掛到新機(jī)器上,然后在新機(jī)器上啟動數(shù)據(jù)庫。
三、利用data guard遷移:
四、用rman做遷移:
我們常常需要對數(shù)據(jù)進(jìn)行遷移,遷移到更性能配置更高級的主機(jī)OS上、遷移到遠(yuǎn)程的機(jī)房、遷移到不同的平臺下,以下介紹ORACLE的幾種數(shù)據(jù)庫遷移方案:
一、exp/imp邏輯備份與恢復(fù):
它是最常用最簡單的方法,一般是基于應(yīng)用的owner級做導(dǎo)出導(dǎo)入。
操作方法為:
在新庫建立好owner和表空間,停老庫的應(yīng)用,在老庫執(zhí)行:
$ exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,
導(dǎo)入dmp文件到新庫,在新庫執(zhí)行如下命令:
$ imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.
優(yōu)缺點(diǎn):優(yōu)點(diǎn)是可以跨平臺使用;缺點(diǎn)是停機(jī)時間長,停機(jī)時間為從exp到網(wǎng)絡(luò)傳輸?shù)叫聨欤偌由蟟mp的時間。
二、Storage存儲遷移:
這種情況下,數(shù)據(jù)文件、控制文件、日志文件、spfile都在存儲上(一般情況下是裸設(shè)備),我們可以直接把存儲掛到新機(jī)器上,然后在新機(jī)器上啟動數(shù)據(jù)庫。
操作方法:將老庫的pfile(因?yàn)槔锩嬗兄赶蚵阍O(shè)備的spfile鏈接),tnsnames.ora,listener.ora,密碼文件傳到新庫的對應(yīng)位置。將存儲切至新機(jī),或者用文件拷貝或dd的方式復(fù)制數(shù)據(jù)文件,啟動數(shù)據(jù)庫。
優(yōu)缺點(diǎn):優(yōu)點(diǎn)是該遷移方式非常簡單,主要的工作是主機(jī)工程師的工作,dba只需配合即可,停機(jī)時間為停庫、切存儲、起庫的時間;缺點(diǎn)是要求新老庫都是同一平臺,是相同的數(shù)據(jù)庫版本。
三、利用data guard遷移:
用dg我們不僅可以用來做容災(zāi),物理的dg我們還可以作為遷移的方式。
操作方法:可見http://www.oracleblog.cn/study-note/dg-created-by-rman/或者
http://www.oracleblog.cn/study-note/create-dg-by-rman-one-datafile-by-one-datafile/或者其他相關(guān)網(wǎng)文。注意switch over之后,可以將dg拆掉,去掉log_archive_dest_2、FAL_SERVER、FAL_CLIENT、standby_file_management參數(shù)。另外還要注意如果用rman做dg,注意手工添加tempfile。
優(yōu)缺點(diǎn):優(yōu)點(diǎn)是停機(jī)時間短,停機(jī)時間為switch over的時間;缺點(diǎn):主機(jī)必須雙份、存儲必須雙份。
四、用rman做遷移:
rman比較適合于跨文件系統(tǒng)的遷移,如同平臺下的不同文件系統(tǒng)。
操作方法:
1.停第三方的歸檔備份,如legato或dp;
2.backup數(shù)據(jù)庫;
數(shù)據(jù)庫間數(shù)據(jù)遷移常見工具和方法:
DB2DB 是目前經(jīng)過測試速度最快、最穩(wěn)定實(shí)現(xiàn)多種數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)轉(zhuǎn)換的工具。支持 SQL Server、MySQL、SQLite、Access 等多種數(shù)據(jù)庫類型,通過該工具可以把原來的系統(tǒng),方便快速地部署在不同的數(shù)據(jù)庫甚至是云端數(shù)據(jù)庫下。在大數(shù)據(jù)情況下(千萬級別以上),處理速度比國內(nèi)外同類軟件要高出300%以上。并針對云端數(shù)據(jù)庫中使用最多的 MySQL 數(shù)據(jù)庫進(jìn)行優(yōu)化,使得從源數(shù)據(jù)庫復(fù)制到新數(shù)據(jù)庫時保留更多的數(shù)據(jù)表屬性設(shè)置。這樣大大減少程序員、DBA、實(shí)施人員將大型數(shù)據(jù)庫進(jìn)行遷移時的等待、測試和調(diào)試時間,減少公司為了測試某系統(tǒng)轉(zhuǎn)換到新數(shù)據(jù)庫系統(tǒng)時的人力成本。
————————————————
項(xiàng)目需要對oracle數(shù)據(jù)遷移到MySQL中,搜集了一些方法和工具,現(xiàn)在做一個匯總和總結(jié),較好的有以下幾種:
1、SQLyog(https://link.zhihu.com/?target=https%3A//www.webyog.com/product/sqlyog)
SQLyog是世界著名的Webyog公司出品的一款簡潔高效、功能強(qiáng)大的圖形化MySQL數(shù)據(jù)庫管理工具。使用SQLyog,可以快速直觀地讓我們從世界上任何角落通過網(wǎng)絡(luò)來維護(hù)遠(yuǎn)端的MySQL數(shù)據(jù)庫。
2、 intelligent-converters 的 oracle-to-mysql (https://link.zhihu.com/?target=http%3A//www.convert-in.com/)
外國軟件,官網(wǎng)說法一般的i7可達(dá)2萬/秒。
3、DB2DB(https://link.zhihu.com/?target=http%3A//www.szmesoft.com/DB2DB)
國內(nèi)深圳的軟件,官網(wǎng)介紹說在大數(shù)據(jù)情況下(千萬級別以上),處理速度比國內(nèi)外同類軟件要高出300%以上。
4、MySQLMigration Toolkit免費(fèi)
MySQLMigration Toolkit是一款很不錯的將其他數(shù)據(jù)源轉(zhuǎn)換成mysql的工具。這個 Mysql官方提供的工具。
5、Navicat Premium
這個不多做介紹,都知道的。
6、kettle等ETL工具
很多ETL工具帶有從一個數(shù)據(jù)庫讀取寫入另一個數(shù)據(jù)庫的功能。
7、自己編寫
利用JAVA、R、python等編寫程序進(jìn)行數(shù)據(jù)轉(zhuǎn)移。
限制遷移的速度中除了工具性能外,估計(jì)在網(wǎng)絡(luò)速度方面也會有較大限制;按照每秒可以達(dá)到10M(萬條數(shù)據(jù)左右)的網(wǎng)絡(luò)傳輸速度,1T需要1024*1024/3600*10約30小時,實(shí)際估計(jì)還沒有這么快。具體的方法工具使用網(wǎng)上有比較多的教程。
————————————————
總結(jié)
以上是生活随笔為你收集整理的数据库迁移的几种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用c语言设计一个任意20个数升序排列,编
- 下一篇: 玩转电脑的前提就是要先玩转Bios