不让MySQL进行反向DNS解析

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

用MySQL Slow Log解决MySQL CPU占用高的问题

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语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

清理MySQL的bin-log二进制日志

Posted by zuzhihui in mysql on 2011/11/27 with No Comments

MySQL运行时间长了之后,二进制日志会占用大量硬盘空间,清楚这些日志的命令如下:


show binary logs;
purge master logs before now();

查看、修改kloxo下mysql的root密码

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密码

修改:

参照下图修改即可

kloxo下安装magento报错解决

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

在phpmyadmin里面导入大数据库的方法

Posted by zuzhihui in Linux技术 on 2009/11/06 with 2 Comments

phpmyadmin是个很方便的mysql数据库管理工具,可以用来管理mysql数据库,导入,导出等。

phpmyadmin在导入mysql的时候有个问题,如果要导入的数据库文件比较大,那么导入就会失败。下面介绍一个方法,可以导入任意大小的mysql数据库,步骤如下:

  1. 通过FTP把数据库的SQL文件上传到网站的根目录下
  2. 在网站的根目录下,创建文件import.php,该文件的内容见文章末尾
  3. 在浏览器里面访问这个import.php,假设你的网站域名是www.a.com,那么就在浏览器里面访问 http://www.a.com/import.php , 只要浏览器一开始访问这个import.php文件,数据就开始导入了
  4. 数据导入结束后,屏幕上会出现”import ok”的字样

import.php文件的内容如下:

<?
system("mysql -uroot -pmypassword database < a.sql");
print "import ok";
?>

其中root表示数据库用户名,mypassword表示root的密码,database表示要导入的数据库的名字,a.sql表示数据库文件的文件名,该文件是解压缩后的文件。这几个变量可以根据实际情况修改。

配置MySQL 5.0的复制(Replication)功能

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能单机正常工作,略。

在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

slave的配置

配置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上的日志文件及其位置,应该就是一样的了。

注意事项

  • 应用程序不要使用数据库的root用户,一定要创建普通用户供应用程序使用,因为root用户可以在slave上进行写操作,容易导致数据不一致。

怎样给MySQL数据库添加新用户

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这个数据库里面有修改,读取等权限。

Linux VPS下MySQL的安装配置和优化

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

MySQL数据库的快速重建

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

Back to Top

2007-2017 © 北京瑞豪开源科技有限公司 京ICP备13004995号-2