怎么使Mysql数据同步-PHP&MYSQL-PHP教程-幽默笑话
现代文学
来源:本站
2019-07-09

怎么使Mysql数据同步-PHP&MYSQL-PHP教程-幽默笑话

文章内容怎么使Mysql数据同步修改时间:[2010/07/0614:32]阅读次数:[500]发表者:[起缘]怎么使Mysql数据同步先假设有主机A和B(Linux系统),主机A的IP分别是(当然,也可以是动态的),主机B的IP是。

两个主机都装上了PHP+Mysql,现在操作的是主机A上的资料,如果另外一个主机B想跟A的资料进行同步,应该怎么做呢?OK,我们现在就动手。 首先,如果要想两个主机间的资料同步,一种方法就是主机A往主机B送资料,另外一种主法就是主机B到主机A上拿资料,因为A的IP是动态的(假设),所以我们就得从主机A往主机B送资料。

在主机B上创建一个Mysql账户。

#GRANTALLONtest.*TO[emailprotected]%IDENTIFIEDBYpassword//创建用户user,可以从任何机器访问到主机B上的test数据库。

如果这里显示错误,先把%改为一个IP,然后再利用phpMyAdmin把IP改为%,测试无误后就可以写php程序。

lt;$link=mysql_pconnect(localhost,user,password);mysql_pconnect(localhost,user,password);//连接本机(主机A)的数据库mysql_select_db(test);//选择数据库test$re=mysql_query(select*fromtableorderbyiddesc);$num=mysql_numrows($re);if(!empty($num)){$id=mysql_result($re,0,id);//获得本机table表的最大ID}mysql_close($link);//关闭与本机数据库的连接$link=mysql_pconnect(,test,test);mysql_pconnect(,test,test);//连接主机B的数据库mysql_select_db(test);//选择数据库test,此数据库应该与主机A上test数据库的结构一样。 $re=mysql_query(select*fromtableorderbyiddesc);$num=mysql_numrows($re);if(!empty($num)){$remote_id=mysql_result($re,0,id);//获得主机Btable表的最大ID}if($id$remote_id){$result_id=$id-$remote_id;//如果主机A中table的最大ID大于主机B中table表的最大ID,说明两个}的资料不同mysql_close($link);//关闭主机B的数据库连接$link=mysql_pconnect(localhost,user,password);mysql_pconnect(localhost,user,password);mysql_select_db(test);if(empty($result_id))$result_id=0;if(empty($remote_id))$remote_id=0;//如果主机B中的table的最大ID为空(里面没有资料),那么就等0$re=mysql_query(select*fromtablelimit$remote_id,$result_id);//取出主机A中table表与主机B中table表里不同的资料$num=mysql_numrows($re);if(!empty($num)){for($i=0;$i$num;$i++){$test[$i]=mysql_result($re,$i,test);//把不同的资料放入一个数组里}}mysql_close($link);//关闭主机A的数据库连接$link=mysql_pconnect(,user,password);mysql_pconnect(,user,pasword);mysql_select_db(test);for($j=0;$jlt;$i;$j++){//这里的i等于在比较主机A与主机B上table表不同资料的数量mysql_query(insertintotable(test)values(\$test[$j]\));}mysql_close($link);//关闭主机B的数据库连接这时就初步实现了A主机和B主机数据的同步,但现在还需要人手动每次去激活这个程序,有没有办法把它作为一个脚本一样的,放在crontab里面指定时间自动执行呢?在安装php时会自动生一个叫php的可执行文件,一般在/你安装的php目录/bin下面,不过较底的版本好像没有,如果没有这个文件,你就得升级你的php。

#原本是应用在网页应用的﹐因此它会送出HTML的Header﹐但是在此我们是要将php用作ShellScript﹐-q就是表示不要送出Header的意思.最后编辑/etc/crontab里的文件,加上下面这一句。

00***root/home/httpd/html/test//每天晚上零点执/home/httpd/html/test文件(具体使用方法请查看cron的相关资料)OK,到这里差不多就已完成Mysql数据的同步了,如果各位还有兴趣的话,可以想一个连编辑、删除都能同步的更好的办法。