· 背景

公司要把一些老设备退服,一些陪伴我多年的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的一些心得的更多相关文章

  1. 分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  2. 记录PHP post提交表单导入mysql中文乱码的问题

    记录记录PHP post提交表单导入mysql中文乱码的问题 关于乱码,这是个糟糕的问题!涉及到很多地方 解决思路:程序所涉及的环境字符集不一致导致 mysql出现乱码一般是mysql数据库内部的字符 ...

  3. 程序语言与编程实践4-> 蓝桥杯C/C++备赛记录2 | 第二周学习训练

    0323,又是一周星期三,按道理该总结了.这周前几天写题比较多,后面事情多了起来,就没怎么写了.主要方向是洛谷的基本语法熟悉,PTA平台数据结构的一些题目. 0323附上: 题目比较多,所以文章可能有 ...

  4. 记录下这周的mysql调优工作

    这周一至周四基本都在做mysql的测试和调优工作,包括erlang端对mysql的写入测试,到今天为止暂且告一段落,下周先做下其他的开发.    测试环境    使用的测试环境是aliyun的杭州节点 ...

  5. 分布式监控系统Zabbix-3.0.3-完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  6. 记录自己对EventLoop和性能问题处理的一点心得

    1.EventLoop 这里说的EventLoop不是指某一个具体的库或是框架,而是指一种程序实现结构.这种结构多是基于IO多路转接的API(select.poll.epoll之类)以reactor模 ...

  7. MySQL之 InnoDB记录结构(转自掘金小册 MySQL是怎样运行的,版权归作者所有!)

    以下内容来自掘金小册 MySQL 是怎样运行的:从根儿上理解 MySQL 版权归原作者所有! 页是MySQL中磁盘和内存交互的基本单位,也是MySQL是管理存储空间的基本单位. 指定和修改行格式的语法 ...

  8. 记录自己对EventLoop和性能问题处理的一点心得【转】

    转自:http://www.cnblogs.com/lanyuliuyun/p/4483384.html 1.EventLoop 这里说的EventLoop不是指某一个具体的库或是框架,而是指一种程序 ...

  9. SQL查询月、天、周、年(MySql的实例对比)

    SQL Server实现 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww w ...

随机推荐

  1. UVa 11069 - A Graph Problem

    题目:给你一个集合{1,2,..,n},计算子集的个数,子集的元素不能相邻且不能再插入元素. 分析:dp,动态规划.相邻元素间仅仅能相差3或者2. 动态方程:f(k)= f(k-2)+ f(k-3): ...

  2. Oracle中merge into的使用 (转)

    该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动. 1.ins ...

  3. 跳转表C语言,不比redis版本号

    本来跳表的原理很easy的(相对于红 - 黑树),但国庆间歇性地搞5天才捞起来-- 我学会了跳之前写表的链式结构完全基于,我看着写的过程中redis实现,它的每个键列都是用数组来表示的.细致想了想发现 ...

  4. 5、Cocos2dx 3.0小游戏开发的例子寻找测试三个简单的介绍和总结

    繁重的劳动开发商,当转载请注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 測试例子简单介绍 Cocos2d-x 为我们提供了 ...

  5. 大约cocos2d-X 3.x使用引擎版本自带的物理引擎Physics

    今天打算用BOX2D物理引擎, 我想我以前听说过一些时间cocos2d-X在3.0版本封装自己的物理引擎Physics, 听名字很霸气量, 这的确是一个比BOX2D非常多( 毕竟是基于BOX2D封装的 ...

  6. Java 内部类分析

    一.简介 因为现在是Android开发实习生.发现在发展过程中越来越多,但他们知道什么时候该使用真实的情况,但没有获得,例如,使用内部类,因此,学习和自己的总结后发现,通过互联网的信息,家分享,如有不 ...

  7. 微服务API Gateway

    翻译-微服务API Gateway 原文地址:http://microservices.io/patterns/apigateway.html,以下是使用google翻译对原文的翻译. 让我们想象一下 ...

  8. [Linux]于Mac在配置Linuxserver安装Nginx+PHP

    Linux 安装Debian系统 我安装的是Debian7.5的系统,Debian的软件包管理和升级十分方便,并且系统也非常稳定. 安装盘能够去华中科技大学镜像.网易开源镜像站或者中国科技大学镜像下载 ...

  9. C# 闭包问题

    C# 闭包问题-你被”坑“过吗? 引言 闭包是什么?以前看面试题的时候才发现这个名词. 闭包在实际项目中会有什么问题?现在就让我们一起来看下这个不太熟悉的名词. 如果在实际工作中用到了匿名函数和lam ...

  10. Git现实(一个)版本控制概述

    从今天开始.我们了解的分布式版本控制系统Git相关内容.了解Git之前,我们的第一个版本控制系统,使宏观的描述. 什么是版本号控制 版本号控制是指通过对文件内容的变化进行记录,并为每次的变化进行编号, ...