太阳和草的对话~~~
太阳给草打电话
太阳:“喂,草你吗,我日。”
草:“我草,你谁啊?”
太阳:“我日啊!”
草:“我草,你到底谁啊?!”
太阳:“我日啊,你草吧?”
草:“TMD,你到底是谁啊,我草!”
太阳:“我日,我日啊!”
草:“我草!!!”
这时,太阳的妈妈接过电话:“我日他妈呀,你是草吧,草你妈呢?”
太阳给草打电话
太阳:“喂,草你吗,我日。”
草:“我草,你谁啊?”
太阳:“我日啊!”
草:“我草,你到底谁啊?!”
太阳:“我日啊,你草吧?”
草:“TMD,你到底是谁啊,我草!”
太阳:“我日,我日啊!”
草:“我草!!!”
这时,太阳的妈妈接过电话:“我日他妈呀,你是草吧,草你妈呢?”
mysql 4.0实现增量备份的功能。。。
首先,在mysl调用的配置文件(my.cnf)中打开binlog选项,即加入:
log-bin
然后重启mysql数据库使设置生效。
接下来,就是编写脚本进行测试,脚本参考网上的mysq4.1实现备份功能的说明。
脚本分为两个部分,一个是全部备份的脚本,另外一个是增量备份的脚本。
先来看全部备份的脚本,比较简单,就是用mysqldump命令完成的。。。。
好了,测试下吧,一般的都不会出什么问题的。
接下来,来看增量备份的脚本。
增量备份的脚本实际上就是从启用了log后的每次所做修改的备份。
以上就是增量备份的脚本了。。。上面的两个脚本都是从mysql4.1备份脚本修改过来的。。。
需要注意的是:
在mysql4.1版本中,mysqldump命令有 可能会有lock-all-tables 这个参数,在但是mysql4.0中是 lock-tables 参数
在mysql4.1版本中,mysql生成增量文件名可能是: yourhostname-bin.index
例如你的hostname是: localhost.mysql.server
那么增量文件名就是: localhost.mysql. server-bin.index
但是在mysql4.0版本中却是 localhost-bin.index
即hostname中的第一部分,所以如果mysql版本是4.1
可以将 HOSTNAME=`echo “$HOSTNAME”|awk -F ‘.’ ‘{print $1}’` 省略。。。
上面之所以用可能,是因为我没有用过mysql4.1 版本,并且脚本是从mysql4.1的备份修改而来。
现在进行测试,先建立一个测试的数据库,然后再建立一个测试的表,向里面插入几条记录。。。
好了。。。试着先执行你的全部备份文件,然后再插入几条记录,这个时候,再执行你的增量备份文件。。。
接下来。。。试着从你的数据库中删除数据。。。
现在就该用咱们的增量备份来恢复刚才删除的数据了。。。
从二进制的增量备份中恢复数据,使用mysql的mysqlbinlog命令,
进入到你的备份目录,执行。。。
现在再看看,删除的数据是不是又回来了?
针对于次,各位还可以进行脚本的扩展。。。这个就要靠自己举一反三了。。。
将WebLucene中的lucene部分升级到2.1
目前升级失败,原因是车东的SAXIndexer.java文件中调用Field类的实例化方法并不能在lucene的Field.java中并不能找到相应的构造函数。。。希望知道解决方法的朋友可以指导我一下。。。
首先编译java环境和resin,怎么搞,可以参考我的:
www.taoer.com/2005/12/31/linux-lamp-lucene-server-awstats/
但是。。。麻烦遇到了。。。
解压缩lucene-2.1.0-src.tar.gz
找到lucene-2.1.0/src/java/org
这个目录下面的dd就是待会儿咱们需要覆盖的dd了哈。。。
还是先将weblucene解压缩到/usr/local/resin/webapps
因为对java的build不甚了解,也不知道是替换哪个目录的文件,所以就将所有含有org/apache/lucene的全部替换成新的lucene2.1吧。。。
进入weblucene的目录,
#find ./ apache | grep apache
发现共有如下两个目录需要替换
./webapp/WEB-INF/src/org/apache
./webapp/WEB-INF/build/org/apache
然后将lucene的包解压缩覆盖到weblucene的上面的两个目录吧。
如果想把原来weblucene的自带的lucene部分进行备份,建议备份到weblucene的目录之外,
似乎build的时候会build所有子目录。。。所以可能会出现class重复的报错儿。。。
#rm -rf ./org
#cp -R /root/sss/lucene-2.1.0/src/java/org ./
#rm -rf ./org
#cp -R /root/sss/lucene-2.1.0/src/java/org ./
然后执行退到/usr/local/resin/webapps目录
配置build,具体如何配置,可以参考这里:
www.taoer.com/2005/12/31/linux-lamp-lucene-server-awstats/ 的配置build的部分
接着执行
#ant build
好么。。。报告了一大堆错误~~~
Buildfile: build.xml
init:
[echo] ———– WebLucene 0.5 [2003 -2004] ————
javacc_check:
javacc:
prepare-src:
[copy] Copying 13 files to /usr/local/resin/webapps/webapp/WEB-INF/build
build:
[javac] Compiling 229 source files to /usr/local/resin/webapps/webapp/WEB-INF/classes
[javac] /usr/local/resin/webapps/webapp/WEB-INF/build/org/apache/lucene/search/spans/NearSpansOrdered.java:163: warning: as of release 1.4, assert is a keyword, and may not be used as an identifier
[javac] assert (subSpansByDoc[i].doc() == maxDoc)
[javac] ^
[javac] /usr/local/resin/webapps/webapp/WEB-INF/build/org/apache/lucene/search/spans/NearSpansOrdered.java:164: ‘;’ expected
[javac] : ” NearSpansOrdered.toSameDoc() spans ” + subSpansByDoc[0]
[javac] ^
[javac] /usr/local/resin/webapps/webapp/WEB-INF/build/org/apache/lucene/search/spans/NearSpansOrdered.java:180: warning: as of release 1.4, assert is a keyword, and may not be used as an identifier
[javac] assert spans1.doc() == spans2.doc() : “doc1 ” + spans1.doc() + ” != doc2 ” + spans2.doc();
[javac] ^
[javac] /usr/local/resin/webapps/webapp/WEB-INF/build/org/apache/lucene/search/spans/NearSpansOrdered.java:180: ‘;’ expected
[javac] assert spans1.doc() == spans2.doc() : “doc1 ” + spans1.doc() + ” != doc2 ” + spans2.doc();
[javac] ^
[javac] /usr/local/resin/webapps/webapp/WEB-INF/build/org/apache/lucene/search/spans/NearSpansOrdered.java:247: warning: as of release 1.4, assert is a keyword, and may not be used as an identifier
[javac] assert prevStart <= matchStart;
[javac] ^
[javac] /usr/local/resin/webapps/webapp/WEB-INF/build/org/apache/lucene/search/spans/NearSpansOrdered.java:247: ';' expected
[javac] assert prevStart <= matchStart;
[javac] ^
[javac] 3 errors
[javac] 3 warnings
BUILD FAILED
/usr/local/resin/webapps/build.xml:134: Compile failed; see the compiler error output for details.
看了看。。。上网上搜了一下。原来是需要jdk1.5的环境。。。
那么就把java升级到1.5,顺便resin升级到3.1吧。。。
其中编译jdk1.5和resin3的时候遇到了一些小麻烦
我是这么解决的:
www.taoer.com/2007/06/08/java-jdk-resin-install-note/
今天由于工作需要,需要在服务器上配置jdk1.5和resin3或者jdk1.5+tomcat5的环境,但是由于偏爱的原因,
选择了jdk1.5+resin3。。。。。。
下载就不用说了。。。
从 cn.sun.com 下载jdk1.5
从 www.caucho.com/download 下载 resin3.1.0
安装jdk1.5
按照提示安装即可
看了下官方的文档
基本的安装和resin2基本都是一样的。。。。
编译resin:
如果你要将resin安装在/usr/local下
编译好resin后
做一些准备工作来让resin启动起来
resin的环境在上面配置java的时候已经一起给加上去了。
如果要让resin随系统自动运行
你需要做如下的操作
下面修改你的 init.resin
找到文件中
在后面加入
在这个时候问题出现了。。。
执行 /etc/rc.d/init.resin start 会提示如下信息:
然后查看了一下源代码发现:
这里面都有个参数-pid,感觉应该和-pid有问题吧,没有深究,改为另外一种启动方法测试:
显示:
Resin/3.1.0 started -server ”.
OK,启动成功。。。
但是在停止服务的时候,第一次出现了。。。
Resin/3.1.0 can’t stop -server ”.
java.lang.IllegalStateException: Can’t connect to ResinWatchdogManager.
java.net.ConnectException: 127.0.0.1:6600/watchdog: Connection refused
这样的错误提示。。。
随后就没有了。。。
设置成系统自动启动:
在/etc/rc.local中加入
/usr/local/resin/bin/httpd.sh start &
这种方法启动仍然不行,似乎是由于加载java环境的缘故吧,这个也是上面的脚本需要加sleep 15的原因。
OK,配置完成。。。
接下来看虚拟主机如何配置
resin2和resin3的配置虚拟主机也有一点小小的不同:
ok,这样一个简单的虚拟主机站点目录就配置好了。。。
其他的问题,目前还没有遇到过。。。
——- 更新于 2007年6月8日下午 ——-
今天从sun和resin的网站下载了最新的
jdk-1_5_0_12-linux-i586.bin 和 resin-pro-3.1.1.tar.gz
按照以前的开始编译。。。。
编译resin的时候就出问题了。。。没有在意。。继续。。。
当启动resin服务器的时候。。。麻烦来了。。。
报告 java 不能解释 -jar参数的问题。。。。
然后单独执行java
出现:
Usage: gij [OPTION] … CLASS [ARGS] …
to invoke CLASS.main, or
gij -jar [OPTION] … JARFILE [ARGS] …
to execute a jar file
Try `gij –help’ for more information.
根本就没有java应该有的那些选项。。。
于是查找原因
#whereis java
返回的结果是:java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java
然后
#ll /usr/bin/java
发现
/usr/bin/java -> /etc/alternatives/java
/etc/alternatives/java -> /usr/lib/jvm/jre-1.4.2-gcj/bin/java
/usr/bin/java 是指向 /etc/alternatives/java 的链接
然后/etc/alternatives/java 又是指向 /usr/lib/jvm/jre-1.4.2-gcj/bin/java 的链接。。。
这个时候明白了。。。
先执行
#unlink /usr/bin/java
然后接着执行
ln -s /usr/local/jdk1.5.0_12/bin/java /usr/bin/java
把软链接重新定义。。。
测试成功。。。
接着重新编译resin
#./configure –prefix=/usr/local/resin –with-apache=/usr/local/apache2 –with-openssl=/usr/local/openssl && make && make install
编译的时候会出现一些类似于
make[2]: Entering directory `/usr/local/resin/modules/c/src/resin_os’
mkdir /usr/local/resin/libexec
mkdir: cannot create directory `/usr/local/resin/libexec’: File exists
make[2]: [install] Error 1 (ignored)
cp libresin_os.so /usr/local/resin/libexec
make[2]: Leaving directory `/usr/local/resin/modules/c/src/resin_os’
make[2]: Entering directory `/usr/local/resin/modules/c/src/resin_os’
mkdir /usr/local/resin/libexec
mkdir: cannot create directory `/usr/local/resin/libexec’: File exists
make[2]: [install] Error 1 (ignored)
cp libresin_os.so /usr/local/resin/libexec
make[2]: Leaving directory `/usr/local/resin/modules/c/src/resin_os’
make[1]: Leaving directory `/usr/local/resin/modules/c/src’
这样的错误。。。
因为在解压缩的时候就已经再/usr/local/resin目录解压缩了。。所以会提示File exists,不用去管他
测试启动resin服务器
#/usr/local/resin/bin/httpd.sh start
显示:
Resin/3.1.1 started -server ”.
说明成功了。
剩下的仍然还是自启动的问题。。。。
希望知道如何让resin向apache一样随系统自启动的朋友不吝赐教
本站使用 WordPress架设