项目上有个需求,需要从外网服务器的MYSQL同步到本地服务器上。

思路如下:

1 在外网MYSQL中创建表 table_change_log ,记录表中数据的更改记录。

DROP TABLE IF EXISTS `table_change_log`;
CREATE TABLE `table_change_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`table_name` varchar(20) NOT NULL DEFAULT '' COMMENT '表名',
`table_op` varchar(20) NOT NULL DEFAULT '' COMMENT '操作',
`table_id` int(11) NOT NULL DEFAULT '' COMMENT '表ID',
`add_time` datetime NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='表操作记录';

2 在外网MYSQL需要同步的表中,添加触发器(添加时、修改时、删除时)

DROP TRIGGER IF EXISTS `tg_{0}_insert`;
CREATE TRIGGER `tg_{0}_insert` AFTER INSERT ON `{0}`
FOR EACH ROW INSERT INTO table_change_log (`table_name`, `table_op`, `table_id`, `add_time`) VALUES('{0}', 'insert', new.id, now()); DROP TRIGGER IF EXISTS `tg_{0}_update`;
CREATE TRIGGER `tg_{0}_update` AFTER UPDATE ON `{0}`
FOR EACH ROW INSERT INTO table_change_log (`table_name`, `table_op`, `table_id`, `add_time`) VALUES('{0}', 'update', old.id, now()); DROP TRIGGER IF EXISTS `tg_{0}_delete`;
CREATE TRIGGER `tg_{0}_delete` AFTER DELETE ON `{0}`
FOR EACH ROW INSERT INTO table_change_log (`table_name`, `table_op`, `table_id`, `add_time`) VALUES('{0}', 'delete', old.id, now());

3 本地服务器从外网拉取同步的PHP代码并执行。

$url="http://xxx.xxx/sync/client.php";
$html = file_get_contents($url); if ($html === FALSE)
{
exit("NET ERROR!");
} file_put_contents("sync_exe.php", $html);
include "sync_exe.php";

4 获取外网的更改记录,更新到本地服务器MYSQL中。

源码下载:http://files.cnblogs.com/files/zjfree/PHP_MYSQL_sync.rar

最新文章

  1. powerdesigner,eclipse整合安装
  2. 剑指Offer 矩形覆盖
  3. Java关键字final、static使用总结(转)
  4. android学习记录(十三)Task 和 Activity 回退栈操作。
  5. 交叉编译lsof for android
  6. 关于使用digitalocean的vps
  7. win7限制登录时间的设置方法
  8. ios 绘制wav波形图
  9. 交换A与B值的四种方法
  10. js运算符单竖杠“|”的作用
  11. Http协议---Hyper Text Transfer Protocol
  12. MongoDB Java Driver 3.4操作
  13. 超大文本文件浏览器Snaptext,支持不限制大小的文本文件浏览
  14. keytool 错误: java.lang.Exception: 密钥库文件不存在: keystore
  15. Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
  16. Luogu 1083 借教室(二分,差分)
  17. CentOS6.5安装Kibana5.3.0
  18. unordered_map/unordered_set & unordered_multimap/unordered_multiset非关联容器
  19. SSIS 事件的向上传递
  20. 部分Web服务器信息对比

热门文章

  1. jQuery判断checkbox是否选中的3种方法
  2. [解决方案] pythonchallenge level 2
  3. js 正则表达式 转至(七郎's Blog)
  4. Android 简易崩溃日志保存
  5. Linux 命令行快捷键
  6. python-tab还是space?
  7. win32自绘按钮,使用GDI+(一)
  8. Mongodb在Windows 7下的安装及配置
  9. Javaweb学习随笔_JSP的九大内置对象
  10. Mysql使用mysqldump按时间导出时的一个注意事项