from:http://jackywdx.cn/2009/05/install_php_minimum/
在研究PHP内核的时候,每次改动源代码都得重新编译PHP,每次编译都得费上好一段时间,如果只是想调试内核而不需要PHP的其他功能,可以把PHP的绝大部分模块都去掉,这样编译速度就会快很多。我用了下面的configure配置:
./configure –prefix=/usr/local/php5.2.9_2 –disable-xmlwriter –disable-xmlreader –disable-tokenizer –disable-simplexml –disable-posix –disable-dom –disable-ctype –disable-hash –disable-json –disable-filter –disable-xml –without-pear –disable-cgi –disable-pdo –disable-libxml –without-iconv –disable-spl –without-sqlite –disable-session –disable-reflection
这样编译出来的PHP其他就没有加载任何模块了,编译速度也快了不少。不过还可以改造编译的时候的环境检查,现在还不知道如何改造,等知道了再贴上来。
刚刚发现一个问题,configure只需要运行一次就够了,运行之后会生成Makefile文件,记录了一些配置选项,下次修改源文件的时候再重新编译的时候只需要运行make && make install就可以了
make install的时候会安装不少文件:
Installing PHP CLI binary: /usr/local/php5.2.9_2/bin/
Installing PHP CLI man page: /usr/local/php5.2.9_2/man/man1/
Installing build environment: /usr/local/php5.2.9_2/lib/php/build/
Installing header files: /usr/local/php5.2.9_2/include/php/
Installing helper programs: /usr/local/php5.2.9_2/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php5.2.9_2/man/man1/
page: phpize.1
page: php-config.1
但我只需要生成 php程序就可以,修改Makefile文件
install_targets = install-cli install-build install-headers install-programs
找到这一行,然后把这一行注释掉,再增加一行:
install_targets = install-cli
这样每次make install的时候就只要安装生成PHP程序了。
呵呵,这样速度快了N多。
做优化用的上了,针对自己的环境,需要什么就enable
在研究PHP内核的时候,每次改动源代码都得重新编译PHP,每次编译都得费上好一段时间,如果只是想调试内核而不需要PHP的其他功能,可以把PHP的绝大部分模块都去掉,这样编译速度就会快很多。我用了下面的configure配置:
./configure –prefix=/usr/local/php5.2.9_2 –disable-xmlwriter –disable-xmlreader –disable-tokenizer –disable-simplexml –disable-posix –disable-dom –disable-ctype –disable-hash –disable-json –disable-filter –disable-xml –without-pear –disable-cgi –disable-pdo –disable-libxml –without-iconv –disable-spl –without-sqlite –disable-session –disable-reflection
这样编译出来的PHP其他就没有加载任何模块了,编译速度也快了不少。不过还可以改造编译的时候的环境检查,现在还不知道如何改造,等知道了再贴上来。
刚刚发现一个问题,configure只需要运行一次就够了,运行之后会生成Makefile文件,记录了一些配置选项,下次修改源文件的时候再重新编译的时候只需要运行make && make install就可以了
make install的时候会安装不少文件:
Installing PHP CLI binary: /usr/local/php5.2.9_2/bin/
Installing PHP CLI man page: /usr/local/php5.2.9_2/man/man1/
Installing build environment: /usr/local/php5.2.9_2/lib/php/build/
Installing header files: /usr/local/php5.2.9_2/include/php/
Installing helper programs: /usr/local/php5.2.9_2/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php5.2.9_2/man/man1/
page: phpize.1
page: php-config.1
但我只需要生成 php程序就可以,修改Makefile文件
install_targets = install-cli install-build install-headers install-programs
找到这一行,然后把这一行注释掉,再增加一行:
install_targets = install-cli
这样每次make install的时候就只要安装生成PHP程序了。
呵呵,这样速度快了N多。
做优化用的上了,针对自己的环境,需要什么就enable
金山词霸2009 牛津版-正版序列号
[ 2009/05/21 21:34 | by selboo ]
Syscheck2(1.0.0.69)
[ 2009/05/21 21:28 | by selboo ]
syscheck(1.0.0.69)
修正一处文字错误,将强制删除功能添加到服务页及文件查看页右键上。
修正活动文件页的修复并删除文件在文件已不存时不清理注册表的BUG。
syscheck2 反黑辅助说明:
本软件适用于Win2000,winxp及Win2003。以下为功能的简要说明。
1:进程管理
红色显示的是非系统的进程或文件。点击一个进程可以列出进程包含的模块。你可以中止包括系统进
程在内的所有进程,但不推荐你去中止第一个svchost.exe前的进程(包括第一个svchost.exe)。这样做的
后果可能是导致系统重启或无法关机。
syscheck的进程管理页可列出win32级的隐藏进程,但不会特别标注它。
通常在手动杀毒中会结束那些红色显示的进程,很多全局钩子会插入到Explorer等系统进程中(注意模
块中的红色dll),所以有时也会结束这些系统进程以便删除病毒。为避免病毒进程的重复加载,可以勾选
<限制线程的创建>来禁止新的线程。
在进程管理页的模块显示栏中右键选项有属性,删除到回收站,加入到重启删除列表三项,可以方便在
进程显示页就分析、清理恶软或木马。
<删除到回收站> 会结束该模块的主进程后删除模块列表中选定的文件,支持多选。
<卸载模块并删除文件> 在删除全局HOOK的DLL时可能会用到。
<加入到重启删除列表> 直接将选定的文件重启后删除。(注意不要把系统DLL删了)建议只对红色显
示的非系统模块进行删除处理。
<永久禁止此文件的执行> 即软件限制策略,仅对exe文件有效。注意,过多地限制软件的执行可能会
影响系统运行效率。
2:服务管理
红色显示的非系统服务。单击列表标题可以排序以便快速查找新增的系统服务。对于以svchost.exe启
动的服务,文件路径显示的是该服务文件而非svchost.exe的路径。这一点区别于sc命令显示出来的文件
路径。
中止服务功能是仅在系统重启前中止服务,并不是永久性的中止服务。而删除服务则是删除服务键值(
不提供删除前的保存。所以,要删除你得自已去确定是否真要这么做)。
值得注意的是,某些服务是无法中止或删除的(比如划词搜索的驱动服务)。这是因为它可能采用了注
册表键值的保护。对付这类服务,要使用内核Hook检查中的ssdt恢复功能后,
才能在本页中删除其键值。(要注意的是,某些服务不提供终止服务,所以删除服务后它可能仍在运行,
需要重启才真正停止)
在服务页使用右键可获得更多的服务控制。
3:活动文件
活动文件页显示了包括启动项在内的容易被侵入改写的注册表键值。syscheck仅关注于改写了的键值
,所以不同的机器上显示内容并不一样。
在做恢复前,可以核对一下讯息栏显示的内容,以确定是否要恢复。对于没有讯息显示的项目可以定位
文件查看文件的属性。
要注意的是,syschek在本页中的恢复不仅仅是改回系统默认值(或删除不需要的键值),如果需要恢
复的是一个DLL文件工作的键值,syschek还会做反注册该DLL的工作。
Winsock检测用于检测Lsp被劫持的情况,不管是否检测到第三方的DLL是否加载,也允许用户强制恢
复Winsock。所以,也可以用来作其它检测修复工具破坏掉了Winsock引起网页不能浏览的恢复处理。
4:敏感键值
本页显示的内容是没有对应文件的系统键值。这些是系统允许的,但有改写后可能造成你使用不便的
键值(如NoRun等,文件关联改写)等。
5:内核Hook检测
内核Hook检测只关注于被Hook了的内核函数,一般来说对应的模块提供者是一个.sys文件。
以划词搜索为例,它的驱动交叉保护(注册表HOOK及文件HOOK),自身的卸载与其它的卸载工具都不能删
除hcalway.sys及abhcop.sys.sys文件(且卸载后这两个驱动还在运行中,所以,你无法直接删除这两个文
件。
对付这样的系统底层驱动,可以勾选并恢复成系统默认函数以使其驱动保护失效。要注意的是,大部
份的杀软也注册有底层HOOK,如果你选择了它们,还原后至重启前这些杀软的实时监视将可能失效。
恢复系统底层原始函数地址后,就可以在服务管理页删除划词搜索的注册表服务项了(恢复前由于受
其驱动abhcop.sys的保护,是无法删除其注册的服务项)。然后重启机器(系统无法删除一个运行中的文
件,而划词的驱动又不停供停止功能,所以只能重启),就可以手动删除这两个文件了(当然也可以用内置
的资源管理器中的<加入重启删除列表>功能,来代替手动删除的操作)。
由于底层Hook的优先级很高,所以恢复了SSDT后,可能会有一些隐藏的进程或文件会显示出来,故可
以在恢复SSDT后再次观察各检测页状况以删除受这些驱动隐藏、保护的进程,注册表项等。
6:文件搜索
通过限制一定条件搜索,以便清除系统中的病毒备份或找到未知病毒。
7:文件浏览
由于syscheck采用了一些反HOOK手段,所以内置的资源管理器可以看到隐藏的文件或文件夹(例如灰
鸽子、hackdef100隐藏的文件)。这样方便你做删除文件的工作。对于利用系统本身特性隐藏的文
件(如Downloaded Program Files),内置资源管理器也可一览无遗。
内置资源管理器用法与Explorer基本相同,右键菜单除了普通的删除操作外,还有延时删除(重启后
生效),可用于删除顽固文件。(注意这个选项没有后悔药,删除前多看一眼文件属性,修改日期等讯息
,不要把受保护的系统文件也删了!)。
修正一处文字错误,将强制删除功能添加到服务页及文件查看页右键上。
修正活动文件页的修复并删除文件在文件已不存时不清理注册表的BUG。
syscheck2 反黑辅助说明:
本软件适用于Win2000,winxp及Win2003。以下为功能的简要说明。
1:进程管理
红色显示的是非系统的进程或文件。点击一个进程可以列出进程包含的模块。你可以中止包括系统进
程在内的所有进程,但不推荐你去中止第一个svchost.exe前的进程(包括第一个svchost.exe)。这样做的
后果可能是导致系统重启或无法关机。
syscheck的进程管理页可列出win32级的隐藏进程,但不会特别标注它。
通常在手动杀毒中会结束那些红色显示的进程,很多全局钩子会插入到Explorer等系统进程中(注意模
块中的红色dll),所以有时也会结束这些系统进程以便删除病毒。为避免病毒进程的重复加载,可以勾选
<限制线程的创建>来禁止新的线程。
在进程管理页的模块显示栏中右键选项有属性,删除到回收站,加入到重启删除列表三项,可以方便在
进程显示页就分析、清理恶软或木马。
<删除到回收站> 会结束该模块的主进程后删除模块列表中选定的文件,支持多选。
<卸载模块并删除文件> 在删除全局HOOK的DLL时可能会用到。
<加入到重启删除列表> 直接将选定的文件重启后删除。(注意不要把系统DLL删了)建议只对红色显
示的非系统模块进行删除处理。
<永久禁止此文件的执行> 即软件限制策略,仅对exe文件有效。注意,过多地限制软件的执行可能会
影响系统运行效率。
2:服务管理
红色显示的非系统服务。单击列表标题可以排序以便快速查找新增的系统服务。对于以svchost.exe启
动的服务,文件路径显示的是该服务文件而非svchost.exe的路径。这一点区别于sc命令显示出来的文件
路径。
中止服务功能是仅在系统重启前中止服务,并不是永久性的中止服务。而删除服务则是删除服务键值(
不提供删除前的保存。所以,要删除你得自已去确定是否真要这么做)。
值得注意的是,某些服务是无法中止或删除的(比如划词搜索的驱动服务)。这是因为它可能采用了注
册表键值的保护。对付这类服务,要使用内核Hook检查中的ssdt恢复功能后,
才能在本页中删除其键值。(要注意的是,某些服务不提供终止服务,所以删除服务后它可能仍在运行,
需要重启才真正停止)
在服务页使用右键可获得更多的服务控制。
3:活动文件
活动文件页显示了包括启动项在内的容易被侵入改写的注册表键值。syscheck仅关注于改写了的键值
,所以不同的机器上显示内容并不一样。
在做恢复前,可以核对一下讯息栏显示的内容,以确定是否要恢复。对于没有讯息显示的项目可以定位
文件查看文件的属性。
要注意的是,syschek在本页中的恢复不仅仅是改回系统默认值(或删除不需要的键值),如果需要恢
复的是一个DLL文件工作的键值,syschek还会做反注册该DLL的工作。
Winsock检测用于检测Lsp被劫持的情况,不管是否检测到第三方的DLL是否加载,也允许用户强制恢
复Winsock。所以,也可以用来作其它检测修复工具破坏掉了Winsock引起网页不能浏览的恢复处理。
4:敏感键值
本页显示的内容是没有对应文件的系统键值。这些是系统允许的,但有改写后可能造成你使用不便的
键值(如NoRun等,文件关联改写)等。
5:内核Hook检测
内核Hook检测只关注于被Hook了的内核函数,一般来说对应的模块提供者是一个.sys文件。
以划词搜索为例,它的驱动交叉保护(注册表HOOK及文件HOOK),自身的卸载与其它的卸载工具都不能删
除hcalway.sys及abhcop.sys.sys文件(且卸载后这两个驱动还在运行中,所以,你无法直接删除这两个文
件。
对付这样的系统底层驱动,可以勾选并恢复成系统默认函数以使其驱动保护失效。要注意的是,大部
份的杀软也注册有底层HOOK,如果你选择了它们,还原后至重启前这些杀软的实时监视将可能失效。
恢复系统底层原始函数地址后,就可以在服务管理页删除划词搜索的注册表服务项了(恢复前由于受
其驱动abhcop.sys的保护,是无法删除其注册的服务项)。然后重启机器(系统无法删除一个运行中的文
件,而划词的驱动又不停供停止功能,所以只能重启),就可以手动删除这两个文件了(当然也可以用内置
的资源管理器中的<加入重启删除列表>功能,来代替手动删除的操作)。
由于底层Hook的优先级很高,所以恢复了SSDT后,可能会有一些隐藏的进程或文件会显示出来,故可
以在恢复SSDT后再次观察各检测页状况以删除受这些驱动隐藏、保护的进程,注册表项等。
6:文件搜索
通过限制一定条件搜索,以便清除系统中的病毒备份或找到未知病毒。
7:文件浏览
由于syscheck采用了一些反HOOK手段,所以内置的资源管理器可以看到隐藏的文件或文件夹(例如灰
鸽子、hackdef100隐藏的文件)。这样方便你做删除文件的工作。对于利用系统本身特性隐藏的文
件(如Downloaded Program Files),内置资源管理器也可一览无遗。
内置资源管理器用法与Explorer基本相同,右键菜单除了普通的删除操作外,还有延时删除(重启后
生效),可用于删除顽固文件。(注意这个选项没有后悔药,删除前多看一眼文件属性,修改日期等讯息
,不要把受保护的系统文件也删了!)。
下载文件 (已下载 353 次)
Mysql 数据引擎转换
[ 2009/05/20 10:21 | by selboo ]
从MySQL 5.x起,MySQL已经自带一个PERL工具。此工具可以批量转换MYSQL的表的引擎,这个工具对于批量转换表的朋友就比较好用啦,工具为mysql_convert_table_format,如果是RPM安装一般在/usr/bin 或者/usr/sbin下。源码安装的朋友可能就在你自己定义的目录—basedir/bin下。我的为/usr/local/mysql/bin,其实mysql_convert_table_format的帮助文件已经非常详细啦!方便自己,也给象我一样比较懒的人啰,就当把帮助文档翻译一下啰,本人英文水平还处在小学水平,欢迎拍砖
[root@test ~]# mysql_convert_table_format
/usr/sbin/mysql_convert_table_format
version 1.1
Conversion of a MySQL tables to other table types.
转换MYSQL 表成其它表的类型
如:INNODB ,MEMORY等
l
Usage: /usr/sbin/mysql_convert_table_format database [tables]
用法: /usr/sbin/mysql_convert_table_format 数据库名
表名,也就是可以单独指定全库,或者全表,类似mysqldump
If no tables has been specifed, all tables in the database will be converted.
如果没指定表,那么数据库中的所有表将会被转换
The following options are available:
–force
Continue even if there is some error.
如果碰到错误强制进行转换
–help or –Information
Shows this help
查看帮助
–host=’host name’ (Default localhost)
Host name where the database server is located.
转换的主机名,默认为本地主机(localhost)
–password=’password’
Password for the current user.
当前进行转换用户的密码
–port=port
TCP/IP port to connect to if host is not “localhost”.
如果不是以localhost 连接的话,请指定端口
–socket=’/path/to/socket’
Socket to connect with.
SOCKET文件存在的位置(SOCKET是进程间通信所用到的)
–ENGINE=’table-type’
Converts tables to the given table type (Default: myisam)
MySQL 3.23 supports at least the BDB, ISAM and MYISAM types.
存储引擎,默认为MYISAM,这里要注意,我测试的时候,要修改这个PERL脚本,如果你把库转成INNODB,就在脚本里把MYISAM写成INNODB,其它类同,我也不清楚用这个参数指定为什么不行,本人对PERL也就能看懂一些,没学过程序开发,也没做过程序员,水平也不怎么样!所以,如果谁有更好的方法,或者改良一下这个脚本应该是可以的。
–user=’user_name’
User name to log into the SQL server.
连接的用户名
–verbose
This is a test specific option that is only used when debugging a test.
Print more information about what is going on.
–version
Shows the version of this program.
查看工具的版本信息
用法:我是用本机进行测试,OS:RHEL5.2 MYSQL:5.1.30
mysql_convert_table_format mo –user=’root’ –password=’mysql’ –force –socket=’/tmp/mysql.sock’
把数据库mo中的所有表转换成MYISAM引擎
查看数据文件目录
[root@test ~]# ll /opt/mysql-data/mo/
总计 960
-rw-rw—- 1 mysql mysql 12914 03-02 22:55 action_log.frm
-rw-rw—- 1 mysql mysql
8900 03-02 22:55 alarm_log.frm
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 22:55 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 22:55 check_data_log.par
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data_tmp.frm
-rw-rw—- 1 mysql mysql
9096 03-02 22:55 checkpoint.frm
…………………………………….
只有表的结构文件,看看表空间有没有增长啰
[root@test ~]# ll -lh /opt/mysql-data/ib*
-rw-rw—- 1 mysql mysql
34M 03-02 23:18 /opt/mysql-data/ibdata1
-rw-rw—- 1 mysql mysql 5.0M 03-02 23:18 /opt/mysql-data/ib_logfile0
-rw-rw—- 1 mysql mysql 5.0M 12-22 20:19 /opt/mysql-data/ib_logfile1
默认没有用INNODB的是10M,现在我的变成30多M啦
修改工具
把MYISAM修改成INNODB
Vi /usr/local/mysql/bin/mysql_convert_table_format
把第26行 $opt_type=”innodb” 改成$opt_type=”myisam”
用工具进行库的转换
[root@test ~]# mysql_convert_table_format mo –user=’root’ –password=’mysql’ –socket=’/tmp/mysql.sock’
[root@test ~]#
成功完成。。在看看数据文件啰
总计 2568
-rw-rw—- 1 mysql mysql 12914 03-02 23:18 action_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 action_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 action_log.MYI
-rw-rw—- 1 mysql mysql
8900 03-02 23:18 alarm_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 alarm_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 alarm_log.MYI
-rw-rw—- 1 mysql mysql
8898 03-02 23:18 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 23:18 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 23:18 check_data_log.par
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p0.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p0.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p100.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p100.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p101.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p101.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p102.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p102.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p103.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p103.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p104.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p104.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p105.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p105.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p106.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p106.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p107.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p107.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p108.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p108.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p109.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p109.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p10.MYD
已经成功转换成MYISAM引擎啰
验证数据的正确性我就不贴出来了,我已经验证过了,不会有数据的丢失,其实脚本也就是批量执行
ALTER TABLE $TABLE_NAME ENGINE=$ENGINE
的动作
[root@test ~]# mysql_convert_table_format
/usr/sbin/mysql_convert_table_format
version 1.1
Conversion of a MySQL tables to other table types.
转换MYSQL 表成其它表的类型
如:INNODB ,MEMORY等
l
Usage: /usr/sbin/mysql_convert_table_format database [tables]
用法: /usr/sbin/mysql_convert_table_format 数据库名
表名,也就是可以单独指定全库,或者全表,类似mysqldump
If no tables has been specifed, all tables in the database will be converted.
如果没指定表,那么数据库中的所有表将会被转换
The following options are available:
–force
Continue even if there is some error.
如果碰到错误强制进行转换
–help or –Information
Shows this help
查看帮助
–host=’host name’ (Default localhost)
Host name where the database server is located.
转换的主机名,默认为本地主机(localhost)
–password=’password’
Password for the current user.
当前进行转换用户的密码
–port=port
TCP/IP port to connect to if host is not “localhost”.
如果不是以localhost 连接的话,请指定端口
–socket=’/path/to/socket’
Socket to connect with.
SOCKET文件存在的位置(SOCKET是进程间通信所用到的)
–ENGINE=’table-type’
Converts tables to the given table type (Default: myisam)
MySQL 3.23 supports at least the BDB, ISAM and MYISAM types.
存储引擎,默认为MYISAM,这里要注意,我测试的时候,要修改这个PERL脚本,如果你把库转成INNODB,就在脚本里把MYISAM写成INNODB,其它类同,我也不清楚用这个参数指定为什么不行,本人对PERL也就能看懂一些,没学过程序开发,也没做过程序员,水平也不怎么样!所以,如果谁有更好的方法,或者改良一下这个脚本应该是可以的。
–user=’user_name’
User name to log into the SQL server.
连接的用户名
–verbose
This is a test specific option that is only used when debugging a test.
Print more information about what is going on.
–version
Shows the version of this program.
查看工具的版本信息
用法:我是用本机进行测试,OS:RHEL5.2 MYSQL:5.1.30
mysql_convert_table_format mo –user=’root’ –password=’mysql’ –force –socket=’/tmp/mysql.sock’
把数据库mo中的所有表转换成MYISAM引擎
查看数据文件目录
[root@test ~]# ll /opt/mysql-data/mo/
总计 960
-rw-rw—- 1 mysql mysql 12914 03-02 22:55 action_log.frm
-rw-rw—- 1 mysql mysql
8900 03-02 22:55 alarm_log.frm
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 22:55 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 22:55 check_data_log.par
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data_tmp.frm
-rw-rw—- 1 mysql mysql
9096 03-02 22:55 checkpoint.frm
…………………………………….
只有表的结构文件,看看表空间有没有增长啰
[root@test ~]# ll -lh /opt/mysql-data/ib*
-rw-rw—- 1 mysql mysql
34M 03-02 23:18 /opt/mysql-data/ibdata1
-rw-rw—- 1 mysql mysql 5.0M 03-02 23:18 /opt/mysql-data/ib_logfile0
-rw-rw—- 1 mysql mysql 5.0M 12-22 20:19 /opt/mysql-data/ib_logfile1
默认没有用INNODB的是10M,现在我的变成30多M啦
修改工具
把MYISAM修改成INNODB
Vi /usr/local/mysql/bin/mysql_convert_table_format
把第26行 $opt_type=”innodb” 改成$opt_type=”myisam”
用工具进行库的转换
[root@test ~]# mysql_convert_table_format mo –user=’root’ –password=’mysql’ –socket=’/tmp/mysql.sock’
[root@test ~]#
成功完成。。在看看数据文件啰
总计 2568
-rw-rw—- 1 mysql mysql 12914 03-02 23:18 action_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 action_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 action_log.MYI
-rw-rw—- 1 mysql mysql
8900 03-02 23:18 alarm_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 alarm_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 alarm_log.MYI
-rw-rw—- 1 mysql mysql
8898 03-02 23:18 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 23:18 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 23:18 check_data_log.par
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p0.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p0.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p100.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p100.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p101.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p101.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p102.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p102.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p103.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p103.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p104.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p104.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p105.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p105.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p106.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p106.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p107.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p107.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p108.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p108.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p109.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p109.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p10.MYD
已经成功转换成MYISAM引擎啰
验证数据的正确性我就不贴出来了,我已经验证过了,不会有数据的丢失,其实脚本也就是批量执行
ALTER TABLE $TABLE_NAME ENGINE=$ENGINE
的动作
shell下时间的操作
[ 2009/05/19 17:47 | by selboo ]
date +%Y%m%d -d "2 day ago"
date +%Y%m%d -d "2 week ago"
date +%Y%m%d -d "2 month ago"
date +%Y%m%d -d "2 year ago"
date -d "yesterday"
昨天的命令是:
yesterdayformat=`date --date='yesterday' "+%Y-%m-%d_%H:%M:%S"`
echo $yesterdayformat
输出格式是:
2006-03-30_08:39:54
明天的命令是:
tomorrowformat=`date --date='tomorrow' "+%Y-%m-%d_%H:%M:%S"`
echo $tomorrowformat
输出格式是:
2006-04-01_08:41:29
在Linux下,得到N天以前或以后的日期格式:
#date –I –d ‘-n day’ (可以得到N天前的日期,格式为YYYY-MM-DD)
#date –d ‘-n day’ “+%Y%m%d” (可以得到你天前的日期,格式为YYYYMMDD)#date –I –d ‘+n day’ (可以得到N天后的日期,格式为YYYY-MM-DD)
#date –d ‘+n day’ “+%Y%m%d” (可以得到你天后的日期,格式为YYYYMMDD)
date +%Y%m%d -d "2 week ago"
date +%Y%m%d -d "2 month ago"
date +%Y%m%d -d "2 year ago"
date -d "yesterday"
昨天的命令是:
yesterdayformat=`date --date='yesterday' "+%Y-%m-%d_%H:%M:%S"`
echo $yesterdayformat
输出格式是:
2006-03-30_08:39:54
明天的命令是:
tomorrowformat=`date --date='tomorrow' "+%Y-%m-%d_%H:%M:%S"`
echo $tomorrowformat
输出格式是:
2006-04-01_08:41:29
在Linux下,得到N天以前或以后的日期格式:
#date –I –d ‘-n day’ (可以得到N天前的日期,格式为YYYY-MM-DD)
#date –d ‘-n day’ “+%Y%m%d” (可以得到你天前的日期,格式为YYYYMMDD)#date –I –d ‘+n day’ (可以得到N天后的日期,格式为YYYY-MM-DD)
#date –d ‘+n day’ “+%Y%m%d” (可以得到你天后的日期,格式为YYYYMMDD)