电脑安全

您当前的位置:主页 > 电脑安全 >

怎么使 Mysql 数据同步-网络编程

来源:[db:来源]标题:   主机    编辑:电脑技术全能网 时间:2019-09-19 12:32

原标题:怎么使 Mysql 数据同步-网络编程
   怎样使 Mysql 数据同步先假定有主机 A 和 B ( Linux 体系),主机 A 的 IP 分辨是 1.2.3.4 (固然,也能够是静态的),主机 B 的 IP 是 5.6.7.8 。两个主机都装上了 PHP+Mysql ,当初操纵的是主机 A 上的材料,假如别的一个主机 B 想跟 A 的材料停止同步,应当怎样做呢?OK,咱们当初就着手。起首,假如要想两个主机间的材料同步,一种方式就是主机 A 往主机 B 送材料,别的一种主法就是主机 B 到主机 A 上拿材料,由于 A 的 IP 是静态的(假定),以是咱们就得从主机 A 往主机 B 送材料。在主机 B 上创立一个 Mysql 账户。# GRANT ALL ON test.* TO user@% IDENTIFIED BY "password"; //创立用户 user,能够从任何呆板拜访到主机 B 上的 test 数据库。假如这里表现过错,先把 % 改成一个 IP ,而后再应用 phpMyAdmin 把 IP 改成 % ,测试无误后便可以写 php 顺序。<?$link=mysql_pconnect("localhost","user","password");mysql_pconnect("localhost","user","password"); //衔接本机(主机A)的数据库mysql_select_db("test"); //抉择数据库test$re=mysql_query("select * from table order by id desc");$num=mysql_numrows($re);if (!empty($num)) {$id=mysql_result($re,0,"id"); //取得本机table表的最大ID}mysql_close($link); //封闭与本机数据库的衔接$link=mysql_pconnect("5.6.7.8","test","test");mysql_pconnect("5.6.7.8","test","test"); //衔接主机B的数据库mysql_select_db("test"); //抉择数据库test,此数据库应当与主机A上test数据库的构造一样。$re=mysql_query("select * from table order by id desc");$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 * from table limit $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("5.6.7.8","user","password");mysql_pconnect("5.6.7.8","user","pasword");mysql_select_db("test");for ($j=0;$j<$i;$j++) { //这里的i即是在比拟主机A与主机B上table表差别材料的数目mysql_query("insert into table (test) values(/'$test[$j]/')");}mysql_close($link); //封闭主机B的数据库衔接?>这时就开端完成了 A 主机和 B 主机数据的同步,但当初还须要人手动每次去激活这个顺序,有没有方法把它作为一个剧本一样的,放在 crontab 外面指准时间主动履行呢?在装置 php 时会主动生一个叫 php 的可履行文件,个别在/你装置的 php 名目 /bin 上面,不外较底的版本似乎没有,假如没有这个文件,你就得进级你的 php 。#php -q test.phpphp 底本是利用在网页利用的因而它会送出 HTML 的 Header然而在此咱们是要将 php 用作 Shell Script"-q" 就是表现不要送出 Header 的意义.最初编纂 /etc/crontab 里的文件,加高低面这一句。0 0 * * * root /home/httpd/html/test //天天早晨零点执/home/httpd/html/test文件(详细应用方式请检查cron的相干材料)OK,到这里差未几就已实现 Mysql 数据的同步了,假如列位另有兴致的话,能够想一个连编纂、删除都能同步的更好的方法。

上一篇:PHP MySQL下分页显示的实现-网络编程

下一篇:没有了