是否可以为一个安装定义两个数据库?

时间:2012-03-26 作者:Haris

是否可以为一个wp安装定义两个数据库,我已经搜索过了,但有一个数据库和两个安装的选项。我之所以要这样做,是因为我的一个客户端站点托管在专用服务器上,即使发生流量激增,数据库也会离线。所以,如果有两个数据库,一个安装在另一台主机上,这将是可能的解决方案。有什么帮助吗?

2 个回复
SO网友:EAMann

您所说的是数据库回退。可以这样设置,但不能直接使用WordPress。

它的工作原理不是直接访问数据库,而是访问代理。此代理将位于主数据库和备份数据库的前面,并传递流量。本质上,它可以作为数据库的负载平衡器。

如果流量峰值和主DB下降,代理会将流量转发给备份。

但是,这种方法在数据一致性和维护方面存在一些问题。如果您打算这样做,我建议您与一个好的系统管理员或主机签订合同,为您配置一切。

更好的方法是,如果您担心流量激增会破坏数据库,我建议您改为设置缓存系统。我使用W3 Total Cache 在我自己的网站上。它将请求缓存到数据库中,这样它们就不需要每次都访问数据库。

除非我主动更改站点,否则无法找到提供缓存数据的服务。它节省了DB流量,并在流量激增时将我的站点与性能问题隔离开来。

SO网友:RolandoMySQLDBA

您可以做以下两件事之一:

设置手动故障切换

在其中一台DB服务器上使用DBVIP点设置MySQL循环复制。另一台DB服务器将用作被动但热备用。您必须限制对DBVIP的所有读写操作。假设您想要的DBVIP是10.1.2.30。您只需在作为主服务器的DB服务器上运行它

DBVIP=10.1.2.30
ip addr add ${DBVIP}/24 dev eth1
如果主机出现故障(崩溃、重新启动等),请在另一台DB服务器上运行这两个命令。然后,您可以让系统管理员通过重新建立循环复制将旧的主服务器设置为新的从服务器。

使用设置自动故障切换DRBDucarp, 您可以配置两个具有磁盘级冗余的DB服务器。同样,您必须限制对DBVIP的所有读写操作。通过提供两个脚本,DBVIP和自动故障切换将由ucarp管理

upscript将编写脚本以执行以下操作

断开DRBD连接,将DBRD升级为主DBVIP(通过运行ip addr add)

  • 在/var/lib/mysql上装载DRBD
  • 服务mysql start

      downscript

      downscript将编写脚本以执行以下操作

      服务mysql停止ip addr del DBVIP断开DRBD的连接将DRBD降级到辅助位置,注意自动故障切换要保留所有MySQL数据以在一致状态下经受意外故障切换,请将所有MyISAM表转换为InnoDB。下面是执行此操作的脚本:

      MYISAM_TO_INNODB_CONVERSION_SCRIPT=/root/ConvertMyISAMToInnoDB.sql
      echo "SET SQL_LOG_BIN = 0;" > ${MYISAM_TO_INNODB_CONVERSION_SCRIPT}
      mysql -u... -p... -AN -e"SELECT CONCAT(\'ALTER TABLE \',table_schema,\'.\',table_name,\' ENGINE=InnoDB;\') InnoDBConversionSQL FROM information_schema.tables WHERE engine=\'MyISAM\' AND table_schema NOT IN (\'information_schema\',\'mysql\',\'performance_schema\') ORDER BY (data_length+index_length)" >> ${MYISAM_TO_INNODB_CONVERSION_SCRIPT}
      
      无法转换使用全文索引的MyISAM表。未来,MySQL 5.6应该支持InnoDB中的全文索引。

    结束

    相关推荐

    MySQL查询,查找带有自定义字段的帖子,然后更改类别

    我正在寻找一个MySQL查询,该查询将查找具有自定义字段“meta\\u key\\u I\\u want\\u to\\u find”的所有帖子,然后如果检测到自定义字段,则向该帖子添加一个类别。类别已经创建,所以我只需要找到带有该Meta\\u键的所有帖子,然后将类别添加到其中。我想的是这样的: <?php $username=\"MY_MYSQL_USERNAME\"; $password=\"MY_MYSQL_PASSWORD\"; $h