MySQL Amoeba实现DB主从读写分离
Amoeba(变形虫)项目,专注分布式数据proxy 开发.座落与Client、DB Server(s)之间.对客户端透明.具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果.
主要解决了哪些问题:
• 提供切分规则并降低数据切分规则给应用带来的影响
• 降低db 与客户端的连接数
• 读写分离
Amoeba(变形虫)项目,专注分布式数据proxy 开发.座落与Client、DB Server(s)之间.对客户端透明.具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果.
主要解决了哪些问题:
环境说明: Windows XP, Eclipse 3.5, MinGW 5.1.4, Mysql 5.1.36, CDT 3.1
在Eclipse下用CDT和MinGW编写C访问Mysql时会出现 undefined reference to `mysql_init@4′的问题,这是因为mingw编译时找不到静态库的原因,网上的解决办法一般是用:reimp.exe及dlltool.exe重新生成libmysql.def和libmysql.a,然后用libmysql.a。具体命令是:
奇怪的是用这这个办法生成的libmysql.a为0字节,后来查看有libmysql.lib文件,试着将其改名为libmysql.a,问题得到解决,具体解决步骤如下:
1、添加Mysql头文件:
方法1:项目->属性->C/C++ Build->Tool Settings->GCC C Compiler->Directories 中添加你的头文件所在目录,包括Mysql中的include目录。
方法2:将Mysql中的include目录拷到项目下的头文件目录下或MinGW的公共include目录下,目录改名为mysql。
2、添加用于gcc编译的mysql静态库文件
复制mysql安装目录中的\lib\opt\libmysql.lib为libmysql.a。
另外查询或插入记录时乱码问题的解决:
在mysql连接成功后,发出查询之前,加入如下代码
如有问题,请发邮件到 cdkey51@linuxany.com ,大家一起探讨。


There are a number of ways to improve the amount of time it takes visitors to load your Drupal powered web site.
There are many tools that can be used to measure page load performance on your website. Here are some that we recommend.
InnoDB is a transaction-safe, ACID compliant MySQL storage engine. It has commit, rollback, and crash recovery capabilities, and offers row level locking. The engine’s overview page explains, “InnoDB has been designed for maximum performance when processing large data volumes. Its CPU efficiency is probably not matched by any other disk-based relational database engine.” 继续阅读 »
mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行
long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,我生成的log就在mysql的data目录
log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。
继续阅读 »

1:用Dreamweaver或者别的代码编辑器打开从Mysql5导出的.sql数据库文件
2:去掉数据库里类似DEFAULT CHARSET=utf8这样的字眼
3:把Mysql数据库里的ENGINE=MyISAM替换成TYPE=MyISAM
4:再用PhpMyadmin导入Mysql4就可以了
先简单说一下各列的含义和用途,第一列,id,不用说了吧,一个标识,你要kill一个语句的时候很有用。user列,显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。host列,显示这个语句是从哪个ip的哪个端口上发出的。呵呵,可以用来追踪出问题语句的用户。db列,显示这个进程目前连接的是哪个数据库。command列,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。time列,此这个状态持续的时间,单位是秒。state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成,info列,显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。 继续阅读 »