我有一个名为' sample1'的mysql数据库。在我的一台Windows笔记本电脑和另一个名为' sample2'在另一台机器上。我想先将这两台机器连接在一起并链接数据库' sample1'和' sample2'以便我在' sample1'中执行查询必须反映在' sample2' (分布式查询处理)。
例如:如果sample1和sample2包含5条记录,则删除sample1中的记录也必须反映在sample2中。
我使用WAMP并与MySQL一起使用PHP。请帮助...
答案 0 :(得分:1)
据我所知,您需要sample1与sample2相同,并且自动地分发查询。
看起来最好的方法(可能不是最简单的方法)是使用mysql的复制:https://dev.mysql.com/doc/refman/5.0/en/replication-howto.html
编辑:这个答案可能不是您需要的答案,因为通过复制,您将需要每次服务器(主服务器)中的1个保持正常运行,或者如果要关闭其他服务器则需要第三个服务器答案 1 :(得分:1)
以下代码打开两个MySQL服务器连接($ conn1和$ conn2),然后每个连接将选择一个要使用的数据库。
$database1 = "students";
$database2 = "employees";
$conn1 = mysql_connect('host1', 'user', 'password');
if(!$conn1) {
die("Not connected: ". mysql_error());
}else{
mysql_select_db($database1, $conn1);
}
$conn2 = mysql_connect('host2', 'user', 'password', TRUE);
if(!$conn2) {
die("Not connected: ". mysql_error());
}else{
mysql_select_db($database2, $conn2);
}
答案 2 :(得分:0)
有两种解决方案供您参考。
希望这可以帮到你!
答案 3 :(得分:-1)
您可以按照此article进行数据库复制,也可以按照以下步骤操作。
你在这里有一个由Falko Timme编写的教程,它将展示如何将数据库exampledb从主服务器复制到IP地址192.168.0.100到从服务器。两个系统(主站和从站)都在运行Debian Sarge;但是,配置应该适用于几乎所有发布很少或没有修改的发行版。
要配置主服务器,我们首先要编辑/etc/mysql/my.cnf。我们必须为MySQL启用网络,MySQL应该监听所有IP地址,因此我们会注释掉这些行(如果存在):
#skip-networking
#bind-address = 127.0.0.1
此外,我们必须告诉MySQL它应该写入哪个数据库日志(这些日志被从服务器用来查看主服务器上发生的变化),它应该使用哪个日志文件,我们必须指定这个MySQL服务器是主人。我们想要复制数据库exampledb,所以我们将以下行放入/etc/mysql/my.cnf:
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb
server-id=1
然后我们重启MySQL:
/etc/init.d/mysql restart
然后我们以root身份登录MySQL数据库并创建具有复制权限的用户:
mysql -u root -p
Enter password:
现在我们在MySQL shell上。
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<some_password>'; (Replace <some_password> with a real password!)
FLUSH PRIVILEGES;
接下来(仍在MySQL shell上)执行此操作:
USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
最后一个命令将显示如下内容:
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183 | exampledb | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记下这些信息,稍后我们将需要奴隶!
然后离开MySQL shell:
quit;
有两种方法可以将exampledb中的现有表和数据从主服务器获取到从服务器。第一个是进行数据库转储,第二个是使用LOAD DATA FROM MASTER;对奴隶的命令。后者的缺点是在此操作期间主服务器上的数据库将被锁定,因此如果您在高流量生产系统上有大型数据库,这不是您想要的,我建议遵循第一种方法案件。但是,后一种方法非常快,所以我将在这里进行描述。
如果您想要遵循第一种方法,请执行以下操作:
mysqldump -u root -p<password> --opt exampledb > exampledb.sql (Replace <password> with the real password for the MySQL user root! Important: There is no space between -p and <password>!)
这将在exampledb.sql文件中创建exampledb的SQL转储。将此文件传输到从属服务器!
如果你想从MASTER获取LOAD DATA;那么你现在就没有什么必须做的。
最后我们必须解锁exampledb中的表:
mysql -u root -p
Enter password:
UNLOCK TABLES;
quit;