You are currently browsing the yaozer 博客 blog archives for 8月, 2009.

Archive for 8月, 2009

连接远程mysql数据库服务器慢的原因

星期六, 8月 15th, 2009

新搭建的web server + db server 很不稳定, 访问特别慢, 而且经常连接不上。 查看运行结果, 每小时连接失败的次数有几十次,但其他参数均正常。配置怎么改都没有用, 后来发现phpmyadmin  process一栏里面把web server过来的连接认为是 unauthenticated user,  于是从这个点着手, 找到了原因。

解决方法:  把 web server 的 IP 放入db server 的 /etc/hosts 里面。

综合网上各类资料, yaozer 简单总结一下原因: MySQL 默认会进行DNS解析(写明了IP也还要去解析一下,为的是得到主机名,然后可以授权该主机名而不用写明IP), 而这个DNS解析需要调用系统函数,如果这些系统函数有问题, 连接就会受影响。 把 web server 的 IP 放入db server 的 /etc/hosts 里面, 采用本地DNS解析来解决这个问题, 是最上乘之选。使用skip-name-resolve的方式后,只能全部输IP访问了,会让 localhost 没法访问。

http://www.unixresources.net/linux/clf/db/archive/00/00/34/77/347701.html#article347701   里面讨论了类似的情况,复制部分:

  • 我的一台服务器RedHat7.3,上面跑了个Mysql服务。一直以来服务正常。可是昨天,我突然不能远程连接 我的数据库服务器(mysql)了。后来我把自己机器的ip加入/etc/hosts就可以,但是取消/etc/hosts IP这一行就不可以连接了,显示“lost connection to mysql server during query”
  • 算起来就是前几天更新了几个包而已,glibc等,应该跟mysql没关系的。你的临时解决方法我也试过了,可以暂时顶住。
  • 首先谢谢大家的关心,这个问题已经有很多人遇到,只是我们遇得比较早。总体上讲都是由于系统得某些升级造成的。我经过多方查证和收集资料,咨询。得到这个解决方案。不敢独享,还望各位给我指证,谢谢!解决方案:
    在Mysql服务启动脚本/etc/rc.d/init/mysqld 里面的start里面加入”–skip-name-resolve”参数,禁止反相IP解析。问题得到解决。
  • 接到redhat发布的errata通告了,原来是glibc库的问题。通告还专门指出了mysql会出错。

附: MYSQL远程连接速度慢的解决方法的相关资料

http://bbs.lihuasoft.net/thread-10904-1-1.html
http://tech.e800.com.cn/articles/2009/630/1246332746740_1.html
http://www.xishuiw.com/info/2009-3/2009-3-16-16759.htm
http://doc.linuxpk.com/66944.html
http://be-evil.org/post-40.html   该文提到了 Mysql DNS 的细节

分享家:Addthis中国

ubuntu/centos 上的双网卡设置

星期三, 8月 12th, 2009

我们经常有这样的需求, 服务器托管在机房,分配了一个外网IP,还想弄一个内网IP。怎么实现呢, 首先你需要有2块网卡(一般服务器主板都有2个集成网卡)。

  1. 第一步, 查看一下2块网卡是否已经识别, 命令 :  lspci | grep ‘Ethernet’ 或者在 lspci里面找。如果找到 2 个Ethernet Controller 就说明没问题了。
  2. 设置外网IP 给连接外网的网口, 假设是 eth0,  那么在ubuntu中 , vim /etc/network/interfaces , 增加类似如下的语句,
    auto eth0
    iface eth0 inet static
    address 222.73.44.222
    netmask 255.255.255.192
    gateway 222.73.44.193

    在 centos里面 , vim /etc/sysconfig/network-scripts/ifcfg-eth0 ,  形如
    DEVICE=eth0
    BOOTPROTO=none
    HWADDR=00:15:17:9d:0f:51
    ONBOOT=yes
    NETMASK=255.255.255.128
    IPADDR=61.129.52.159
    GATEWAY=61.129.52.254
    TYPE=Ethernet

  3. 设置内网IP, 注意不能设置网关,否则会出问题, 只要 设置 IP 和 netmask就可以了, 在ubuntu中 , vim /etc/network/interfaces , 增加类似如下的语句,
    auto eth1
    iface eth1 inet static
    address 192.168.0.222
    netmask 255.255.255.0

    在 centos里面 , vim /etc/sysconfig/network-scripts/ifcfg-eth1 ,  形如
    DEVICE=eth1
    BOOTPROTO=none
    HWADDR=00:15:17:9d:0f:51
    ONBOOT=yes
    NETMASK=255.255.255.0
    IPADDR=192.168.0.159
    TYPE=Ethernet

然后重启网络就可以了, (ubuntu) sudo /etc/init.d/networking restart   ,  (centos) /etc/init.d/network restart .

分享家:Addthis中国

mysql数据库备份与还原zz

星期二, 8月 11th, 2009

备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某个(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
来源: http://www.lihaixin.com/2008/12/mysql-database-backup-and-restore-order-994.html
分享家:Addthis中国

centos 5.3 + LVM + RAID1

星期一, 8月 10th, 2009

今天配置了台数据库服务器,Intel Xeon 至强四核2.4G,  8G RAM,  320G×2 (组 RAID1).

总的架构是 CentOS 5.3 (x86_64) 运行在  LVM + RAID1之上。

  • RAID1就是镜像备份, 所以2块 320G 的硬盘主板能识别到2块, 而操作系统就只显示单块320G了。
  • LVM 能对磁盘进行更灵活的管理。 除了/boot不允许建立在LVM之上, 其他 swap /home  /等均建立在LVM上。
  • CentOS 5.3 是好东西,可是官方的软件包版本比较滞后, 经常跟不上需求,最后使用了官方源和民间源结合升级的方式,  ustc + jasonlitka , 成功将mysql 及 php各个插件和其他软件包升级, 其中最难伺候的是64位的mysql。

参考:
http://centos.ustc.edu.cn/centos/5.3/
http://www.jasonlitka.com/yum-repository/
http://www.howtoforge.com/perfect-server-centos-5.3-x86_64-ispconfig-2

分享家:Addthis中国

centos 5.3 网络安装

星期日, 8月 9th, 2009

1, 刻录 netinstall iso.  该iso大小约7.8M , 可以从 http://isoredirect.centos.org/centos/5/isos/x86_64/ 里面找到。

2,  将刻录盘放入光驱引导启动, 选择 http 方式

CentOS NetInstall

3, 在 Http Setup 步骤中,设置一个安装源,以台湾的一个源为例:

Website Name:  ftp.twaren.net
CentOS Directory: Linux/CentOS/5.3/os/x86_64

注意,  以上指定的不是 iso 所在的位置, iso一般在源的isos里面;  os目录与isos目录是同一级别的。

开始网络安装……

分享家:Addthis中国