1 MySQL和多核处理器 我正在多核xeon处理器的win2008服务器上运行MySQL。看起来它仅使用一个内核。 我需要配置一些东西以使其使用所有内核吗? 服务器正在支持一个加载了很多呼叫的网站。我确定同时存在多个调用,但是DB希望在单个内核中处理任何事情。 我该怎么做才能改善它? 8 mysql multi-core
1 主-主复制的恢复策略 我已经基于master-master复制为MySQL实现了HA解决方案。前端部分有一种机制可以保证在给定的时间只能读取/写入一个数据库(即,我们仅对HA使用复制)。 我已经确认复制可以按预期进行,但是我想知道故障情况和恢复。特别是,我担心一个主机在无法恢复的状态下发生故障并需要从另一主机重新创建时会发生什么情况: 由于另一个主mysqldump数据库处于活动状态并且很可能已被使用,因此我无法锁定它并从中创建转储(我们的数据库相当大,mysqldump使用几个月后很容易花费数小时)。 即使假设我有一个转储,也至关重要的是,SHOW MASTER STATUS所显示的binlog位置必须与锁定数据库后进行的转储相对应。 解决第一个问题的简单方法是使用第三个数据库作为备份,我可以从中进行备份mysqldump。但是,如何确保重新创建的母版可以以一致的方式从正在运行的母版开始复制? 8 mysql mysql-replication disaster-recovery master-master
6 从另一个从站创建一个MySQL从站,但将其指向主站 问题 我在两台服务器(主服务器(A)和从服务器(B))之间进行了MySQL复制设置。我需要向混合(C)添加一个新的从属。我希望该从属服务器直接从主服务器获取更新,而不希望从从属服务器进行链复制。但是,主服务器“很热”,我通常使用Xtrabackup创建主服务器的完整备份,但这会锁定它10分钟,因为数据库的大小约为20GB。 可能的解决方案 WITH READ LOCK FLUSH TABLES上从乙上使用SHOW SLAVE STATUS 乙,写下二进制日志和位置。然后使用Xtrabackup备份数据库,将备份发送到C并使用它创建从属,然后将复制设置为指向A,并使用我刚刚写下的binlog位置。 题 有没有更好的方法不需要我这么长时间锁定B?还是更容易实现自动化的东西? 8 mysql replication backup-restoration
3 从使用ec2-consistent-snapshot拍摄的快照中还原Amazon EBS RAID0阵列 我在Amazon EC2上配置了一个新的MySQL服务器,并决定将我的数据存储在EBS RAID0阵列上。到目前为止一切顺利,我已经测试了使用ec2-consistent-snapshot拍摄这些设备的快照的效果,非常好。 现在,如何从这些快照快速在新实例上重建阵列? 当您使用ec2-consistent-snapshot创建多个卷的快照时,您将无法确定RAID中每个设备使用了哪个卷。我可能完全错了,但是由于您要跨卷分条数据,因此,您必须将每个新卷放置在RAID上与创建快照的卷相同的位置上。 一个例子: RAID0配置中的3x200gb卷。 vol-1是RAID中的/ dev / sdh设备0 vol-2是RAID中的/ dev / sdh1设备1 vol-3是RAID中的/ dev / sdh2设备2 您可以使用创建一个ec2快照:ec2-consistent-snapshot <options> vol-1 vol-2 vol-3。 现在,您具有3个快照,并且要追溯它们是哪个设备,唯一的方法是查看源卷ID,然后查看实例上安装了源卷ID的设备,然后检查RAID的详细信息。源卷实例上的配置。 这显然是难以置信的手动操作……而且速度不快(显然,如果另一个实例失败,则很难快速启动新的mysql实例。更不用说,您当时必须在RAID上记录设备位置快照,因为如果源卷实例崩溃,则无法进入RAID配置)。 因此,结论是: 我是否缺少ec2-consistent-snapshot和软件RAID0阵列的工作方式? 如果不是,是否有不知道快照属于RAID阵列中哪个设备/位置的问题的已知解决方案/最佳实践? 我希望这很清楚,并感谢您的帮助! 8 mysql raid amazon-ec2 amazon-ebs
2 sql_error后重新启动mysql复制 我有两台mysql服务器,一台主服务器和一台从服务器。 有人继续从属并创建了一个表,然后又继续使用了主方并创建了相同的表。当然,此DDL语句已复制到从属服务器,从而导致错误,并导致复制在错误发生时停止。 在删除从属服务器上的表或在该语句之后开始复制之后,应该如何重新启动复制过程? 显示从站状态输出: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: xx.xx.xx.xx Master_User: buildbot Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.024536 Read_Master_Log_Pos: 33489509 Relay_Log_File: mysqld-relay-bin.049047 Relay_Log_Pos: 32575097 Relay_Master_Log_File: mysql-bin.024476 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1050 … 8 mysql mysql-replication
3 Postgres vs MySQL:哪一个更难以扩展? 根据您的经验,哪个数据库服务更难扩展?MySQL还是Postgres?我知道MySQL具有几项现成的缩放/聚类功能,但是对于Postgres,没有现成的。CMIIW。 编辑: 抱歉,我的问题是横向扩展(水平扩展),即群集,分片等。我知道两者都可以水平扩展,但是哪一个更易于实现? 感谢你的分享。 8 mysql postgresql scaling
3 采取MySQL转储,对其进行加密然后推送至s3的最佳实践是什么? 当前项目要求将数据库转储,加密并推送到s3。我想知道这样的任务可能是一些“最佳实践”。到目前为止,我正在使用一种非常简单的方法,但是希望在安全性方面有一些更好的想法。这是我的脚本的开始: mysqldump -u root --password="lepass" --all-databases --single-transaction > db.backup.sql tar -c db.backup.sql | openssl des3 -salt --passphrase foopass > db.backup.tarfile s3put backup/db.backup.tarfile db.backup.tarfile # Let's pull it down again and untar it for kicks s3get surgeryflow-backup/db/db.backup.tarfile db.backup.tarfile cat db.backup.tarfile | openssl des3 -d -salt --passphrase foopass |tar -xvj 显然,问题在于,此脚本可以使攻击者发泄地狱的一切。 对于此任务的任何想法,批评和建议将不胜感激。 8 mysql amazon-ec2 encryption amazon-s3
6 为相当大的数据库(MyISAM / InnoDB)进行MySQL备份的最佳方法 当前,我们拥有一个强大的MySQL数据库,该数据库运行两个基于Django的高流量网站以及一些规模合适的电子商务网站。结果,我们有大量使用InnoDB和MyISAM表的大型数据库。 不幸的是,由于流量大,我们最近遇到了麻烦,所以我设置了另一个主服务器来帮助减少读取/备份。 现在,我只是简单地使用带有一些参数的mysqldump,事实证明它是好的。显然,mysqldump是一种缓慢的快速方法,但是我相信我们已经不再使用它了。我现在需要一个很好的选择,并且一直在研究利用Maatkits mk-parallel-dump实用程序或LVM快照解决方案。 简洁的简短版本: 我有一个相当大的MySQL数据库需要备份 当前使用mysqldump的方法效率低下且缓慢(导致问题) 调查诸如mk-parallel-dump或LVM快照之类的内容 任何建议或想法将不胜感激-因为我必须重新做我们的工作方式,所以我宁愿正确/最有效地完成它:)。 8 mysql backup database-backup
1 将MySQL表的排序规则更改为utf8_general_cs 我试图将排序规则MySQL表更改为utf8_general_cs,但出现以下错误: mysql> ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE 'utf8_general_cs'; ERROR 1273 (HY000): Unknown collation: 'utf8_general_cs' 我运行“ SHOW COLLATE”命令,而“ utf8_general_cs”不在结果中。 我现在能做什么? 8 mysql sql
4 如何在没有mysqldump的情况下转储远程数据库? 我想使用Shell脚本定期将数据库转储到远程托管站点上。不幸的是,服务器被锁定得很紧,没有mysqldump安装,二进制文件不能由普通用户/主目录执行(所以我自己不能“安装”它)并且数据库位于单独的服务器上,所以我无法直接抓取文件。 我唯一能做的就是通过SSH登录到Web服务器,并使用mysql命令行客户端建立与数据库服务器的连接。如何将内容转储为mysqldumpSQL格式的文件名? 奖励:如果可能,如何将内容直接转储到SSH连接的末端? 我喜欢下面提出的SSH隧道概念,但是,我需要对其加倍隧道。 localhost -> remote web server -> remote database server 这样可以正常工作: $ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N 但是,尝试登录mysql失败: $ mysqldump -P 3306 -h localhost -u user -p db Enter password: mysqldump: Got error: 1045: Access denied for user 'user'@'localhost' (using password: YES) when trying to connect … 8 backup mysql
1 等同于.pgpass的MySQL,或cron作业中针对mySQL的自动身份验证 我正在编写一个bash脚本来备份数据库。大多数都是postgresql,而在postgres中,有一种方法可以避免通过创建包含postgres密码的〜/ .pgpass文件来进行身份验证。我将其放在root的主目录中,并将其设置为chmod 0600,以便root可以转储postgres数据库而无需进行身份验证。现在我想为mysql做类似的事情,尽管我只有一个mysql数据库。我怎样才能做到这一点?我不想在mysqldump的命令行上指定密码,因为这是脚本的一部分,对于其他用户来说可能有些可见。有没有一种更好的方法(即内置于mysql)来执行此操作,而不是制作一个只有root用户才能读取的文件,然后再读取该文件以获得mysql密码,然后在bash脚本中将其用作变量? 8 backup bash cron mysql
6 如何从单服务器设置成长 我正在寻找有关如何增加服务器设置的资源。 目前,我们在英国的Rackspace拥有一台专用服务器,其规格如下: HPDL385_G2_PrevGen HP单双核心Opteron 2214(2.2Ghz) 4GB RAM 2个10,000个RAID 1中的SCSI驱动器 我们的流量每月高达550,000 UV。 该站点运行PHP和MySQL安装程序。数据库受到了绝对的打击,我们有很多复杂的查询连接到多表。 我们正在使用APC进行PHP缓存。 我已经进入了尽可能多地完成数据库和查询优化的阶段,并且想知道下一步应该做什么…… 我看过内存缓存,但给人的印象是他需要大量的RAM,理想情况下需要专用的盒子...。 下一步是拥有两个框。一个用于数据库,一个用于Apache?还是有我忽略的步骤。 我们的负载通常在2个标记附近,但是现在它已达到20个标记! 来自穆宁的一些图表: 8 mysql php performance scale
7 MySQL在某些方面是否比PostgreSQL好? 我知道这个问题听起来很挑衅,但事实并非如此。我最近发现MySQL在很多领域都有局限性,并且越来越喜欢PostgreSQL。它的伸缩性更好,并且比MySQL更尊重SQL标准。 我仍然对PostgreSQL领域还不陌生,并且由于我愿意在以后的所有项目中都脱离MySQL,因此我想知道的是:MySQL是否有任何更好的特定功能(如高性能或更加用户友好等。) 我想知道MySQL我会错过什么。我已经发现MySQL中的AUTO_INCREMENT字段比PostgreSQL中的SEQUENCES更方便,并且过去在Windows中的部署是有问题的(不再是问题。对我而言再也不是问题)。 还有什么? 8 mysql sql postgresql
1 PHP / mySQL:如何调试“连接过多”错误? 我现在正在客户专用服务器上的PHP网站上工作,我会定期收到错误消息,too many connections但是大约有5位用户正在浏览此页面。 在phpMyAdmin我可以看到该max connections变量设置为400。 在我公司的本地MySQL服务器上,我们已max connections设置为200和其他伙伴同时使用该服务器。 我听说在他们的服务器上,其他一些网站正在使用相同的MySQL,且流量大。 这是我的问题: 如何调试这个问题? 我可以查看过去10分钟内执行的一些SQL查询列表,以检查这是我们的问题还是它们的问题? 8 mysql connection
6 如何从Linux安装中完全删除MySQL? 我很惊讶地发现我的一个特权用户在一个Linux机器上安装了MySQL。服务器(mysqld)正在运行,什么也不做。我的技能都是Oracle,所以我不熟悉如何关闭和删除MySQL安装。 8 mysql remove