十一、维护
- 如果可能,偶尔运行一下OPTIMIZE table,这对大量更新的变长行非常重要。
- 偶尔用myisamchk -a更新一下表中的键码分布统计。记住在做之前关掉MySQL。
- 如果有碎片文件,可能值得将所有文件复制到另一个磁盘上,清除原来的磁盘并拷回文件。
- 如果遇到问题,用myisamchk或CHECK table检查表。
- 用mysqladmin -i10 precesslist extended-status监控MySQL的状态。
- 用MySQL GUI客户程序,你可以在不同的窗口内监控进程列表和状态。
- 使用mysqladmin debug获得有关锁定和性能的信息。
十二、优化SQL
扬SQL之长,其它事情交由应用去做。使用SQL服务器来做:
- 找出基于WHERE子句的行。
- JOIN表
- GROUP BY
- ORDER BY
- DISTINCT
不要使用SQL来做:
技巧:
- 明智地使用键码。
- 键码适合搜索,但不适合索引列的插入/更新。
- 保持数据为数据库第三范式,但不要担心冗余信息或这如果你需要更快的速度,创建总结表。
- 在大表上不做GROUP BY,相反创建大表的总结表并查询它。
- UPDATE table set count=count+1 where key_column=constant非常快。
- 对于大表,或许最好偶尔生成总结表而不是一直保持总结表。
- 充分利用INSERT的默认值。
系统环境
Windows xp sp2
安装路径
D:/Program Files/MySQL/MySQL Server 5.0/
Mysql版本
5.1.23-rc-community-log
配置主库ini文件
port=3306
datadir="D:/Program Files/MySQL/MySQL Server 5.0/Data/"
server-id=1
log-bin=mysql-bin.log
配置从库ini文件
port=3307
datadir="D:/Program Files/MySQL/MySQL Server 5.0/Data2/"
server-id=2
log-slave-updates
replicate-do-db=dbname
命令行启动主库
>mysqld-nt --defaults-file="..\my.ini"
连接到主库,创建Replacation用户
>mysql -uroot -ppassword -P3306
mysql>grant replication slave on *.* to 'rep'@'localhost' identified by 'rep';
锁住主库的table,以便备份数据文件到从库进行初始化
mysql>flush tables with read lock;
显示主库状态,注意记下当前二进制日志文件名和position
mysql> show master status;
将D:/Program Files/MySQL/MySQL Server 5.0/Data/下的内容打包复制到D:/Program Files/MySQL/MySQL Server 5.0/Data2/下,执行从库的初始化。当然,初始化也可以使用mysqldump来完成。
另外开启一个cmd,启动从库
>mysqld-nt --defaults-file=my2.ini
连接到从库进行配置,注意到这里master_log_file和master_log_pos就是前面show master status的结果
>mysql -uroot -ppassword -P3307
mysql> CHANGE MASTER TO
-> MASTER_HOST='localhost',
-> MASTER_USER='rep',
-> MASTER_PASSWORD='rep',
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_LOG_POS=228;
启动复制进程
mysql> start slave;
至此配置基本完成,在主库解开table的锁定
mysql> unlock tables;
配置全部完成,测试数据复制。
微软官方对该小工具的说明:
Installs and uninstalls executable services and assigns names to them.
显而易见,这个小工具是用以安装和卸载可执行的服务和指派服务名给这些可执行的服务的。
那么怎么去使用呢?这里我们设定要将F:\cpu.exe 以 CPUSrv 的名称显示作为服务的话,我们应当这样子做:
先将instsrv.exe放入任意目录,我们有两种办法来执行这个命令
A、CMD法
1、单击『开始』菜单中的【运行】并键入“cmd”(不包括双引号)后单击【确定】按钮
2、在CMD中使用 cd 命令进入 instsrv.exe 所在目录或者直接输入 instsrv.exe 具体路径。比如 instsrv.exe 在F:\Tools目录下的话,我们应该这样子做:
键入 cd f:\tools 后回车进入该目录
键入 instsrv CPUSrv f:\cpu.exe 回车即可
或者也可以
直接键入 f:\tools\instsrv.exe CPUSrv f:\cpu.exe 后回车即可
3、安装了服务,但此时服务并未启动,我们可以使用 Net 命令来启动服务
依旧在CMD中
键入 net start CPUSrv 后回车即可
4、启动了服务,我们还可以设置服务启动类型
依旧在CMD中
键入 sc config CPUSrv start= auto 自动启动方式
键入 sc config CPUSrv start= demand 手动启动方式
键入 sc config CPUSrv start= disabled 已禁止启动方式
B、GUI法
1、单击『开始』菜单中的【运行】
2、在【运行】文本框中键入
f:\tools\instsrv.exe CPUSrv f:\cpu.exe
后单击【确定】按钮
3、安装了服务,启动服务
单击『开始』菜单中的【运行】并键入“Services.msc”(不包括双引号)后单击【确定】按钮
4、在【服务】中的名为 CPUSrv 的服务上右击即可执行 启动§停止§重新启动 等菜单命令。双击进入即可设置启动类型。
如果我们要删除这个服务,按照上述步骤,我们执行
instsrv.exe CPUSrv REMOVE
即可删除该服务
注:不要用该工具删除系统有关服务!
我们也可以用这个小工具创建一个服务,并设定以某帐户登录启动该服务,命令格式:
instsrv CPUSrv F:\cpu.exe -a your account name -p password
当我们每次要重装WIN的时候,MBR都会被重写,这样原来的GRUB或LILO就会不见了,
或者由于某些原因使得原来的GRUB不见了,这个时候只要重装GRUB就行了
GRUB的重装方法有很多,这种方法不行,换一种试下
1.用安装光盘启动,选升级安装,再只选安装GRUB行了.
2.用安装光盘启动,到BOOT那里输入linux rescue
也就是进入求援模式,到出现#命令提示符时,输入chroot /mnt/sysimage
然后再输入grub-install /dev/hda
3.没有软驱如何修复grub/lilo引导菜单?
a.把第一张linux安装盘里的dosutils目录复制到windows盘中。如果是iso可以用
winrar3提取。
b.进入纯dos,进入dosutils目录,执行loadlin autoboot/vmlinuz
root=/dev/hdxx()hdxx是你的linux根分区。这样就能进入linux。
c.执行grub-install /dev/hdx(x=a,b,c,d) 或lilo即可以重写引导。
4.如果你用grub来引导linux和windows,当windows出毛病重新安装后,会破坏MBR
中的grub,这时需要恢复grub.
a.把linux安装光盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光
驱来引导。
b.等安装界面出来后,按[F4]键,也就是linux rescue模式。
c.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说
了,比较简单。
d.然后会出现这样的提示符:
sh#
e.我们就可以操作GRUB了.输入grub:
sh#grub
会出现这样的提示符:
grub>
我们就可以在这样的字符后面,输入:
grub>root (hdX,Y)
grub>setup (hd0)
如果成功会有一个successful......
这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上
,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB
写到硬盘的MBR上。
另外说下,有人说我没安装光盘啊?我是从硬盘安装的.呵呵,那你的ISO文件还在吧
..那再来次硬盘安装进入安装界面也是一样的....
5.如何把GRUB或LILO删掉?
只要在DOS下执行FDISK /MBR就行了...
如何配置grub?
修改/boot/grub/grub.conf文件。其中
“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第
一项,1表示第二项,依此类推。
“timeout=x”(x是一个数)是超时时间,单位是妙。也就是引导菜单显示后,如
果x秒内用户不进行选择,那么grub将启动默认项。
“splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。
其它常用项我用下面的例子来说明:
title Red Hat 8.0
root (hd1,6)
kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7
initrd /boot/initrd-2.4.18-14.img
其中"Red Hat 8.0"是在启动菜单列表里显示的名字
root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分
boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,
hd1是第二块,依此类推。y是分区位置,从0开始,也就是等于分区号减一,比如
你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。注意root后面要
有一个空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的
内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。
ro就不用管,写上不会有错。
root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7
initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。
上面是linux的,下面是windows的
title windows 98
rootnoverify (hd0,0)
chainloader +1
title xxxxxxx不用解释了,上面有解释。
rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意
rootnoverify后有空格。
chainloader +1照抄就行,注意空格