日志分类:MySQL

用 MySQL-Proxy 实现 MySQL 主从模式下的读写分离

2008-07-13,星期日 | 分类:Linux, MySQL, Redhat/CentOS | 标签: | 342 Views

准备所需的软件:
读写分离脚本是由 lua 语言编写的,需要安装 lua
http://www.lua.org/
下载适合的 MySQL-Proxy 版本
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/

安装依赖的库:
yum -y install readline-devel
Installing for dependencies: libtermcap-devel

安装 lua:
tar zxvf lua-5.1.3.tar.gz
cd lua-5.1.3
make linux
make install

安装 MySQL-Proxy:
tar zxvf mysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz
cd mysql-proxy-0.6.1-linux-rhel4-x86-32bit
mv sbin/mysql-proxy /usr/local/sbin/
mv share/mysql-proxy /usr/local/share/
strip /usr/local/sbin/mysql-proxy
全文阅读 »

iconv 解决 MySQL 乱码问题

2006-07-27,星期四 | 分类:MySQL | 标签: | 543 Views

从 Windows 下的 MySQL 导出的 sql 文件再导入到 Linux 下的 MySQL ,所有字段的中文内容都变成了乱码。
 
$ file -i sql1.sql
sql1.sql: text/plain; charset=utf-8
 
发现 sql 文件的编码是 utf-8 ,这与 Linux 下 MySQL 数据库默认的 gbk 编码不相符。
 
$ iconv -f utf-8 -t gbk -o sql2.sql sql1.sql
生成编码为 gbk 的 sql 文件再导入就可以了。
 
不过,发现个问题:
$ file -i sql2.sql
sql2.sql: text/plain; charset=unknown
 
看来,file 不支持 gbk 编码。

mtop 实时监控 MySQL

2006-07-17,星期一 | 分类:MySQL | 标签: | 3,208 Views

Requires the following perl modules:
 
    Module             Available At
    ------------     --------------------------------------------------------
    Curses              http://cpan.linuxforum.net/authors/id/G/GI/GIRAFFED
    DBI                  Distributed as Bundle::DBI: http://www.cpan.org/authors/id/TIMB
    DBD::mysql        http://www.cpan.org/modules/by-module/DBD
    Getopt::Long     (Distributed with Perl 5)
    Net::Domain      Part of libnet: http://www.cpan.org/authors/id/GBARR

# perl -e 'use Curses'
# perl -e 'use DBI'
# perl -e 'use DBD::mysql'
# perl -e 'use Getopt::Long'
# perl -e 'use Net::Domain'
 
没有输出就是模块已经安装了,有错误就是相应的模块没有安装。
可以在上面给出的地址下载相应模块的最新版本。

安装所需的 Perl 模块:
# tar zxvf Curses-x.xx.tar.gz
# cd Curses*
# perl Makefile.PL
# make
# make install
 
yum 仓库里有 perl-DBI ,所以直接 yum 安装,
# yum -y install perl-DBI
 
因为是编译安装的 MySQL ,所以需要把 lib 的路径加入 ld.so.conf ,
# vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql
# ldconfig
 
虽然 yum 仓库里有 perl-DBD-MySQL ,但其依赖 mysql ,所以还是编译安装,
# tar zxvf DBD-mysql-x.xxxx.tar.gz
# cd DBD-mysql*
# perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config
# make
# make install
 
安装 mtop :
# tar zxvf mtop-0.6.6.tar.gz
# cd mtop-0.6.6
# perl Makefile.PL
# make
# make install
 
添加相应的 MySQL 数据库用户:
# mysql -uroot -pPASSWORD
mysql> GRANT RELOAD,PROCESS,SUPER ON *.* TO 'mtop'@'localhost' IDENTIFIED BY 'mtop';
mysql> FLUSH PRIVILEGES;
mysql> exit
 
运行:
因为自定义了 mysql.sock 的位置,所以需要做个链接 mtop 才能运行,
# ln -s /var/run/mysqld/mysql.sock /tmp/mysql.sock
 
# mtop --dbuser=mtop --password=mtop
 
参考资料:http://mtop.sourceforge.net/

ProFTPD & MySQL 4.0 的超时中断连接问题

2006-05-18,星期四 | 分类:FTP, MySQL | 标签: | 486 Views

MySQL 的 interactive timeout 缺省设置为 28800 秒,这个值实在太大了,根据程序与数据库交互的状况把这个值改小了,结果使用 MySQL 4.0 的 ProFTPD 频繁断线。
SHOW PROCESSLIST;
发现操作 ProFTPD 数据库进程的运行时间在不停增加,直到达到 interactive timeout 参数定义的时间后才断开,这时,客户端与 ProFTPD 的连接也就断开了。
 
其它使用 MySQL 4.1 的 ProFTPD 没有这样的问题,看不到操作 ProFTPD 数据库的进程。(ProFTPD 的版本都是相同的)
 
也就是说,ProFTPD 使用 MySQL 4.0 验证用户时是建立的“持久”连接,只要客户端有操作就会去查询数据库,对客户端身份进行验证;而在使用 MySQL 4.1 时,只是在登陆时查询数据库验证身份,成功登陆后便由 ProFTPD 自己维护这个 session ,不再查询数据库了。
 
修改 MySQL 4.0 的  interactive timeout ,改为和 ProFTPD 设定的 TimeoutIdle 时间同一值后解决问题。