现状:
现有两个站点,分别称为SiteR和SiteF,两者都可以通过FTP管理,且SiteR有Shell权限并支持perl
目的:
将SiteF作为主站,定时将SiteF上的WEB内容和数据库数据同步到SiteR,同步是非实时且单向的
实现方法:
1、在SiteR上使用FTPSync.pl脚本实现通过FTP方式的SiteF到SiteR的文件同步(下载地址http://ossw.ibcl.at/FTPSync/)
2、在SiteF上编写一个php页面,作用是定时将数据库数据导出成文本格式并压缩,核心代码如下,原理是使用system方法执行MySQL的备份命令mysqldump,同时使用find命令删除过期备份文件
3、在SiteR上编写Shell脚本,核心代码如下
如果源FTP地址是从根目录开始,最后要写两个/,这个貌似是FTPSync的一个BUG,我使用的是1.3.01
4、在cron中定时调用第3步的Shell脚本
此方法的必备条件:
1、各个站点可通过FTP获取源文件
2、其中一个站点有Shell权限,且支持perl,且可以使用cron
现有两个站点,分别称为SiteR和SiteF,两者都可以通过FTP管理,且SiteR有Shell权限并支持perl
目的:
将SiteF作为主站,定时将SiteF上的WEB内容和数据库数据同步到SiteR,同步是非实时且单向的
实现方法:
1、在SiteR上使用FTPSync.pl脚本实现通过FTP方式的SiteF到SiteR的文件同步(下载地址http://ossw.ibcl.at/FTPSync/)
2、在SiteF上编写一个php页面,作用是定时将数据库数据导出成文本格式并压缩,核心代码如下,原理是使用system方法执行MySQL的备份命令mysqldump,同时使用find命令删除过期备份文件
引用
$command = "mysqldump -h数据库地址 -u用户名 -p密码 --default-character-set=utf8 数据库名|gzip>生成的文本备份文件路径及名称";
system($command, $retval);
$command = "find 备份路径/*.gz -mtime +10 -exec rm {} \\;";
system($command, $retval);
system($command, $retval);
$command = "find 备份路径/*.gz -mtime +10 -exec rm {} \\;";
system($command, $retval);
3、在SiteR上编写Shell脚本,核心代码如下
引用
//远程调用SiteF备份页面,生成数据库备份
wget http://xxx.xxx/xxx/xxx.php
//同步远程文件到本地
ftpsync.pl ftpuser=FTP帐号 ftppasswd=FTP密码 本地目的路径 ftp://远程FTP源地址//
wget http://xxx.xxx/xxx/xxx.php
//同步远程文件到本地
ftpsync.pl ftpuser=FTP帐号 ftppasswd=FTP密码 本地目的路径 ftp://远程FTP源地址//
如果源FTP地址是从根目录开始,最后要写两个/,这个貌似是FTPSync的一个BUG,我使用的是1.3.01
4、在cron中定时调用第3步的Shell脚本
引用
#每天凌晨0点
0 0 * * * /xxx/xxx
0 0 * * * /xxx/xxx
此方法的必备条件:
1、各个站点可通过FTP获取源文件
2、其中一个站点有Shell权限,且支持perl,且可以使用cron
刚才上来发现进入bo-blog出错,提示:
Bo-Blog Database System Tips: MySQL Query Error
Time: 2007-7-20 3:47pm
Script:
SQL: SELECT COUNT(blogid) FROM `***blogs` WHERE `property`<>'2' AND `property`<>'3'
Error: Table './wjinfo-bo-blog/***blogs' is marked as crashed and should be repaired
Errno.: 145
进入phpmyadmin后发现对应的***blogs只能看到结构,不能看到数据。尝试mysqldump备份数据库提示:
mysqldump: Got error: 145: Table './wjinfo-bo-blog/boblog_blogs' is marked as crashed and should be repaired when using LOCK TABLES
最后找到MySQL对应表的MYI数据文件,执行myisamchk -c -r boblog_blogs.MYI
- recovering (with sort) MyISAM-table 'boblog_blogs.MYI'
Data records: 359
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
再次进入发现数据恢复。
Bo-Blog Database System Tips: MySQL Query Error
Time: 2007-7-20 3:47pm
Script:
SQL: SELECT COUNT(blogid) FROM `***blogs` WHERE `property`<>'2' AND `property`<>'3'
Error: Table './wjinfo-bo-blog/***blogs' is marked as crashed and should be repaired
Errno.: 145
进入phpmyadmin后发现对应的***blogs只能看到结构,不能看到数据。尝试mysqldump备份数据库提示:
mysqldump: Got error: 145: Table './wjinfo-bo-blog/boblog_blogs' is marked as crashed and should be repaired when using LOCK TABLES
最后找到MySQL对应表的MYI数据文件,执行myisamchk -c -r boblog_blogs.MYI
- recovering (with sort) MyISAM-table 'boblog_blogs.MYI'
Data records: 359
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
再次进入发现数据恢复。