Posted by zuzhihui in mysql on 2013/02/22 with No Comments
从其它地方连接MySQL数据库的时候,有时候很慢。慢的原因有可能是MySQL进行反向DNS解析造成的。
MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。反向DNS解析是耗费时间的,有可能让用户感觉起来很慢。甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了。
可以在配置文件里面禁止MySQL进行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可:
skip-name-resolve
Posted by zuzhihui in mysql on 2013/02/16 with No Comments
在Linux VPS系统上有时候会发现MySQL占用CPU高,导致系统的负载比较高。这种情况很可能是某个SQL语句执行的时间太长导致的。优化一下这个SQL语句或者优化一下这个SQL引用的某个表的索引一般能解决问题。
但是怎么找到是哪个SQL语句的执行时间过长呢?可以通过MySQL Slow Log来找,详解如下。
首先找到MySQL的配置文件my.cnf,根据不同版本的mysql开启慢查询的配置也不一样
mysql 5.0
[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/slow.log
mysql 5.1
[mysqld]
long_query_time = 1
slow_query_log=1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries和slow_query_log_file 设置把日志写在哪里
把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境
接下来就是分析了,我这里的文件名字叫 /var/log/mysql/slow.log。
先mysqldumpslow –help下,主要用的是
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
-s,是order的顺序,说明写的不够详细,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 /var/log/mysql/slow.log
mysqldumpslow -s r -t 20 /var/log/mysql/slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” /var/log/mysql/slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。
Posted by zuzhihui in mysql on 2011/11/27 with No Comments
MySQL运行时间长了之后,二进制日志会占用大量硬盘空间,清楚这些日志的命令如下:
show binary logs;
purge master logs before now();
Posted by yar999 in Linux技术 on 2011/04/10 with No Comments
查看:
ssh登录之后执行下面的命令,最后一对双引号里面包含的就是mysql的root密码
cat /usr/local/lxlabs/kloxo/etc/slavedb/dbadmin
例如
[root@centos ~]# cat /usr/local/lxlabs/kloxo/etc/slavedb/dbadmin
O:6:"Remote":1:{s:4:"data";a:1:{s:5:"mysql";a:1:{s:10:"dbpassword";s:11:"abc.passwd";}}}
abc.passwd就是mysql默认的root密码
修改:
参照下图修改即可
Posted by yar999 in Linux技术 on 2011/04/02 with No Comments
kloxo默认使用的是lighttpd做web服务器,安装的时候有2个问题,可以按照下面解决
1 开启mysql的innodb引擎
由于mysql的innodb引擎比较占用内存,所以kloxo的my.cnf默认禁用了innodb引擎,这就导致安装magento的时候提示链接数据库错误,因为magento需要使用mysql的innodb引擎。
执行下面的命令开启mysql的innodb引擎即可
sed -i 's/skip-innodb/#skip-innodb/g' /etc/my.cnf
/etc/init.d/mysqld restart
2 勾选下 Skip Base URL Validation Before the Next Step
Posted by zuzhihui in Linux技术 on 2009/11/06 with 2 Comments
phpmyadmin是个很方便的mysql数据库管理工具,可以用来管理mysql数据库,导入,导出等。
phpmyadmin在导入mysql的时候有个问题,如果要导入的数据库文件比较大,那么导入就会失败。下面介绍一个方法,可以导入任意大小的mysql数据库,步骤如下:
import.php文件的内容如下:
<?
system("mysql -uroot -pmypassword database < a.sql");
print "import ok";
?>
其中root表示数据库用户名,mypassword表示root的密码,database表示要导入的数据库的名字,a.sql表示数据库文件的文件名,该文件是解压缩后的文件。这几个变量可以根据实际情况修改。
Posted by zuzhihui in vps技术 on 2009/09/26 with No Comments
MySQL的Replication功能可以自动同步主MySQL服务器的更新到若干个辅MySQL服务器上,这个功能能把MySQL的数据实时分布到多台机器上,提交了MySQL的数据安全性。
配置MySQL Replication并不是个简单的工作,如果配置的不好,回导致MySQL的同步性能不好,或者不能同步,甚至导致主辅服务器的数据不一致。
下面主服务器为master,辅助服务器为slave
第一步保证master能单机正常工作,略。
在master上创建一个MySQL用户,这个用户专门用于Replication:
grant replication slave on *.* to 'repluser'@'%' identified by 'mypassword';
编辑MySQL的配置文件,允许log-bin,并且给master分配一个ID:
[mysqld] skip-name-resolve server-id=10 log-bin=mysql-bin sync_binlog=1 innodb_flush_logs_at_trx_commit=1 innodb_support_xa=1
配置ID等
[mysqld] server-id=20 log_bin = mysql-bin relay_log = mysql-relay-bin skip_slave_start log_slave_updates = 1 read_only skip-name-resolve
在master上把数据导出,并记录当前数据位置。用一个用户连接mysql并运行:
flush tables with read lock;
show master status;
然后该连接不要退出,否则read lock就失效了,记录下当前日志的文件名和位置。在另外一个窗口运行如下命令导出数据:
mysqldump -uroot -p --all-databases |gzip -c > db.sql.gz
然后把数据文件拷贝到slave上,解压缩:
gunzip db.sql.gz
进MySQL导入:
source db.sql;
这时候slave上的数据已经同步到master的导出时刻的数据了,下面就启动自动同步的线程就可以了:
change master to master_host='1.1.1.1', master_user='repluser', aster_password='mypassword',master_log_file='mysql-bin.000006',master_log_pos=502185;
show slave status;
start slave;
show slave status;
从上面的
show slave status命令的输出可以看到,
IO线程和SQL线程都开始工作了。过几分钟后比较一下slave和master上的日志文件及其位置,应该就是一样的了。
Posted by zuzhihui in vps技术 on 2008/07/28 with No Comments
在VPS上安装完MySQL之后,缺省的用户只有root@localhost,新添加MySQL用户最简单的方法是:
在phpmyadmin里面执行如下语句(语句最后要加分;号):
grant all privileges on DBNAME.* to USERNAME@localhost identified by 'PASSWORD'
flush privileges
当然在SSH里面运行
mysql -uroot -p
之后也能够输入上面的sql语句,效果一样。
解释如下:
这将添加新用户,用户名称是USERNAME,密码是PASSWORD,这个用户在DBNAME这个数据库里面有修改,读取等权限。
Posted by zuzhihui in vps技术 on 2008/07/03 with No Comments
MySQL是Linux的重要组件,所有的Linux几乎都自带MySQL。RasHost VPS为了给所有客户提供一个干净的VPS环境,没有预装MySQL,毕竟不是所有的客户都用MySQL。 本文给出在Linux VPS下怎样手工安装配置和优化mysql
在Debian/Ubuntu下:
apt-get install mysql-server-5.0
在CentOS下:
yum install -y mysql-server
主要是中文环境配置,配置MySQL全面缺省支持UTF-8。修改mysql的配置文件/etc/mysql/my.cnf,在[mysqld] 和 [client]段都加入如下指令:
default-character-set=utf8
MySQL一般包括3个服务,mysql, mysqld-ndb, mysql-ndb-mgm。mysql服务就是我们常有的数据库服务,mysqld-ndb是mysql cluster用的,mysql-ndb-mgm是mysql cluster的管理用的,我们在VPS上一般用不到mysql cluster,所以应该禁止掉mysql-ndb和mysql-ndb-mgm。 在Debian/Ubuntu下:
update-rc.d -f mysql-ndb remove
update-rc.d -f mysql-ndb-mgm remove
在CentOS下:
chkconfig mysql-ndb off
chkconfig mysql-ndb-mgm off
Posted by zuzhihui in mysql on 2008/05/24 with No Comments
如果mysql不能启动了,库损害了,或者密码忘记了,而数据库里面又没有重要数据,可以这样重建mysql数据库:
用root用户操作:
/etc/init.d/mysql stop #先停止
rm -rf /var/lib/mysql #删除所有数据库
mysql_install_db #重新建库
/etc/init.d/mysql start #启动
mysqladmin password rashost.com #修改新密码为 rashost.com
近期评论