该系列三篇文章已经全部完成:
201806/refactor.png 我们用了两章文章 从 SQL Server 到 MySQL(一):异构数据库迁移 / 从 SQL Server 到 MySQL(二):在线迁移,空中换发动机 介绍我们遇到问题和解决方案。 不管是离线全量迁移还是在线无缝迁移, 核心 ETL 工具就是 yugong。
Yugong 是一个成熟工具, 在阿里巴巴去 IOE 行动中起了重要作用, 它与 Otter / Canal 都是阿里中间件团队出品。 它们三者各有分工: Yugong 设计目标是异构数据库迁移; Canal 设计用来解决 MySQL binlog 订阅和消费问题; Otter 则是在 Canal 之上,以准实时标准解决数据库同步问题。 Otter 配备了相对 yugong 更健壮管理工具、分布式协调工具, 从而长期稳定运行。Yugong 设计目标则是一次性迁移工作,偏 Job 类型。 当然 yugong 本身质量不错,长期运行也没问题。 我们有个产线小伙伴使用我们魔改后 yugong, 用来将数据从管理平台同步数据到用户前台,已经稳定跑了半年多了。
more ... 该系列三篇文章已经全部完成:
flying-tanker (image via https://pixabay.com/en/military-stealth-bomber-refueling-602729/ )
在上篇文章 从 SQL Server 到 MySQL (一):异构数据库迁移 - Log4D 中,我们给大家介绍了从 SQL Server 到 MySQL 异构数据库迁移的基本问题和全量解决方案。 全量方案可以满足一部分场景的需求,但是这个方案仍然是有缺陷的: 迁移过程中需要停机,停机的时长和数据量相关。 对于核心业务来说,停机就意味着损失。 比如用户中心的服务,以它的数据量来使用全量方案,会导致迁移过程中停机若干个小时。 而一旦用户中心停止服务,几乎所有依赖于这个中央服务的系统都会停摆。
能不能做到无缝的在线迁移呢?系统不需要或者只需要极短暂的停机? 作为有追求的技术人,我们一定要想办法解决上面的问题。
more ... 该系列三篇文章已经全部完成:
201803/migration-bird.png 背景 沪江成立于 2001 年,作为较早期的教育学习网站, 当时技术选型范围并不大: Java 的版本是 1.2,C# 尚未诞生,MySQL 还没有被 Sun 收购, 版本号是 3.23。 工程师们选择了当时最合适的微软体系,并在日后的岁月里, 逐步从 ASP 过度到 .net,数据库也跟随 SQL Server 进行版本升级。
十几年过去了,技术社区已经发生了天翻地覆的变化。 沪江的技术栈还基本在 .net 体系上,这给业务持续发展带来了一些限制。 人才招聘、社区生态、架构优化、成本风险方面都面临挑战。 集团经过慎重考虑,发起了大规模的去 Windows 化项目。 这其中包含两个重点子项目:开发语言从 C# 迁移到 Java, 数据库从 SQL Server 迁移到 MySQL。
本系列文章就是向大家介绍, 从 SQL Server 迁移到 MySQL 所面临的问题和我们的解决方案。
more ... sql-server.png 加入沪江不久,我就被扔到一个将集团 SQL Sever 的数据库迁移到 MySQL 的项目里, 同时伴随进行的还有 .net 系统迁移到 Java 系统。 在这个过程中我发现了一个很有趣的现象:历史遗留的 .net 项目中, 几乎所有的 SQL 中都会使用一个关键字:nolock
。 这让我很困惑,nolock
的字面意思是对当前技术不使用锁技术,为什么要这样用呢?
more ... more ... 以前用MySQL时候都是可视化界面,如MySQL Admin使用,现在学着使用MySQL Command Line client,初次接触,就遇到乱码问题。
乱码是中文字符串的,Google后,找到一些解决方案。摘录如下:
引用自今天去祸害哪家的闺女呢?<猛击这里打开 >
1:改变数据库的默认编码配置,在MYSQL的安装目录中,找到my.ini,修改默认编
码为:default-character-set=utf8
2:建立数据库时,CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE
utf8_general_ci;
3:执行脚本:指定编码格式set names utf8(注意,不是UTF-8)
4:如果你采用的是外部接入的方式,在连接中确定请求的编码格式如:
jdbc:mysql://localhost:3306 /ms_db?
useUnicode …
more ... 无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我 就将我的一点心得写出来跟大家分享。
一、数字类型 数字类型按照我的分类方法分为三类:整数类、小数类和数字类。
我所谓的「数字类」,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每 一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会「失真」,所以比较适合用于「价格」、 「金额」这样对精度要求不高但准确度要求非常高的字段。
小数类,即浮点数类型,根据精度的不同,有 FLOAT(单精度)和DOUBLE(双精度)两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约 1.17E- 38 (0.000…0117, 小数点后面有37个零)的小数,而DOUBLE更是可以表示绝对值小到约 …
more ... Ubuntu下的MySQL安装本应该很简单,但是如果因为修改了软件源的话,反而变得麻烦起来。
为了加快更新一些组件的速度,我加入了清华的、交大等大学的源,是8.04下Ubuntu版本的,这个直接导致了之后安装MySQL的问题。
当选择Mysql-server之后,需要一堆组建,要手动安装,基本上出现这种提示,就没戏了,硬着头皮查找软件包,最后到一个perl- api的软件包这里就再也进行不下去了。
Google了好一会,才有一个人的答案正确,说是8.10下用8.04的源就会有这种问题,我换成原始的备份了的源
下面就是原始的源,使用这个找到MySQL之后就一次成功了 ` # deb cdrom:[Ubuntu 8.10 Intrepid Ibex - Release i386 (20081029.5)]/ intrepid main restricted
more ... 正在学JSP,用的TomCat和MySQL,没有用CSV控制,所以数据库靠导出导入
导出:
cd bin;
mysqldump -uroot -proot xxx > xxx.sql;
导入:
cd bin;
create xxx;
source xxx.sql;
more ...