我在一台windows笔记本电脑上有一个名为'sample1‘的mysql数据库,在另一台机器上有另一个名为'sample2’的mysql数据库。我想首先将这两台机器连接在一起,并链接数据库'sample1‘和'sample2’,这样我在'sample1‘中执行的查询也必须反映在'sample2’(分布式查询处理)中。
例如:如果sample1和sample2包含5条记录,那么在sample1中删除一条记录也必须反映在sample2中。
我使用WAMP,和MySQL一起在PHP上工作。请帮助我..。
发布于 2015-04-15 20:06:01
据我所知,您需要sample1与sample2相同,并且自动分发查询。
看起来最好的方法(可能不是最简单的)是使用mysql:https://dev.mysql.com/doc/refman/5.0/en/replication-howto.html的复制
编辑:这个答案可能不是您需要的答案,因为对于复制,您需要两台服务器(主服务器)中的一台每次都保持运行,或者如果您想关闭另外两台服务器,您将需要第三台服务器。
发布于 2015-04-15 20:12:26
下面的代码打开两个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);
}发布于 2015-04-15 20:13:18
您可以按照此article进行数据库复制,也可以按照以下步骤操作。
这里有一个由Falko Timme编写的教程,它将展示如何从IP地址为192.168.0.100的主服务器复制数据库exampledb到从服务器。两个系统(主系统和从系统)都运行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然后,我们以根用户身份登录到MySQL数据库,并创建一个具有复制权限的用户:
mysql -u root -p
Enter password:现在我们在MySQL外壳上。
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<some_password>'; (Replace <some_password> with a real password!)
FLUSH PRIVILEGES;接下来(仍然在MySQL外壳上)执行以下操作:
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外壳:
quit;有两种可能将现有的表和数据从主服务器获取到从服务器。第一个是进行数据库转储,第二个是在从服务器上使用LOAD DATA FROM MASTER;命令。后者的缺点是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加载数据,那么你现在没有什么必须做的。
最后,我们必须解锁exampledb中的表:
mysql -u root -p
Enter password:
UNLOCK TABLES;
quit;https://stackoverflow.com/questions/29649493
复制相似问题