Muzak复制建议和技术

时间:2011-08-27 20:07:07

标签: php mysql replication innodb myisam

我正在尝试自己的第一个大型数据库项目。 我在服务器1上有一个myisam mysql数据库,其中一个php应用程序消耗了大量的各种数据。 我在服务器2上有mysql myisam,php应用程序选择并显示数据。

我想在服务器2上复制这些数据。

问题:

  1. 我应该将服务器1 mysql db更改为innodb
  2. 您可以将server1 innodb复制到server2 myisam
  3. 我将媒体存储为blob,意图使用缓存卸载实时服务器上的压力。我应该使用文件系统存储和rsync。
  4. 其他有经验的人的一般建议?

2 个答案:

答案 0 :(得分:26)

根据我的经验,这是我的建议。

  1. 您可以为两台服务器使用一种类型的引擎(MyISAM或InnoDB)。 我混合两个引擎,你可能会遇到死锁,交易问题等等......修复它们的时间可能很痛苦。 不久前我用InnoDB遇到了问题 - > MyISAM数据。现在我在所有服务器上都使用了MyISAM。

  2. 对于存储媒体(例如图像,视频或文档),您可以创建NFS并安装两个服务器都可访问的/ usermedia /文件夹。 因此,您不必每次都进行rsync。此外,您可以将元数据或媒体信息保存到数据库以供参考,以及将文件保存在磁盘上的位置。 注意:使用blob保存文件可能会很好,具体取决于媒体。如果你有一个大约1 gig的文件可能不是一个好主意,例如保存在数据库上。)

  3. 使用缓存系统检索数据(例如memcached)。 例如,如果您请求数据并且需要将其显示给用户,请首先查看缓存。如果它不在缓存中,请查询数据库,将其保存到缓存并显示。 下次请求相同的信息时,您不会从服务器而是从内存中请求它。此解决方案将避免数据库服务器上的大量调用,这将提高性能。

  4. 如果您需要其他帮助,请与我们联系。

答案 1 :(得分:23)

我建议InnoDB(用于事务,行锁定而不是表锁定)和redis作为缓存非常快速和高效