PHP MYSQL单向同步方案
项目上有个需求,需要从外网服务器的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
PHP MYSQL单向同步方案的更多相关文章
- mysql 之 主从同步(单向同步和双向同步)
一. 实验环境部署 主服务器(MySQL-01) IP: 192.168.8.241 端口3306 ,操作系统:Centos6.5 64位 从服务器(MySQL-02) IP: 192.168. ...
- mysql单向自动同步
mysql自动同步 以下教程均使用mysql自带的自动同步功能 全库单向自动同步 本例把192.168.3.45上名称为ewater_main的数据库自动同步到192.168.3.68的ewater_ ...
- Mysql数据同步Elasticsearch方案总结
Mysql数据同步Elasticsearch方案总结 https://my.oschina.net/u/4000872/blog/2252620
- Mysql主从同步配置方案(Centos7)
最近在做项目高可用时,需要使用数据同步.由于只有双节点,且采用主主同步可能存在循环同步的风险,故综合考虑采用Mysql主从同步(Master-Slave同步). 可能没有接触过Mysql数据同步时,可 ...
- mysql高可用方案总结性说明
MySQL的各种高可用方案,大多是基于以下几种基础来部署的(也可参考:Mysql优化系列(0)--总结性梳理 该文后面有提到)1)基于主从复制:2)基于Galera协议(PXC):3)基于NDB引 ...
- [转载] MySQL高可用方案选型参考
原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...
- mysql主从同步单个表实验记录
问题的提出: 在CRM管理系统与运营基础数据平台之间需要有数据表进行交换,说是交换,其实是单向的,就是CRM里面的一些数据需要实时同步到运营基础数据平台中. 解决方案: A.采用时间戳的办法进行代码开 ...
- 五大常见的MySQL高可用方案
1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 1.1 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据 ...
- 五大常见的MySQL高可用方案【转】
1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中 ...
随机推荐
- VS2010的项目配置
一直对VS的项目配置都是不怎么了解的,以前用过点,半年不用后,什么都忘记了... 下面这个是免于输入过长的引用头文件的,比如:#include “D:/C++/curl-7.37.0/libcurl/ ...
- soj1001算法分析
题目简单描述: 给定一个长数串,输出可能的字母串解个数.(A对应1,Z对应26) 样例输入:25114 样例输出:6 样例解释:可能的字母串解:YJD.YAAD.YAN.BEJD.BEAAD.BEAN ...
- SQL Server 2005 处理交叉表
假设有一个表如下: 日期 时间 售货金额 2006-01-02 早上 50 2006-01-02 中午 20 2006-01-02 晚上 30 2006-01-02 零晨 40 2006-01-03 ...
- Win8 安装 Scrapy
安装Python2.7.11 32位(自带pip) 使用如下命令更新pip python -m pip install -U pip 下载lxml,建议32位,直接安装 https://pypi.py ...
- NOIP 考前 Tarjan复习
POJ 1236 给定一个有向图,求: 1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点 2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点 第一个就是缩点之后有多少 ...
- Android ListView 多样式Item的一个注意点:(
闲来无事,在写一个多样式Item的ListView的Demo时,遇到了一个以前没遇过的问题; ╮( ̄▽ ̄")╭ 我们知道,ListView里可以有多种样式的item, 实现只需要重写: @O ...
- 使用Spring 发送 Email !!!!
邮件服务器: 邮件服务器提供了邮件系统的基本结构,包括邮件传输,邮件分发,邮件存储等功能,以确保邮件能够发送到互联网中的任意地方. 邮件服务器就像我们生活中的邮局,为人们提供邮件服务.要保证邮件被正确 ...
- Javascript 特效(一)返回顶部
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 去掉tableView的header view的粘黏性
有的项目中,需要使用tableview的headerview,但是想让headerview粘在最顶不,希望和cell一起滚动,可以试试下面的代码来帮你实现这个需求: - (void)scrollVie ...
- HTTP协议 (三) 压缩
之前写过一个篇 [HTTP协议详解] ,这次继续介绍HTTP协议中的压缩. 本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这个工具,可以先参考[Fiddler教 ...