Articles of mysql

MySQL停止接受通过3306的连接,仍然在本地主机上工作

我有一个MySQL数据库,完全停止从我的Web服务器接受连接。 所以我SSH到服务器,并开始检查其重要性。 硬盘有足够的空间,有足够的可用内存和交换空间。 没有什么东西在吃掉CPU(接近100%闲置)。 我甚至在本地连接到MySQL,并运行一些查询没有任何问题。 但SHOW PROCESSLIST只显示我自己的连接,没有其他人。 最糟糕的是,在MySQL日志中,即使远程服务器不可用也没有错误发生。 在Web服务器上,我收到一个错误,提示“在查询过程中丢失了与MySQL服务器的连接”,此时无法启动,随后出现一堆“MySQL服务器已经消失”的错误。 在服务器上只有一个接受networking连接的应用程序,而且我杀了那个(如果它拿着太多打开的连接或者什么的),但是没有帮助。 最后我刚刚重新启动了MySQL进程,并且一切都是(现在)再次运行。 我还应该在这些情况下检查什么? 任何想法可能是什么问题? 我怎么能证实这个问题呢?

还有什么其他方法可以在不使用Elastic Load Balancing的情况下平衡EC2服务器?

我有一个Web应用程序,它包含一个由Web托pipe公司pipe理的Web服务器,一个在amazons云中的一组EC2实例和一个MySQL数据库(托pipe在Web服务器上)。 MySQL位于防火墙之后,设置为允许从本地主机和单个IP地址进行访问,该IP地址是连接到我至今运行的EC2实例的Amazon弹性IP地址。 问题是我想看看我的EC2实例的扩展和负载平衡策略。 为此,我一直在研究Amazon提供的弹性负载均衡器和自动扩展工具,并设法将其设置正常,但有一点 – 连接到运行在我的Web服务器上的MySQL数据库。 我意识到(感谢Serverfault上的答案),我需要检查防火墙设置并为负载均衡器添加IP地址,但Elastic Load Balancer为您提供DNS名称,而不是IP地址,事实上IP地址随时间而改变这是行不通的。 托pipe数据库的公司告诉我,防火墙的工作方式是查找DNS名称的IP地址并存储IP而不是DNS名称。 所以基本上这是行不通的,允许访问的唯一方法是打开SQL端口以允许任何人访问! 这是一个可行的想法? 我应该看看把数据库移到云端吗? 服务器公司可以使用另一个防火墙吗? 我应该find另一种负载平衡的方式(如果是的话)? 棘手的一个呃? 任何帮助赞赏!

升级PHP,MySQL的旧密码问题

我从石器时代inheritance了运行XAMPP安装的Windows 2k3服务器。 我需要升级PHP,以便升级到MediaWiki,以方便一个新的MediaWiki扩展(为了方便一些文档,以方便我的工作,以方便获得付款方便…你明白了)。 然而…安装PHP的新版本会导致PHP的MySQL库拒绝使用MySQL的“旧式”152位密码进行通信。 理论上不成问题。 MySQL的安装是后4.1,所以它应该有function,将用户的密码从152位升级到328位(这是一个奇怪的哈希algorithm…)。 我跑了以下几点: SET PASSWORD = PASSWORD('foo'); 在MySQL上,但查询: SELECT user, password FROM mysql.user; 只是返回了我刚开始使用的密码 – 152位。 现在…我怀疑你在想'AHA! 旧密码开启!“。 不幸的是,它不是 – 我已经在configuration中禁用它(明确地将其设置为0),双倍确定我有一个绝对参考该configuration文件,并确保该服务不使用–old-passwords标志。 每次操作后,服务都会重置。 所以我进入另一个系统,并在那里生成了328位散列,将散列复制到第一个MySQL实例。 不幸的是,这也没有奏效(我记得FLUSH PRIVILEGES)。 应用程序错误是: “'mysqlnd无法使用旧的不安全authentication连接到MySQL 4.1+。请使用pipe理工具[… snip …] 还有什么我可以尝试让PHP识别MySQL不使用“旧的不安全的身份validation”? MySQL似乎被卡在“旧密码”模式,我无法从中解脱出来。

我可以在InnoDB和MyISAM之间来回更改MySQL表吗?

我有一个网站,有一个体面大的数据库,3GB的大小,几十万张表的纪录。 目前它在MyISAM上是100%的,而且我觉得服务器由于过多的locking而比预期的要慢,所以我想尝试去InnoDB,看看是否让事情变得更好。 但是,我需要直接在生产中这样做,因为显然没有负载,这并没有什么区别。 不过,我有点担心,因为InnoDB实际上有可能会变慢,所以问题是: 如果我把所有表转换成InnoDB,结果比以前更糟,我可以返回MyISAM而不会丢失任何东西吗? 你能想到我可能遇到的任何问题吗? (例如,我知道InnoDB将所有数据存储在一个只有更大的大文件中,这是否会成为问题?) 非常感谢你 丹尼尔

打开“日志慢查询”

我正在尝试loginmysql缓慢的查询,但我无法打开它。 我会解释我所有的步骤: 打开并编辑my.cnf并添加以下行: long_query_time = 5 slow_query_log_file = /myfolder/slowq.log log_slow_queries = 1 =>(I have MySQL 5.0.7) 给mysql用户授权在文件上写: chown -R mysql:mysql /var/lib/mysql 创build文件: touch /myfolder/slowq.log 这个文件的Chmod为777。 service mysqld restart 从MySQLpipe理面板我可以看到“log_slow_queries”var是closures的! 也没有创build日志。 提前致谢! 最好的问候,帕诺斯。

如何优化小型Linux服务器?

我有一个512MB的RAM和一些运行在其上的php / mysql网站(〜20)的小型Ubuntu服务器。它已经运行了两年,现在没有一个单一的问题。 但是我觉得有些优化的时刻刚刚来临。 在这个服务器上托pipe的网站stream量非常低,但是现在我看到一些CPU问题,他们开始获得更多的访问。 我试图做的第一件事是确定问题,所以我一直在玩几个命令行工具,如顶级htop apachetop等,和工作台监视MySQl.With这些工具是很难知道我是什么正在进行。 例如,我创build了一个在后台运行的PHP守护进程,并且每10秒钟在数据库中存储CPU使用率。如果CPU大于60%,则存储apachetop的输出。 这并不是特别有用,因为许多logging是OPTIONS * HTTP / 1.0 。 此外,它看起来像是最后一个请求的列表,而不是当前的请求。 秒,当我试图监视使用htop发生了什么,我总是看到〜15条logging,如: 6905 mysql 20 0 462M 110M 5220 S 0.0 21.6 5:29.79 /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –user=mysql –pid-file=/var/run/mysqld/mysqld.pid –skip-external-locking –port=3306 –socket=/var/run/mysqld/mysqld.sock 另一个〜15像: 23382 www-data 20 0 259M 27384 4820 S 1.3 5.2 0:01.00 /usr/sbin/apache2 -k start 这是一个截图: 我不确定这些stream程是否应该一直开放,或者我可以优化。 我现在可以升级这个服务器,我只是想在做之前尽可能地优化它。 另外,我打开日志查询缓慢,唯一的查询有所有查询,当服务器的CPU超过90%执行。 这只是确认,我使用的(自定义)php […]

用MySQL中的空格replace文本

我试图在我的数据库中进行全局replacesearch,它有很多与双回车的文章,因为这个代码: <p> </p> 我想在我的WordPress博客中replace这个,而不是出现…没有,所以我可以删除CR。 我已经在我的数据库上试过了 UPDATE wp_posts set post_content = replace (post_content,'<p> </p>',''); 但没有工作。 为什么? 我是否需要特别考虑考虑<p>和</p>之间的空格? 嗯。 好的一点,Jon Angliss和Wim。 乔恩,你可能已经猜到了,数据库显示没有该文本string的条目。 所以在post_content字段里面有一些事情。 Wim,这个名字已经被replace了,但是仍然有数百个由于某种原因在p和/ p标签之间有些不同的post。 我用这个错误search了一个post: mysql> select * from wp_posts where post_title like '%3DVisionLive%'; 在wp_content字段中查看,这是post的一小部分: Phil Eisler, responsable de la divisi?n 3D Vision.?</p> <p>?</p> <p>Este portal ser? por tanto terminal上没有显示西class牙语波浪(重音符号),而是在p和/ p标签之间有一个引号。 我试过replace<p>?</p> ,但是再次没有结果。 那里有一些(或几个)字符,但是我不知道如何发现。 也许这是我的terminal的字符集,但我已经从phpmyadmin访问数据库,在这种情况下,p和/ p之间是空格字符。 […]

非root用户的MySQL密码总是错误的

我在FreeBSD上使用MySQL 5.5,并且一切都可以运行,并且已经有一段时间了。 唯一的问题是,除root以外的任何数据库用户都不能正确进行身份validation。 mysql Ver 14.14 Distrib 5.5.7-rc, for portbld-freebsd7.2 (i386) using 5.2 我添加用户的主要方法是使用phpMyAdmin。 我也尝试使用命令行。 无论哪种方式,用户创build就好,但如果我尝试mysql -u someuser -ppassword,即使我指定一个他们有权访问的数据库(包括GRANT偶),它也会失败。 因此,我一直在使用rootlogin,这显然是一个很大的安全漏洞。 编辑:我没有运气多次冲刷特权。 下面是显示授权的输出,我在这里将真正的用户/ dbname对改为“someuser”。 Grants for someuser@%: GRANT USAGE ON *.* TO 'someuser'@'%' GRANT ALL PRIVILEGES ON `someuser`.* TO 'someuser'@'%' WITH GRANT OPTION

mysql批量插入数据

编辑: 我意识到,如果我在内存中构build一个大的查询,速度提高了几乎10倍 在xxx(col1,col2)值('a',1),值('b',1),值('c',1)中插入ignore 编辑: 因为我在第一列有一个索引,所以插入的时间越长,插入的越多。 我可以推迟索引到最后? 原版的: 我正在使用以下批处理向MySQL数据库插入1000万行(一次不是全部,因为它们都不适合内存),它太慢(花费很多时间)。 我应该使用加载文件来提高性能? 我将不得不创build第二个文件来存储所有的1000万行,然后加载到数据库。 有更好的方法吗? PreparedStatement st=con.prepareStatement("insert ignore into xxx (col1, col2) "+ " values (?, 1)"); Iterator<String> d=data.iterator(); while(d.hasNext()){ st.clearParameters(); st.setString(1, (d.next()).toLowerCase()); st.addBatch(); } int[]updateCounts=st.executeBatch();

MySQL不会启动或不会安装

我试图让我的Ubuntu桌面上的本地LAMP设置。 我成功地获得了PHP安装,但是我遇到了MySQL的麻烦 如果PHP试图connet到MySQL我得到这个错误: Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/testing.php on line 3 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 如果我通过命令行尝试,我得到了很多相同的错误: owen@desktop:~$ mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13) 奇怪“/ var / run / mysqld”不存在。 运行一个whereis命令我得到以下内容: owen@desktop:~$ […]