· 背景
? ? 公司要把一些老設備退服,一些陪伴我多年的 DB 要下線了,舍不得。正好借此機會,手賤把自己 3 個"回收站" DB 遷移到 MySQL 上,也算是趕一把時髦。等真正看著這些老設備下線了的那一天,也會不盡感嘆一個時代結束了。
· 心得
- 芒果:愛你不容易,開始我想是往上遷,因為文檔多 /API 多,游刃有余,支持不規則列,最符合我的需要。可惜,除了字符集之外。。。詳見后面第 7 點。
- 共享 OR 獨立:最早碰到的問題當屬目標數據庫的容量和存儲設計,兩者表空間管理上各有優勢。開始一心想用 Raw 設備 +innodb ,但發現在共享和獨立表空間上出現了卡殼,共享表空間可以發揮 RAW 設備優勢,但是獨立表空間怎么配置貌似都無法支持。不過好在我的單表 MAX 大約 15G ,最大記錄數在 7E 不到。算了還是圖方便,獨立吧,棄用 RAW 。大家遷移前可以 MAX 下原表 dba_segments 。對未來也算有個數了。
- EXT3 OR EXT4 :由于沒有了 RAW 設備,在建盤的時候沒有多想,等命令敲下去,發現建成 EXT3 ,于是找理由安慰自己。有機會再改 EXT4 吧。
- DATE 轉 DATETIME/TIMESTAMP :這個算是比較麻煩的,原先無論是 C/JAVA 的函數還是 CONTROLFILE ,對于日期時間處理都能個性化設置,方便了外部程序的各種時間形式。但當入 MYSQL 表時候就得嚴格遵守了,尤其是 LOAD DATA ,找了半天也沒找到 SKIP ,這點上 ORACLE 還是比較厚道的。好吧,只能這樣了。一個個程序得改。
- WITHOUT UPDATE PID FILE :我 X ,真心迷宮啊。最早是在自己 VM+CENTOS 上測試,一改數據目錄就報錯了,最后發現居然是 SELINUX 的問題。紅帽默認 DISABLE ,良心啊。改完之后,各種破壞測試一路推平。
- DBLINK :這個東西純技術角度上將是個神器,但管理上會有很大麻煩。為了遷移歷史數據,當然希望是越方便越好,有 ORACLE 到 MYSQL 的,但反向的沒有。怎么辦呢?之后自己動手寫腳本遷移。話說 ORACLE 收購了它也有段時日了,怎么不融通一下呢?
- 圖形工具:又一個大坑。個人信仰:"任何再 NB 的軟件,最終無法逃不了用戶 CTRL+C/CTRL+V 的雙指"。最直接的問題,我也復制 1~N 列怎么辦?我要智能聯想怎么辦?。有時候,個人覺得 ORACLE 的成功之后 80% 歸功于 PL/SQL 。這個需求到 MYSQL 上理所當然需要繼承。于是從各種 GUI 工具試了一把,最終選定了 Navicat 。
- SHOW PARAMETERS :從 ORACLE 改 MYSQL ,當然這一關少不了。粗糙點講: SGA 按比例擴大后打 9 折設定 INNODB_BUFFER_POOL,REDOLOG 按比例擴大設定 LOG_BUFFER 。其他自己按需微調吧。
- PROC/FUNCTION :這塊原來庫中用的不多,暫時先按著新語法改。另外一些 VARCHAR 最長 LENGTH INDEX 就不多說了。
- DDL : ORACLE 比較厚道也比較蛋疼,我也比較懶,最好一鍵把 DDL+INDEX 結構導入新表,這個會有很多細節上麻煩,算了,還是自己弄個 SHELL 過渡過去吧。小心 INDEX 。
- 八國聯軍: Oracle 確實很強大,也充分展現著美帝強大的霸權主義,眼紅什么買什么。切記:人心不足蛇吞象,難怪股價上不去。
最后,我把整個操作中的過程展現一下,供感興趣的朋友參考,輕拍磚 ~ !
?
· 命令日志(從無到有,供參考)
==準備素材==
vim /etc/selinux/config SELINUX=disabled Yum –e mysql* Yum install –y cron* /etc/init.d/crond restart cd /usr/share/selinux setenforce 0 tar -xvf MySQL-5.6.12-1.el6.x86_64.rpm-bundle.tar rpm -qa|grep -i mysql yum -y remove mysql-libs* rpm -e mysql* rpm -ivh MySQL-server-5.6.12-1.el6.x86_64.rpm rpm -ivh MySQL-client-5.6.12-1.el6.x86_64.rpm rpm -ivh MySQL-devel-5.6.12-1.el6.x86_64.rpm service mysql stop cp ./usr/share/doc/MySQL-server-5.6.12/my-default.cnf /etc/my.cnf vim /etc/my.cnf
==準備盤==
mkdir /mydata chown mysql:mysql -R /mydata 關機加盤 fdisk -l認盤 fdisk /dev/sdb 輸入m、輸入n、輸入PrimaryPartID,2,回車到底,輸入w start_udev 為后續RawDevice做準備 vgcreate -s 4M datavg /dev/sdb lvcreate -L 980M -n data_lv datavg mke2fs -j -b 4096 /dev/datavg/data_lv mount -t ext4 /dev/datavg/data_lv /mydata mv /var/lib/mysql /mydata vim /etc/fstab /dev/mapper/datavg-data_lv /mydata ext3 defaults 0 0 Reboot 測試,看自動加載。
==DB參數調整==
Service mysql stop Mv /var/lib/mysq /mydata mysql_install_db --user=mysql --datadir=/mydata chown –R mysql:mysql /mydata cat /root/.mysql_secret 拿密碼: service mysql start mysql -u root –pxxxxx mysql mysql> UPDATE user SET Password=PASSWORD('111') where USER='root'; mysql> FLUSH PRIVILEGES; mysql> quit; alias pp='ps –ef|grep –i mysql' service mysql restart mysql -uroot -p111 mysql> SET PASSWORD = PASSWORD('123'); mysql> show variables like '%char%'; mysql> use mysql; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.137.1' IDENTIFIED BY '123' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.167.137.102' IDENTIFIED BY '123' WITH GRANT OPTION; mysql> select user,host from user; mysql> set sql_mode='no_auto_create_user,no_engine_substitution'; db2db.sh Reboot 測試,看能否自動啟動。
?== DB2DB.sh==
所在位置? https://github.com/zacard-orc/Zacard_DB2DB
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
