|
linux下shm是一种完美的内存磁盘虚拟技术, 你可以指定一个shm盘的大小, 但实际的占用不会固定为设置的大小,而是随着里面文件的大小,占用相应的宝贵的mem空间. 这些mem在也会在必要时被系统交换到硬盘上面去. 下面是使用shm虚拟存储将mysql的库运行在内存中的一个实例. debian在默认下,/dev/shm建立虚拟存储,在/etc/default/tmpfs文件中可以修改shm的大小. 或者用命令 mount tmpfs /dev/shm -t tmpfs -o size=128m来建立shm虚拟存储. 好了,我们首先建立/dev/shm/php4 用于php的session 和tmp目录, 修改它的用户和组为www-data,以及访问权限700 修改php.ini让它们指向/dev/shm/php4. 还要修改apache2的启动脚本,让apache2启动之前,检查/dev/shm/php4是否存在,并建立. mysql 的存储目录在/var/lib/mysql,一个库一个文件目录,如果只想让某些库运行在内存中,可以把相应目录用符号联接的方式,放到/dev/shm,
还有数据的备份和恢复,因为shm在关机后会丢失.所以应该在mysql的启动脚本,建立shm下的目录,并从备份复制文件到shm,在关闭脚本中,应该复制shm的数据到备份目录. 以anheng这个表为例,首先关闭mysql,以便直接操作/var/lib/mysql的文件, 关闭mysql /etc/init.d/mysql stop 开备份目录/var/lib/mysql/anheng0 mkdir /var/lib/mysql/anheng0 chown mysql:mysql /var/lib/mysql/anheng0 chmod 770 /var/lib/mysql/anheng0 复制数据 cp /var/lib/mysql/anheng/* /var/lib/mysql/anheng0 chown mysql:mysql /var/lib/mysql/anheng0/* chmod 770 /var/lib/mysql/anheng0/* 移动所有的数据到shm mv /var/mysql/anheng /dev/shm/anheng 建立符号联接 ln -s /dev/shm/anheng /var/lib/mysql/anheng 启动mysql /etc/init.d/mysql start 下一步修改/etc/init.d/mysql在启动部分最前面增加shm开目录和复制,要保证在mysql启动之前进行复制 if [ ! -e /dev/shm/anheng ] then echo mkdir /dev/shm/anheng mkdir /dev/shm/anheng chown mysql:mysql /dev/shm/anheng chmod 770 /dev/shm/anheng cp /var/lib/mysql/anheng0/* /dev/shm/anheng chown mysql:mysql /dev/shm/anheng/* chmod 660 /dev/shm/anheng/*
fi 在关闭部分最后面增加备份shm的脚本,要保证关闭之后再复制 cp /dev/shm/anheng/* /var/lib/mysql/anheng0 chown mysql:mysql /var/lib/mysql/anheng/* chmod 660 /var/lib/mysql/anheng/*
还要增加定时任务,定时用mysqldump从anheng库向anheng0库覆盖数据.防止突然关机造成的数据丢失. 如果有一台远程的mysql服务器,对anheng库进行热备份,就更完美了.具体配置方式在 mysql热备份 Linux联盟收集整理
 |
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。
| 原始作者:佚名 |
录入时间:2007-1-3 3:24:00 |
| 信息来源:不详 |
投稿信箱:itqoo@126.com |
|
|
 |
|