代码改变世界

随笔分类 - 01.MySQL

Windows下PowerShell监控Keepalived

2015-03-31 21:13 by 听风吹雨, 2157 阅读, 收藏, 编辑
摘要: 一、背景 某数据库服务器为CentOS,想要监控Keepalived的VIP是否有问题,通过邮件进行报警,但这台机器不能上外网,现在只能在Windows下通过PowerShell来完成发邮件预警。 二、脚本详情 1.创建名为:ping-ip.ps1的PS脚本,代码如下所示: # ping 192.168.1.51 Test-Connection 192.168.1.51 -Count 2 ... 阅读全文

Windows下搭建MySQL Master Slave

2013-08-09 14:35 by 听风吹雨, 7190 阅读, 收藏, 编辑
摘要: 一、背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切换,有什么好的方案呢? 二、几种Master/Slave逻辑架构图 clip_image001 (Figure1:单Master-单Slave) (Figure2:单Master-多Slave) (Figure3:单Master-级联Slave) (Figure4:Master/Slave部署逻辑图) 三、搭建过程 环境:Windows Server 阅读全文

MySQL表数据迁移自动化

2013-03-15 17:36 by 听风吹雨, 17404 阅读, 收藏, 编辑
摘要: 一、背景之前我写过关于SQL Server的数据迁移自动化的文章:SQL Server 数据库迁移偏方,在上篇文章中设计了一张临时表,这个临时表记录搬迁的配置信息,用一个存储过程读取这张表进行数据的迁移,再由一个Job进行迭代调用这个存储过程。在这次MySQL的实战中,我的数据库已经做了4个分片,分布在不同的4台机器上,每台机器上的数据量有1.7亿(1.7*4=6.8亿),占用空间260G(260*4=1040G),这次迁移的目的就是删除掉一些历史记录,减轻数据库压力,有人说这为什么不使用表分区呢? 阅读全文

MySQL当批量插入遇上唯一索引

2013-01-04 11:48 by 听风吹雨, 16367 阅读, 收藏, 编辑
摘要: 一、背景以前使用SQL Server进行表分区的时候就碰到很多关于唯一索引的问题:Step8:SQL Server 当表分区遇上唯一约束,没想到在MySQL的分区中一样会遇到这样的问题:MySQL表分区实战。今天我们来了解MySQL唯一索引的一些知识:包括如何创建,如何批量插入,还有一些技巧上SQL;这些问题的根源在什么地方?有什么共同点?MySQL中也有分区对齐的概念?唯一索引是在很多系统中都会出现的要求,有什么办法可以避免?它对性能的影响有多大? 阅读全文

MySQL定时器Events

2012-12-24 17:11 by 听风吹雨, 36502 阅读, 收藏, 编辑
摘要: 一、背景我们MySQL的表A的数据量已经达到1.6亿,由于一些历史原因,需要把表A的数据转移到一个新表B,但是因为这是线上产品,所以宕机时间需要尽量的短,在不影响数据持续入库的情况下,我希望能通过作业(定时器Events)的形式慢慢搬迁这些数据。在MySQL作业的执行过程中有一个问题是让人比较郁闷的,就是如果频率很快,快到作业还没有执行完成的话,作业就会被重复执行,这点跟SQL Server的不一样的,如果想达到类似SQL Server作业的串行效果,只有当作业执行完毕 阅读全文

Ubuntu10下MySQL搭建Amoeba_读写分离+分片

2012-12-03 10:35 by 听风吹雨, 2706 阅读, 收藏, 编辑
摘要: 一、背景知识之前已经写了一篇关于Amoeba读写分离:Ubuntu10下MySQL搭建Amoeba_读写分离,上篇文章只是简单的测试下搭建读写分离,这里再加上一点的内容,在读写分离的基础上再加入分片。阅读本篇文章之前建议你先阅读:Ubuntu10下MySQL搭建Master/SlaveUbuntu10下搭建MySQL Proxy读写分离测试内容:把数据分片到Master1与Master2,再由Master1同步到Slave1,Master2同步到Slave2,把对数据的读取分布到Slave1和Slave2。二、搭建过程(一)测试环境Amoeba for MySQL:192.168.1.147M 阅读全文

Ubuntu10下搭建MySQL Proxy读写分离

2012-11-21 15:42 by 听风吹雨, 6599 阅读, 收藏, 编辑
摘要: MySQL Proxy是一个处于你的Client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。 (Figure1:MySQL Proxy) MySQL-Proxy, announced in June, is a binary application that sits between your MySQL client and server, and supports the embedded scripting language Lua. The proxy can be used to analy 阅读全文

Ubuntu10下MySQL搭建Amoeba_读写分离

2012-11-16 18:23 by 听风吹雨, 2519 阅读, 收藏, 编辑
摘要: 一、背景知识Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。要想搭建Amoeba读写分离,首先需要知道MySQL的主从配置,可参考:Ubuntu10下MySQL搭建Master/Slave,更好的情况下是你还需要了解MySQL-Proxy,可参考:Ubuntu10下搭建MySQL Proxy读写分离二、搭建过程(一)测试环境Amoeba for MySQL:192.168.1.147Master:192 阅读全文

Ubuntu10下MySQL搭建Master Slave

2012-10-23 15:15 by 听风吹雨, 3639 阅读, 收藏, 编辑
摘要: 一、背景知识(一)ReplicationMySQL的replication是异步的,适用于对数据实时性要求不是特别关键的场景。slave端的IO线程负责从master读取日志,SQL线程专门负责在slave端应用从master读过来的日志。 使用replication必须启用binary log,MySQL用binary log向slave分发更新。(二)复制级别1. Row Level:5.1.5开始支持。mater记录每行数据的更改日志,slave根据日志逐行应用。优点:数据一致性更有保障。缺点:可能造成日志文件比较大;2. Statement Level:maste 阅读全文

MySQL多Text字段报8126错误(解决过程)

2012-09-20 18:11 by 听风吹雨, 24482 阅读, 收藏, 编辑
摘要: 一、背景我们的MySQL数据库有一张10个Text的字段的表,还包括几个char和varchar字段,由于业务需求,我在表中加多一个Text字段的时候,插入记录的出现了下面的错误:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs (图1:错误信息)二、过程首先我们执行下面的SQL,查看这个表的相关信息:SHOW TABLE STATUS LIKE 'e 阅读全文

Windows下安装MySQL最佳实践

2012-06-19 09:15 by 听风吹雨, 10807 阅读, 收藏, 编辑
摘要: 一、背景其实在Windows下安装MySQL可谓是一件很简单的事情,只要对着安装界面点击下一步就行了!真的是这样嘛?也许在个人电脑可以这样安装,但是在服务器也是这么随便的?答案是否定的。今天就针对Microsoft Windows Server 2003 R2 Enterprise x64 Edition Service Pack 2操作系统进行安装MySQL,为了配合64位的操作系统,我选用了64位的MySQL:mysql-5.5.22-winx64.msi这个MySQL版本。这种通过操作界面来安装MySQL也是需要注意参数的设置的,所以这里给出一个范例 阅读全文

Ubuntu10下MySQL搭建Amoeba系列(文章索引)

2012-06-12 18:57 by 听风吹雨, 6918 阅读, 收藏, 编辑
摘要: 前言 使用了Amoeba有一段时间了,发现官方博客:Amoeba使用指南有很多地方都是错误的,在我实战中给到一些错误的指示,所以我想写些在搭建的实战中给大家一点指引。欢迎对我这个系列的文章提出批评和建议,特别是技术上的建议。 Amoeba读写分离+分片逻辑图 下面是我画得关于Amoeba读写分离和分片的逻辑图: 系列文章索引 Ubuntu10下安装JAVA JDK Ubuntu10下MySQL搭建Amoeba_基础 Ubuntu10下MySQL搭建Amoeba_分片 阅读全文

Ubuntu10下安装JAVA JDK

2012-06-12 10:10 by 听风吹雨, 3758 阅读, 收藏, 编辑
摘要: 一、背景Amoeba for MySQL需要在Java SE 1.5和Java SE 1.6上运行,一开始我按照Amoeba for MySQL学习研究之安装的方法在Java SE Development Kit 6 Update 31下载了jdk-6u31-linux-i586-rpm.bin,安装到Ubuntu的时候出错了,后来才发现是我下载的软件包不符合系统:bin是二进制包,而rpm是redhat package 就是红帽的标准安装包,还有deb包,是debain的标准,区别就是rpm、deb安装的时候给你自动配置,一般都是lib安装到/usr/lib, bin安装到/usr/bin下 阅读全文

Ubuntu10下MySQL搭建Amoeba_分片升级版

2012-05-21 16:39 by 听风吹雨, 1728 阅读, 收藏, 编辑
摘要: 一、背景知识Amoeba的简单进行分片,比如对int类型的ID字段进行取模分片,实例可以参考:Ubuntu10下MySQL搭建Amoeba_分片,但是如果ID字段是UUID类型的呢?这个时候我们应该如何分片呢?这篇文章将会为你解决这个问题。二、搭建过程(一)测试环境Amoeba for MySQL:192.168.1.147server1:192.168.1.25server2:192.168.1.30server3:192.168.1.35数据库为:DBA_DB,帐号密码统一为:test/123456(二)前期准备1. 验证Amoeba是否安装成功的命令(如下图):/usr/local/am 阅读全文

Ubuntu10下MySQL搭建Amoeba_分片

2012-04-12 18:49 by 听风吹雨, 2525 阅读, 收藏, 编辑
摘要: 一、背景知识"Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,"Sharding" 姑且称之为"分片"。Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。Sharding 基本上是针对开源数据库的扩展性解决方案,很少有听说商业数据库进行 Sharding 的。目前业界的趋势基本上是拥抱 Scale Out,逐 阅读全文

Ubuntu10下MySQL搭建Amoeba_基础

2012-04-09 20:00 by 听风吹雨, 5235 阅读, 收藏, 编辑
摘要: 一、背景知识Amoeba 是阿里巴巴的技术陈思儒开始的一个开源项目,它是分布式数据库Proxy解决方案。Amoeba框架是基于Java SE 1.5开发的,在安装Amoeba之前需要先安装Java环境。经验证,Amoeba在Java SE 1.5和Java SE 1.6上能正常运行。(一)Amoeba包括3个产品:Amoeba From Sourceforge1. Amoeba for MySQL是Amoeba开源社区发布的一款MySQL数据库中间层代理软件,致力于数据库的切分整合、负载均衡、高可用性等;2. Amoeba for Aladdin支持所有提供jdbc驱动的数据库(Oracle、 阅读全文