0

我正在使用我的 sql 数据库开发 php 应用程序,应用程序和数据库都托管在同一台服务器上(在客户端服务器上)

我们想跟踪该数据库的一些表,为此我们在不同的服务器(供应商服务器)上创建了相同的表。

一旦将行插入到客户端数据库表中,在远程侧表中插入这些行的最佳方法是什么?

注意:要插入的行一次可以是 50000 或 50。

摆在我面前的选项:

1)要使用两个连接并在两个数据库中插入行,但这需要时间,因为我必须大量插入行。

2)使用curl请求远程数据库并在本地数据库中插入行后插入数据

4

4 回答 4

4

使用内置在主/从设置中的 mysql 来保持数据库彼此同步

http://dev.mysql.com/doc/refman/5.0/en/replication.html

于 2013-05-02T13:34:05.310 回答
2

为什么不使用主/从复制,让数据库本身担心保持同步。这将比手卷系统强大得多。

http://dev.mysql.com/doc/refman/5.0/en/replication.html

于 2013-05-02T13:34:04.937 回答
1

正如其他分叉所评论的那样,使用复制听起来是理想的解决方案。但如果不幸的是不允许,那么这取决于要求。

如果客户端应用程序可以等待很长时间,直到成功插入 50000 或 50 行数据(如果行是 50000 行,我猜这需要几秒钟以上),那么您面前的两个选项仍然有效。

但是,如果您需要尽快将 http 响应发送回客户端应用程序,那么可能会有更好的解决方案。例如

  • 使用 crond 或您想要的任何进程/守护进程准备一些异步工作进程
  • 客户端应用程序创建的每个 http 请求都将通过 memcache、syslog 或消息队列甚至使用文件来存储/排队记录(仅当磁盘 I/O 没有问题时)
  • 让异步工作者获取/出列数据,并让他插入 50000 或 50 个数据发送
于 2013-05-02T15:55:13.597 回答
0

您可以将您的服务器设置为客户端服务器(这将是主服务器)的从服务器,复制客户端服务器上的数据。

您还可以选择仅复制特定表或特定数据库。

设置起来非常简单,听起来它可以满足您的要求。

http://dev.mysql.com/doc/refman/5.0/en/replication.html

于 2013-05-02T13:34:30.870 回答