在MySql中同步本地数据库和Web服务器数据库

5
我正在使用PHP和MySQL开发一个应用程序。我们有两份数据库副本,一份在本地服务器(即我们的端口),另一份在Web服务器上。我们希望同步这两个数据库,以便在本地数据库进行任何更改时,也应该反映在Web服务器数据库中。这是否可能? 目前,我们使用PHP脚本来实现这一点...这需要太长时间,而且不可靠。 有什么方法让MySQL内部触发整个更新和逻辑吗?
注意:我们的本地服务器运行在Windows上,而Web服务器是基于Unix的,并且我们没有使用命令行来访问两台机器,实际上在两侧我们都使用PHP应用程序来更新和维护数据(即添加新数据或更新数据)。

请提供更多详细信息,例如平台/操作系统,是否可以在两台机器上访问命令行。 - Pekka
@Pekka,如果我们使用PHP脚本而不是使用MySQL复制,会有问题吗? - Harish Kurup
3个回答

4

MySQL复制可能是您正在寻找的内容,但我不建议同步开发和生产数据库。当网页发布后继续开发时,这可能会给您带来麻烦。常见的做法是为开发(虚拟数据,非公开)、测试(真实数据,非公开)和生产(真实数据,公开)各设置一个服务器。


1

要将本地数据库与Web服务器数据库在MySql中同步,您可以通过使用复制来实现此功能。这里有一些执行复制的SQL命令

1). 如果您正在离线测试目的进行操作,则需要两台计算机,第一台计算机将是您的MASTER,另一台计算机将作为SLAVE。

2). 检查您的计算机的IP地址。

3). 我在本地主机上执行了以下两个计算机的操作

Machine-1:- 192.168.1.20

Machine-2:- 192.168.1.21

然后打开Mysql并在两台计算机上开始输入以下命令

---------------- Commands for SERVER-1 ------------------
IP-Address e.g. = 192.168.1.20
---------------------------------------------------------

CREATE USER 'server1'@'%' IDENTIFIED BY '12345';

GRANT REPLICATION SLAVE ON *.* TO 'server1'@'%' IDENTIFIED BY '12345';

FLUSH TABLES WITH READ LOCK;

SHOW MASTER STATUS;

UNLOCK TABLES;


---------------- Commands for SERVER-2 -----------------
IP-Address e.g. = 192.168.1.21
--------------------------------------------------------

STOP SLAVE;

RESET SLAVE;

CHANGE MASTER TO
MASTER_HOST = '192.168.1.20',
MASTER_USER = 'server1',
MASTER_PASSWORD = '12345',
MASTER_PORT = 3306,
MASTER_LOG_FILE = 'Type_your_log_file_name',
MASTER_LOG_POS = TYPE_YOUR_LOG_POSITION_HERE,
MASTER_CONNECT_RETRY = 10,

START SLAVE;

SHOW SLAVE STATUS \G;

虽然此链接可能回答了问题,但最好在这里包含答案的必要部分并提供链接作为参考。仅包含链接的答案如果链接页面更改,则可能会变得无效。 - Narendrasingh Sisodia
感谢@NarendraSisodia的建议。现在请检查一下,我已经更新了整个答案,现在可以了吗? - Arsh Kaushal

0

编辑:我以为Web服务器也是主服务器。

在这种情况下,看看MySQL中的复制工作方式;它将简单地将推送到本地数据库的数据复制到Web服务器上。


我以为这是主从关系,本地作为主机,Web服务器作为从机...实际上,这是我第一次使用这样的系统。 - Harish Kurup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接