需要将数据插入到远程数据库的最佳解决方案


Need best solution to insert data to remote database

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

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

在将行插入到客户端数据库表时,在远程副表中插入行最好的方法是什么?

注意:每次插入的行数可以是50000行或50行。

选项在我面前:

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

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

使用mysql内置的主/从设置来保持数据库之间的同步

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

为什么不使用主/从复制,让数据库自己担心保持同步呢?这将比手摇系统健壮得多。

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

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

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

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

  • 使用crond或任何你想要的进程/守护进程准备一些异步工作进程
  • 由客户端应用程序创建的每个http请求将通过memcache, syslog或消息队列甚至使用文件存储/队列记录(仅当磁盘I/O没有问题时)
  • 让异步工作器取/取队列数据,并让他插入50000或50个数据发送

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

还可以选择只复制特定的表或特定的数据库。

设置起来很简单,听起来就像你所需要的。

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