1 对备份的注意点
mysql 5中,要备份的话,当然要先设置日志了,在my.ini中设置如下
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
log-bin="E:/mysql5/log/bin.log"
log-error="E:/mysql5/log/error.log"
log="E:/mysql5/log/mysql.log"
备份时,用mysqldump,
比如mysqldump -u root -p -l -F demo>demo.sql
其中-l是在备份时锁定表,-F表示重新生成一个新的日志文件,
在备份后,如果再对数据库进行了操作,则因为都写入日志里面去了,所以如果假如数据库坏了,则可以先把原来的备份文件先恢复
,比如
mysql -u root -p demo<demo.,sql
然后再恢复全备份后到产生故障期间,新产生的日志文件.可以先去看看日志文件是如何的,
比如到上面的e:\mysql5\log目录下,用如下命令先查看日志
mysqlbinlog xxxx-bin00001
即可看到内容
然后恢复
mysqlbinlog xxxx-bin00001|mysql -u root -p demo
如果比如上午10点发生了操作操作,那么先这样恢复,恢复到误操作前的状态,然后跳过这些操作语句,最后再恢复执行这些语句
mysqlbinlog --stop-date="2008 6-18 9:59" e:\mysql5\log\xxxx-bin |mysql -u root -p
再跳过时间点
mysqlbinlog --start-date="2008 6-18 10:02" e:\mysql5\log\xxxx-bin |mysql -u root -p
2 关于索引
首先,可以用show global status like 'Com_%';
来查看当前的CRUD执行的频率;
然后记得用explain SQL语句来查看使用索引的情况,比如
explain select * from tbl\G;
这时会看到有如下输出
*************************** 1. row ***********************
id: 1
select_type: SIMPLE
table: user
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 3
Extra:
1 row in set (0.08 sec)
其中select_type表示的是类的类型,有simple,简单表,union联合表等,这个可以不大关心
type:表的连接类型
这里分很多了,常见的有ALL(全表查询,要避免的),range(单表中的范围查询)等等
possibal_keys:可能用到的索引,rows:扫描行的数量
还要记得经常查看索引使用的情况
比如show status like 'Handel_read%';
如果看到hander_reader_key的值很高,代表一个行被索引值读的次数,很低表明索引性能不高,索引不经常用.
hander_read_rnd_next的值高则表示查询运行低,不好,应该建立索引,意思是在数据文件中读下一行的请求数,如果大量的表扫描,则该值高