Muzak 复制建议和技术

2022-08-30 20:43:13

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

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

问题:

  1. 我应该将服务器 1 mysql db 更改为 innodb 吗?
  2. 你能将 server1 innodb 复制到 server2 myisam 吗?
  3. 我将媒体存储为 blob,目的是使用缓存来减轻实时服务器上的压力。我应该使用文件系统存储和 rsync 吗?
  4. 其他有经验的人有什么一般性建议吗?

答案 1

以下是我根据我的经验提出的建议。

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

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

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

如果您需要其他帮助,请告诉我。


答案 2

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


推荐