我正在使用我的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