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

时间:2010-10-20 11:30:43

标签: php mysql

我正在使用PHP和Mysql来开发应用程序。我们有两个数据库副本,一个在本地服务器(即我们的末端),另一个在Web服务器上。我们希望同步数据库,以便在本地数据库中进行的任何更改也应反映在Web服务器数据库上。那可能吗?? 目前我们正在使用PHP脚本来实现这一目标......这需要花费太多时间并且不可靠。 可以做些什么以便MySQL在内部触发整个更新和逻辑?

注意: - 我们的本地服务器运行在Windows上,而Web服务器是基于Unix的,我们没有使用命令行访问这两台机器,实际上我们使用PHP应用程序来更新和维护数据(即添加新数据或更新数据)

3 个答案:

答案 0 :(得分:2)

MySQL Replications可能正是您要找的,但我不建议同步开发和生产数据库。在网页发布后继续开发时,这会让您遇到麻烦。常见的方法是开发服务器(虚拟数据,不公开),测试(真实数据,不公开)和生产(真实数据,公共)。

答案 1 :(得分:0)

编辑:我认为网络服务器也是主人。

在这种情况下,请查看replication in MySQL的工作方式;它只会将推送到本地数据库的数据复制到网络服务器上。

答案 2 :(得分:-1)

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

1)。在这里你需要两台PC,如果你是离线进行测试,第一台PC将是你的MASTER而其他PC将充当SLAVE。

2)。检查机器的IP地址。

3)。我在Localhost上使用以下两台PC执行它

机器-1: - 192.168.1.20

机器-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;