远程服务器数据库(IP: 192.168.1.19)
数据库名称:
RemoteDB表名-相对较高的标准-比较:RemoteTable
本地服务器数据库(IP: 192.168.1.35)
数据库名称:
LocalDB表名-相对较高的标准-比较:LocalTable
MySQL查询
INSERT INTO LocalDB.LocalTable SELECT * FROM RemoteDB.RemoteTable但是,由于不同的数据库连接,这个查询没有执行。
如何从本地服务器(IP: 192.168.1.35)执行此查询?或者任何linux shell命令?
发布于 2016-11-03 09:24:51
mysqldump -uRemoteusername -pRemotepassword -h192.168.1.19 RemoteDB RemoteTable --set-gtid-purged=OFF | mysql -h192.168.1.35 -uLocalname -pLocalpassword LocalDB发布于 2016-11-04 17:50:05
我将CronJob的批准答案转换为CronJob脚本,如下所示-
配置:
$remoteDbUser = '***';
$remoteDbPass = '***';
$remoteDbHost = '192.168.1.19';
$remoteDb = 'RemoteDB';
#$remoteDbTable = '';
$localDbHost = '192.168.1.35';
$localDbUser = '***';
$localDbPass = '***';
$localDb = 'LocalDB';同步功能:
/*Passing `$remoteDbTable` name as function argument, Because I have many Remote DB table to synchronize with my Local DB table*/
function RemoteDbSynchronze($remoteDbTable='RemoteTable'){
global $remoteDbUser,
$remoteDbPass,
$remoteDbHost,
$remoteDb,
$localDbHost,
$localDbUser,
$localDbPass,
$localDb;
$sql = sprintf(
"mysqldump -u%s -p%s -h%s %s %s --set-gtid-purged=OFF | mysql -h%s -u%s -p%s %s",
$remoteDbUser,
$remoteDbPass,
$remoteDbHost,
$remoteDb,
$remoteDbTable,
$localDbHost,
$localDbUser,
$localDbPass,
$localDb
);
shell_exec($sql);
}从Cron脚本调用函数:
RemoteDbSynchronze('RemoteTable');
RemoteDbSynchronze('AnotherRemoteTable1');
RemoteDbSynchronze('AnotherRemoteTable2');
..........................................
RemoteDbSynchronze('AnotherRemoteTableN');关于斯普林特、exec和克隆的更多详细信息
发布于 2016-11-03 10:55:26
您的问题是使用php从不同的数据库中插入数据,不是吗?
如果你想同步它们,你可以读这个如何使两个MySQL数据库保持同步?
使用php从多个db插入db很简单
$conn1= mysqli_connect($host1,$user1,$pass1);
mysqli_select_db($db1,$conn1);
$conn2= mysqli_connect($host2,$user2,$pass2);
mysqli_select_db($db2,$conn2);
$query=mysql_query("SELECT id,name from tbl_user", $conn1)
while ($row = mysqli_fetch_row($query))
{
mysqli_query("insert into tbl_user (id,name) values ('".$row[0]."', '".$row[1]."',$conn2);
}https://stackoverflow.com/questions/40397675
复制相似问题