Results tagged “mysql” from WHO IS 2HEI?

#cat stdout.log
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
 java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:124)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2690)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2619)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1552)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2978)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:933)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1162)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1079)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1064)
    
   
线上跑的java应用中的stderr.log中偶尔会有这样的日志出现,出现问题时系统负载并不高,并且系统可以自己恢复正常。google了很久,也困扰俺多日,今天对这个问题做一个了断。

产生这个问题的原因可能有以下几个:
1、mysql的驱动的问题,我的驱动是mysql-connector-java-3.1.11-bin.jar
如果有兴趣测试话,可以使用其他新版本的mysql驱动来试试吧。

2、防火墙和网络上的问题
,或者服务器发生了crash(有意或无意导致)
同学们可以检查产生"java.net.SocketException: Broken pipe" 错误的时候服务器、网络是否有异常?

3、应用系统的数据库连接池导致,
最大的可能就是程序上写的不严谨  吼吼!
新手在开发过程中都难避免的失误:忘记数据库连接的关闭(纯jdbc的操作中常见,不过这个还好找啦,压力测试中如果看到数据库连接数多或者干脆挂掉可以找出原因的);
另外就是提交事物时,在对数据操作中没有做明确的commit或者rollback,如果忘记了提交commit,在你尝试使用类似的resultset去操作或者做其他的操作时就有可以能出现这样的问题,这样的悬挂着连接一直要等到超时mysql将其kill掉。仔细检查你应用的事物中是否都做了明确的提交操作呢?或者干错使用Hibernate,试试C3P0、Proxool这样的连接池吧。
 
| | Comments (0) | TrackBacks (1)
今天遇到这样一个问题,mysql无法登陆,日志提示如下:
[Wed Nov 12 14:15:38 CST 2008][MysqlDb.connectDB]java.sql.SQLException: Client does not support authentication protocol requested by server; consider upgrading MySQL client

搜了一下,好多人遇到此问题,大致是mysql版本不通造成的,以下是解决办法:
mysql>UPDATE mysql.user SET Password = OLD_PASSWORD('yourpass') WHERE Host = 'localhost' AND User = 'username';
mysql>FLUSH PRIVILEGES;

这里是mysql官方的解释!
http://dev.mysql.com/doc/refman/5.0/en/old-client.html
| | Comments (0) | TrackBacks (0)
In my mysql slave and master's
i meet a problem:
[MysqlDb.connectDB]java.sql.SQLException: Client does not support authentication protocol requested by server; consider upgrading MySQL client

this is a problem of mysql update version 4.1 and more!

to sovle it , we can do this

1st:
mysql> SET PASSWORD FOR
    -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
2nd:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
    -> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;
| | Comments (0) | TrackBacks (0)
据说使用Intel的CC编译器编译的mysql要比比gcc编译的性能高,所以可以下载这个版本的二进制mysql安装包

Linux (non RPM, Intel C/C++ compiled, glibc-2.3) downloads

MySQL is pleased to make available offerings of the MySQL Community Server compiled with the Intel CC compiler. Internal tests show that editions of the MySQL Community Server compiled with the Intel CC compiler exhibit faster performance on Intel hardware than those compiled with the standard gcc compiler. Feedback is welcome.

二进制方式安装mysql,默认安装目录为 /usr/local/mysql
所以需要修改相关配置。
如:mysql 安装在/home/mysql目录
可以编辑 /etc/my.cnf  增加:
basedir         = /home/mysql
datadir         = /home/mysql/data
启动mysql,这是如果提示:
/mysqld_safe: line 199: my_print_defaults: command not found
./mysqld_safe: line 204: my_print_defaults: command not found
The file /usr/local/mysql/bin/mysqld doesn't exist or is not executable
Please do a cd to the mysql installation directory and restart
this script from there as follows:
./bin/mysqld_safe.
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more
information
[1]+  Exit 1                  ./mysqld_safe
提示/usr/local/mysql/bin/mysqld 找不到
可以使出杀手锏:
ln -s /home/mysql/ /usr/local/mysql
另外在安装的时候
要在修改完my.cnf之后再执行
scripts/mysql_install_db --user=mysql

配置主从服务器中的问题
遇到了:
080814 12:01:22 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file ( server_errno=1236)
080814 12:01:22 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file' from master when reading data from binary log
080814 12:01:22 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.024', position 79

说明没有指定二进制log文件
解决方式:
解决
change master to \
master_log_file='mysql-bin.000021',\
master_log_pos=882
指定log_file即可。

| | Comments (0) | TrackBacks (0)

标签