我试图提高服务器的性能,很显然MySQL是这个问题的主要贡献者。 但是,排除故障非常困难。 我正在使用慢查询日志来定位特定types的查询,但真正的问题在于Java进程,PHP进程和cron作业(通常也是PHP进程,但通过命令行运行Apache ) 通常当服务器变慢的时候,我会运行一些像“ps”或“top”这样的命令来试图find罪魁祸首,但是即使我知道MySQL是怪罪,我也不知道这三个“领域”中的哪一个上述可能实际上是造成放缓。 换句话说,我希望以某种方式将其分解,例如,当时对MySQL的要求中有80%是来自PHP的查询,而只有20%来自Java。 由于我有两个“领域”触发的自动化任务和周期性事件,所以很难通过反复试验来隔离它们的影响。 一切都驻留在一台服务器上,所以所有的MySQL查询都来自本地主机。 我是否也可能“标记”查询,向他们添加注释,或者添加某种元数据,以便稍后分析这些标记以获取相对负载? 我怀疑有一种方法可以像这样获得信息,但是如果任何人都可以帮助提供一种方式来进一步细分MySQL负载,以帮助识别这些查询的来源(进程ID也可以工作),这将非常有帮助。 谢谢!
我正在寻找一个调整MySQL服务器常用陷阱和优化的简洁列表,用于中型网站。 一般来说,我在这里寻找的build议types是普通开发人员或pipe理员可以轻松实现的信息,这将会为他的网站的性能带来可观的收益。 举个例子 下面是我从阅读高性能MySQL中得到的一个提示,我经常看到它用于: 当使用MyISAM存储引擎(缺省值)时,服务器将在执行DELETE或UPDATE操作时执行整个表的locking操作,或者在执行INSERT时不会将其附加到表的尾部(因为还有一个“漏洞”以前的DELETE)。 在操作完成之前,没有其他查询可以使用该表。 因此,如果使用除“INSERT”之外的任何操作进行大量修改,则应在任何使用率很高的表上使用InnoDB或其他行级locking引擎。
我们有一个服务器(4GB RAM,两个4核英特尔至强E5420)执行以下任务: 网站的静态内容(目前只是一些CMS,我们计划添加一个caching反向代理) 客户控制面板(基本上是Web界面到数据库) 我们的桌面软件的后端脚本 – 几个执行一些数据库查询/更新的PHP脚本,但每个客户每5分钟就会被点击一次 数据库存储上述两个数据 我们预计在接下来的几周内会有大量(高达数十万)用户涌入。 我的上司担心,我们目前的设置可能无法处理负载,并正在考虑转移到云托pipe – 但是,我不相信这会有所帮助。 根据我对云计算的理解,除非我们能够将工作负载分散到多台机器上(除非他们的服务器比我们的function强大得多),否则虚拟化不会有什么帮助。 他们提供了MySQL集群,但后端脚本只是读取/写入一些行中的一些值,而不执行任何计算密集型的SQL查询,所以我不能确定MySQL集群与Apache / PHP开销+ MySQLnetworking延迟。 至于网站,我们也可以把大部分的静态内容转移到CDN上,因为我们有几个video剪辑可以强调我们的带宽。 那么,云托pipe会以任何方式使我们受益?
我正在通过bash脚本运行mysqldump,并遇到包含特殊字符的密码问题。 mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | gzip > /home/USERNAME/backups-mysql/BACKUP.gz 我如何转义密码?
我正在build立一个本地webapp。 我有一个CentOS-5盒子,它将成为networking服务器(Apache 2.2)。 我有另一个盒子(RHEL5),将只用于MySQL。 数据将在PHP服务器上通过PHP进行encryption,然后发送到MySQL框并插入到数据库中。 所有基于Web的networking连接都将通过SSL进行encryption。 从我所做的研究来看,并不清楚是否需要encryption从networking服务器到数据库的连接(NB偏执级别:橙色)。 如果这不是过度杀伤,或者即使是这样(除非由于某种原因这是一个非常糟糕的主意),任何有关完成这个任务的方向的任何build议或指示,将不胜感激。
我似乎无法找出这一个。 我想使用命令行连接到驻留在另一台服务器上的MySQL数据库。 我继续为用户创build用户名和密码。 我还为该数据库授予了该用户的所有权限。 当使用命令: mysql -h <hostname> -u <username> -p ,出现以下错误: ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES) 问题是它不断将当前机器的主机名追加到用户名中。 显然,那个user@<local_machine_hostname>是不正确的。 不pipe我input什么内容。 例如,如果我input: mysql -h <hostname> -u '<username>'@'<hostname>' -p 它也是这样,只在错误输出中,它说: Access denied for user '<username>@<hostname>'@'<local_machine_hostname>' 是否有一个configuration文件中允许这种情况发生的设置? 真的很烦人 我需要build立一个tikiwiki服务器,它不能连接,因为在你设置mysql的步骤中,它不断地将本地机器的主机名附加到mysqllogin名。
我如何让一个本地的MySQL数据库在互联网上更新一面镜子?
我们试图扩展我们的Drupal安装,并决定使用一些专用的MySQL盒子。 不幸的是,当我们试图使用远程数据库的时候,我们运行速度非常慢 – 页面加载时间从200毫秒到5-10秒不等。 服务器之间的延迟很小 – 一毫秒的十分之二。 PING 10.37.66.175 (10.37.66.175) 56(84) bytes of data. 64 bytes from 10.37.66.175: icmp_seq=1 ttl=64 time=0.145 ms 64 bytes from 10.37.66.175: icmp_seq=2 ttl=64 time=0.157 ms 64 bytes from 10.37.66.175: icmp_seq=3 ttl=64 time=0.157 ms 64 bytes from 10.37.66.175: icmp_seq=4 ttl=64 time=0.144 ms 64 bytes from 10.37.66.175: icmp_seq=5 ttl=64 time=0.121 ms 64 […]
我们有一个完全由MyISAM表组成的生产数据库。 我们正在考虑将它们转换为InnoDB以获得更好的并发性和可靠性。 我可以在不closuresMySQL的情况下将myISAM表更改为InnoDB吗? 这里推荐的程序是什么? 这种转换需要多长时间? 所有的表格总大小约700MB 有相当多的表格。 有没有办法将ALTER TABLE一次应用到所有的MyISAM表格,而不是一个一个的去做? 任何我需要注意的陷阱? 谢谢
我正在使用mk-table-sync在MySQL 5.1上同步主表到从表的表。 不幸的是,虽然差异被正确地检测到,但是在主设备(DELETE,REPLACE,ecc。)上完成的修改似乎不会传播到从设备。 SHOW SLAVE STATUS不显示连接问题。 基本上,这样做 mk-table-sync -v –execute –databases=forum –sync-to-master h=localhost,D=forum,t=user # Syncing D=forum,h=localhost,t=user # DELETE REPLACE INSERT UPDATE ALGORITHM START END EXIT DATABASE.TABLE # 0 7 0 0 Chunk 14:35:00 14:35:01 2 forum.user 反复给出总是相同的结果,没有实际的变化的奴隶。 login从站: http://pastebin.com/kxuxks1P login主设备: http://pastebin.com/kVjEWEdL 在主服务器和复制数据库中的其他每个表上执行DELETE操作也是一样的。 有任何想法吗? 提前致谢