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的值高則表示查詢運行低,不好,應該建立索引,意思是在資料檔案中讀下一行的請求數,如果大量的表掃描,則該值高