Submitted by admin on 2007, November 3, 10:11 AM
MYSQL的自动备份脚本,已测试通过。
可以将这个脚本放进crontab,每天凌晨执行一次,自动备份将生成压缩文件 。
只保留最近七天的备份在服务器上
这是我写的第一个脚本,欢迎大家指正。
这里主要参考了aspbiz 的贴子:
http://www.chinaunix.net/jh/17/418474.html
以下是脚本内容:
Start---------------------------------------------------------------------------
#!/bin/bash
#This mysql backup script for daily
#environment:redhat as 4
#Powered by灰熊
#2007-10-31
#定义有备份的数据库名
dbname=mysql
#定义备份数据库时使用的用户名和密码
dbuser=root
dbpasswd=12345a
#数据库备份的路径
backuppath=/tmp/db/
#数据库备份日志文件存储的路径
logfile=/tmp/db/db.log
#以当前的时间作为备份的数据库命名。
dumpfile=$(date +%y%m%d%H%M)
#这个函数用来备份数据库
back_db()
{
#将备份的时间、数据库名存入日志
echo $(date +%y%m%d%H%M)" Beginning database "${dbname}" backup-----------------------------------" >>${logfile}
#备份数据库,如果有错误信息也记入日志。
mysqldump -u${dbuser} -p${dbpasswd} ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
#将备份数据库文件库压成ZIP文件,并删除先前的SQL文件。如果有错误信息也记入日志。
tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
#将压缩后的文件名存入日志。
echo "backup file name:"$(date +%y%m%d%H%M)".tar.gz" >>${logfile}
echo -e "------------------------------\n" >>${logfile}
}
#这个函数用来删除七天前的数据,注意,这个脚本会删除当前目录下所有的早于七天前的文件,如果把目录搞错了。。。。。。。。。
rm_oldfile()
{
#查找出当前目录下七天前生成的文件,并将之删除
find ./ -type f -mtime +7 -exec rm {} \;
}
#切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误
cd ${backuppath}
#运行备份数据函数
back_db
#运行删除文件函数
rm_oldfile
end---------------------------------------------------------------------------
建议到mysql的man目录下的man1下面执行一下man ./mysqldump.1 看一下里面的内容!
合并成一句
mysqldump ..... | gzip -q --best > xxx.gz
建议把db的name写到一个文本里面,然后增加需要备份的库的时候就可以修改文本了.不需要再修改程序
for dbname in `cat dbnamelist.txt`; do
//backup functions
done
转自CU,觉得还不错
脚本代码 | 评论:0
| Trackbacks:0
| 阅读:1947
Submitted by admin on 2007, November 2, 11:23 AM
业界新闻 | 评论:0
| Trackbacks:0
| 阅读:1875
Submitted by admin on 2007, October 31, 1:50 PM
apache文件所在目录 modules/metadata/mod_expires.c
编译,使用apxs工具
apachepath/bin/apxs -c -i -a mod_expires.c
编译完后,自动加了LoadModule
httpd.conf配置
<IfModule expires_module>
ExpiresActive On
ExpiresByType image/gif "access plus 300 minutes"
ExpiresByType image/jpeg "access plus 300 minutes"
ExpiresByType image/png "access plus 300 minutes"
ExpiresByType text/css "access plus 3 minutes"
ExpiresByType application/x-shockwave-flash "access plus 300 minutes"
#ExpiresByType image/gif "access plus 3 minutes"
#ExpiresByType image/jpeg "access plus 3 minutes"
#ExpiresByType image/png "access plus 3 minutes"
#ExpiresByType text/css "access plus 3 minutes"
#ExpiresByType application/x-shockwave-flash "access plus 3 minutes"
#ExpiresDefault "now plus 1 day"
</IfModule>
apache/web | 评论:0
| Trackbacks:0
| 阅读:2262
Submitted by admin on 2007, October 28, 5:43 PM
今天发现,FTP里的中文名字的文件都不能下载.之前就是win的,后来改到Linux,用NTFS加载,再后来,也转为Linux的格式了.
刚弄好时,好像是能下载的,都不知当时是怎么检查的了.而且,前两天才发现,上次整理的过程中,还丢了很多的文件,唉,可现在全都没了.真可惜,有点欲哭无泪的感觉,同时也发现这些文件都不能下载,怪事了
后在网上搜了下资料,就发现了下面这些.
linux下的apache,不支持中文地址的
如 http://localhost/下载/ 或 http://localhost/下载/电子书.rar
要支持中文名字,安装个 mod_encoding 模块就可以了
wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
# tar zxfv mod_encoding-20021209.tar.gz
# cp mod_encoding.c.apache2.20020616 mod_encoding-20021209/mod_encoding.c
■ iconv_hook编译和安装
安装mod_encoding前首先需要安装iconv_hook。
$ cd mod_encoding-20021209/lib$ ./configure$ make# make install
完成上面操作后,iconv_hook相关so文件放到/usr/local/lib下面。
要操作系统系统能够搜索到该so文件,需要完成一下几行操作
打开/etc/ld.so.conf文件,添加一行指向iconv_book的所在路径,即"/usr/local/lib"
# vi /etc/ld.so.conf/usr/local/lib
[Esc]、[:]、[w]、[q] 保存退出。
# PATH="$PATH:/sbin"
# ldconfig
■ mod_encoding模块的编译
进入mod_encoding-20021209.tar.gz的解压目录,即mod_encoding-20021209
# ./configure --with-apxs=/usr/sbin/apxs --with-iconv-hook=/usr/local/include/iconv_hook/
# make
#ls -l mod_encoding.o
查看是否已经生成了mod_encoding.o文件,如果是,则make成功继续下边的操作。
# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
生成mod_encoding.so文件,将该文件拷贝到你的模块存放目录,一般为${APACHE_HOME}/modules/
# cp mod_encoding.so /usr/local/apache/modules/mod_encoding.so
■ httpd.confd的设定
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding GBK
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>
如顺利完成,上面那些中文都可以下载了
这里只是将所有的中文都转换成UTF-8格式的传输了,我想,如果在加载分区的时候,指定为UTF-8字符来加载,也许可以不用装这个也可以,没测试过,不好下定论.
参考原文 http://blog.51766.com/page/zsc/Weblog/1141808884223?catname=
apache/web | 评论:0
| Trackbacks:0
| 阅读:2485
Submitted by admin on 2007, October 27, 11:34 AM
./run-all-tests
Can't locate DBI.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr
/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib
/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/per
l5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/s
ite_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/l
ib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/
i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3/
i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1/
i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5
/usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/
vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at ./run-all-tests line 36.
BEGIN failed--compilation aborted at ./run-all-tests line 36.
出现这个错误,同上一篇类似,也就是你的DBI模块没装.同样的方法,到ISO文件里找到 perl-DBI-1.40-5.i386.rpm,上传,安装
再次执行,出了新的问题.
./run-all-tests
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-th
read-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.
8.4/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2/
i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386
-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /
usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_pe
rl /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-mul
ti /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-mul
ti /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-mul
ti /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/per
l5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl
.) at (eval 51) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: ExampleP, Proxy, Sponge.
at /www/servers/mysqlclu/sql-bench/server-cfg line 247
这里就是DBD的问题了.再把 perl-DBD-MySQL-2.9004-3.1.i386.rpm 装一下
但时安装时又出了个错.
rpm -ivh /www/perl-DBD-MySQL-2.9004-3.1.i386.rpm
warning: /www/perl-DBD-MySQL-2.9004-3.1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
error: Failed dependencies:
libmysqlclient.so.14 is needed by perl-DBD-MySQL-2.9004-3.1.i386
Suggested resolutions:
mysql-4.1.7-4.RHEL4.1.i386.rpm
这个是程序的依懒关系,也和版本有关.
到这里,可以按照上面的方法,再一个个找出来安装(比较麻烦),或者干脆加个参数 --nodeps 去掉这个依懒关系的检查.就可以安装了,但这样的话,有可能会安装后也不能正常使用.如果这样,那就办法了,只有一个个找出来装了.
mysql/db | 评论:0
| Trackbacks:0
| 阅读:3537
Submitted by admin on 2007, October 27, 11:20 AM
在装好mysql后,用mysql自身提供一些测试程序时,时常会有这样的错误.这是因为这些测试程序都是用perl写的,也就是用perl连接数据库有些问题.
如提示下面这个错误,是说你的系统里少装了一个DBD的模块.可以用rpm -qa | grep "name"来查找你所有的东东有没装.
./run-all-tests
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains:
/usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5
/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-lin
ux-thread-multi /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/
perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1/i38
6-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr
/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_pe
rl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/
perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/
i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_
perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-t
hread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/pe
rl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_per
l/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/l
ib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at (eval 51) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: ExampleP, Proxy, Sponge.
at /www/servers/mysqlclu/sql-bench/server-cfg line 247
在网上找了下,但没找到具体的原因和安装方法.但觉得是DBD的模块问题.网上也没找到有这个模块.就在RHEL4的ISO文件里找,在第二张光盘里有一个 perl-DBD-MySQL-2.9004-3.1.i386.rpm ,把这个上传,安装就OK了
mysql/db | 评论:0
| Trackbacks:0
| 阅读:4540
Submitted by admin on 2007, October 26, 3:05 PM
有些缘份是永远不会有结果的
爱一个人不一定要拥有
但拥有一个人一定要珍惜
不要等到伤害的时候才会乞求原谅
不要等到失去时候再去挽回
如果我不小心流下一滴泪水
那是我不愿意忘记你是谁
世界上只有两种可以称之为浪漫的情感
一种叫相濡以沫
一种叫相忘于江湖
我们要做的是争取和最爱的人相濡以沫
和次爱的人相忘于江湖
也许不是不曾心动
不是没有可能
只是有缘无份
情深缘浅
我们爱在不对的时间
回首往事的时候
想起那些如流星般划过生命的爱情
我们常常会把彼此的错地归咎为比缘份
其实说到底
缘份是那么虚幻抽象的一个概念
真正影响我们
往往是那一时三刻相遇与相爱的时机
男女之间的交往
充满了犹疑忐忑的不确定与欲言又止的矜持
一个小小的变数
就可以完全改变选择的方向
这世界有着太多的
这样那样的限制与隐秘的禁忌
又有太多难以预测的变故和身不由已的离合
一个转身
也许就已经一辈子错过
要很多年以后
才会参透所有的争取与努力
也许还抵不过命运开的一个玩笑
上帝只在云端眨了一眨眼
所有的结局
就都已经完全改变
在对的时间,遇到对的人,是一种幸福
在对的时间,遇到错的的,是一种悲伤
在错的时间,遇到对的人,是一声叹息
在错的时间,遇到错的人,是一种无奈
回忆的花瓣掠过心湖
泛起片片涟漪
爱不是千言万语
也不是朝朝暮暮
爱是每当午夜梦醒时
发现内心牵挂的依然是你
生活闲谈 | 评论:0
| Trackbacks:0
| 阅读:2257
Submitted by admin on 2007, October 25, 10:23 AM
昨天作了一个mysql的集群测试.用了三台机.一台作管理(实际上是作数据同步用),两个节点.两个节点间的数据,是实时同步的,但在存储引擎里得用ndbcluster.只是简单测试了这个集群效果.因为之前一直不太理解,他这个数据是如何同步.原来是通过管理机来实现实时的同步.这样的话,我觉得,在写数据频繁的应用上,效率不好(网上很多文章也这样说.更多的是说mysql的集群问题太多,限制太多),但在select的应用上,确实有不错的效果,以及达到分流效果.
这里所说的集群,是mysql官方的方法做的.和其它集群应用是不同的.如LVS.在LVS里,管理机是实现分流调度的.而mysql这里的管理机,只不过是起到一个数据同步的作用,没有分流的作用.这样的话,应用上,限制就比较多了
不过,这个数据同步问题解决了.要是再加一层LVS来作分流调度,应该是一个比较理想的mysql集群负载均衡了.至少在读频繁的应用上,会有不错的效果.但在写频繁的应用上,就有待测试了
此次所有的mysql版本是5.0,45
还有,在mysql集群上还有一个问题,就是那些数据都存储在内存上,也就是需要很大的内存.这里也是一个限制了.不过,在5.1版以后的这个问题,会有改善.
接下来,将会作这一系列的测试
mysql/db | 评论:0
| Trackbacks:0
| 阅读:3030