草庐IT

php - 托管和本地生产服务器之间的双向 mySQL 数据库同步

coder 2023-10-10 原文

所以场景是这样的:

我在运行 Windows 2008 Server 的本地服务器上有一个 mySQL 数据库。服务器仅供我们网络上的用户访问,并包含我们公司的生产计划信息。我在运行 Linux 的托管服务器上运行着本质上相同的数据库,这意味着可以在线访问,以便我们的客户可以连接到它并更新他们的订单。

我想要做的是对数据库中的两个表进行双向同步,以便订单在两个数据库中都是最新的,并从我们的服务器到托管服务器与其他表中的数据进行单向同步.数据库的前端是用 PHP 编写的。我会说说目前为止我在做什么,如果有人能让我知道我是在正确的轨道上还是在错误的树上咆哮,我将不胜感激,并希望能为我指明正确的方向。

我的第一个想法是(在生成对订单表的更改的 PHP 脚本的末尾)导出所做的更改,可能使用 INSERT into OUTFILE WHERE account = account 或类似的东西。这将使文件的大小保持较小而不是导出整个订单表。我挂断的是如何 (A) 将其导出为 SQL 文件而不是 CSV (B) 如何包含有关已删除内容和已插入内容的信息 (C) 如何获取此文件在另一台服务器上执行SQL语句。

我目前正在研究 SSH 和 PowerShell,但似乎无法就其具体工作原理制定一个可靠的愿景。我也在研究 cron 作业和 Windows 计划任务。但是,最好是在发生更改时以某种方式简单地进行更新,而不是按计划实时同步更新,但我不太清楚这一点。我想每隔几分钟至少运行一次计划任务/cronjob,尽管我想它需要做的只是检查是否有任何转储文件需要放到对方服务器上,不一定要同步如果什么都没有改变,什么都没有。

有没有人做过这样的事情?我们正在讨论一次将表格中的 1(最小)行更改/添加/删除到 160 行(最大)。在我继续研究我的选择时,我很想听听人们对这整件事的看法。谢谢。

另外,澄清一下,我不确定其中一个真的是主人还是奴隶。没有一个总是准确的数据,更多的是最新的数据,两者都需要。

+1 更多注释 我现在正在考虑的另一件事是在一侧的订单更新脚本的末尾添加另一个指向其他服务器数据库的配置/连接脚本,然后重新运行完全相同的查询,因为它们具有相同的结构。现在这听起来很简单……有什么想法吗?

最佳答案

您可能没有意识到 MySQL 本身可以在不同的服务器上配置数据库,这些数据库会随机地相互同步。参见 here了解一些细节;另外,搜索 MySQL 环复制。该设置有点脆弱,需要您了解一点 MySQL replication .或者你可以建立一个集群;学习曲线高得多,但不那么脆弱。

如果您真的想自己动手,那么您将在设计方面经历一段相当大的冒险。您必须解决的最大问题不是如何使其工作,而是如何在其中一台服务器出现故障一个小时或您的 DSL 调制解调器熔化或硬盘驱动器已满后正确工作或者……

关于php - 托管和本地生产服务器之间的双向 mySQL 数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989680/

有关php - 托管和本地生产服务器之间的双向 mySQL 数据库同步的更多相关文章

  1. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  2. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  6. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  7. ruby-on-rails - `a ||= b` 和 `a = b if a.nil 之间的区别? - 2

    我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行

  8. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  9. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  10. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

随机推荐