脱O把妹,记录这一周来迁移至MySQL的一些心得

系统 1590 0

· 背景

    公司要把一些老设备退服,一些陪伴我多年的 DB 要下线了,舍不得。正好借此机会,手贱把自己 3 个"回收站" DB 迁移到 MySQL 上,也算是赶一把时髦。等真正看着这些老设备下线了的那一天,也会不尽感叹一个时代结束了。

· 心得

  1. 芒果:爱你不容易,开始我想是往上迁,因为文档多 /API 多,游刃有余,支持不规则列,最符合我的需要。可惜,除了字符集之外。。。详见后面第 7 点。
  2. 共享 OR 独立:最早碰到的问题当属目标数据库的容量和存储设计,两者表空间管理上各有优势。开始一心想用 Raw 设备 +innodb ,但发现在共享和独立表空间上出现了卡壳,共享表空间可以发挥 RAW 设备优势,但是独立表空间怎么配置貌似都无法支持。不过好在我的单表 MAX 大约 15G ,最大记录数在 7E 不到。算了还是图方便,独立吧,弃用 RAW 。大家迁移前可以 MAX 下原表 dba_segments 。对未来也算有个数了。
  3. EXT3 OR EXT4 :由于没有了 RAW 设备,在建盘的时候没有多想,等命令敲下去,发现建成 EXT3 ,于是找理由安慰自己。有机会再改 EXT4 吧。
  4. DATE DATETIME/TIMESTAMP :这个算是比较麻烦的,原先无论是 C/JAVA 的函数还是 CONTROLFILE ,对于日期时间处理都能个性化设置,方便了外部程序的各种时间形式。但当入 MYSQL 表时候就得严格遵守了,尤其是 LOAD DATA ,找了半天也没找到 SKIP ,这点上 ORACLE 还是比较厚道的。好吧,只能这样了。一个个程序得改。
  5. WITHOUT UPDATE PID FILE :我 X ,真心迷宫啊。最早是在自己 VM+CENTOS 上测试,一改数据目录就报错了,最后发现居然是 SELINUX 的问题。红帽默认 DISABLE ,良心啊。改完之后,各种破坏测试一路推平。
  6. DBLINK :这个东西纯技术角度上将是个神器,但管理上会有很大麻烦。为了迁移历史数据,当然希望是越方便越好,有 ORACLE MYSQL 的,但反向的没有。怎么办呢?之后自己动手写脚本迁移。话说 ORACLE 收购了它也有段时日了,怎么不融通一下呢?
  7. 图形工具:又一个大坑。个人信仰:"任何再 NB 的软件,最终无法逃不了用户 CTRL+C/CTRL+V 的双指"。最直接的问题,我也复制 1~N 列怎么办?我要智能联想怎么办?。有时候,个人觉得 ORACLE 的成功之后 80% 归功于 PL/SQL 。这个需求到 MYSQL 上理所当然需要继承。于是从各种 GUI 工具试了一把,最终选定了 Navicat
  8. SHOW PARAMETERS :从 ORACLE MYSQL ,当然这一关少不了。粗糙点讲: SGA 按比例扩大后打 9 折设定 INNODB_BUFFER_POOL,REDOLOG 按比例扩大设定 LOG_BUFFER 。其他自己按需微调吧。
  9. PROC/FUNCTION :这块原来库中用的不多,暂时先按着新语法改。另外一些 VARCHAR 最长 LENGTH INDEX 就不多说了。
  10. DDL ORACLE 比较厚道也比较蛋疼,我也比较懒,最好一键把 DDL+INDEX 结构导入新表,这个会有很多细节上麻烦,算了,还是自己弄个 SHELL 过渡过去吧。小心 INDEX
  11. 八国联军: 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

 

 

脱O把妹,记录这一周来迁移至MySQL的一些心得


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论