PHP MYSQL单向同步方案
2016-02-03 18:07
666 查看
项目上有个需求,需要从外网服务器的MYSQL同步到本地服务器上。
思路如下:
1 在外网MYSQL中创建表 table_change_log ,记录表中数据的更改记录。
2 在外网MYSQL需要同步的表中,添加触发器(添加时、修改时、删除时)
3 本地服务器从外网拉取同步的PHP代码并执行。
4 获取外网的更改记录,更新到本地服务器MYSQL中。
源码下载:http://files.cnblogs.com/files/zjfree/PHP_MYSQL_sync.rar
思路如下:
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 '0' 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
相关文章推荐
- ThinkPHP - 空模块+空操作
- PHP获取客户端IP地址、浏览器类型版本、操作系统
- PHP 获取指定目录下所有文件(包含子目录)
- ThinkPHP - 模板引擎
- Jenkins进阶系列之——05FTP publisher plugin插件
- Jenkins进阶系列之——04Publish Over FTP Plugin插件
- Laravel 添加自定义全局函数
- php获取当前url
- getOutputStream() has already been called for this response的解决方法
- php如何优化压缩的图片
- PHP + MYSQL + APCHE 配置
- php时间函数time(),date(),mktime()区别
- php获取QQ头像并显示的方法
- php的include用法
- php常用mysql操作函数
- php操作XML,读取数据和写入数据的方法
- php开发时容易忘记的一些技术细节
- php中的单例模式和工厂模式
- php empty()和isset()的区别
- phpDocumentor2的正确安装和使用方法