您好,登錄后才能下訂單哦!
15維護、備份和恢復
======================
日志文件位置
unix /usr/local/mysql/data
windows mysql\data
日志文件類型:
錯誤日志
查詢日志
慢查詢日志
更新日志
二進制更新日志
------
錯誤日志:
記錄服務器上發生的每個錯誤
開啟方法:/usr/local/mysql/mysqld_safe --log-error
擴展名.err
-------
查詢日志:
記錄客戶機發給服務器的每個查詢
開啟方法:/usr/local/mysql/mysqld_safe --log
擴展名.log
-------
慢查詢日志:
列出超過預先設定時間量的查詢,時間量是根據long_query_time變量確定
mysql> show variables like '%long%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 10 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> select @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10 |
+-------------------+
1 row in set (0.00 sec)
開啟方法:/usr/local/mysql/mysqld_safe --log-slow-queries
默認文件名是主機名后代-slow后綴以及.log擴展名
---------
更新日志
記錄update\create table \drop table \insert \replace\delete\grant\revoke等操作日志
開啟方法:/usr/local/mysql/mysqld_safe --log-update
---------
二進制更新日志
日志格式為二進制格式
mysqlbinlog可以將其轉化為txt文件
開啟方式:/usr/local/mysql/mysqld_safe --log-bin
默認文件名是主機名加-bin后綴,然后有一個分辨日志順序的數字
配置主從復制必須啟動二進制更新日志
手動刷新日志操作可能會導致服務器關閉
-----------------
檢查和修理表
myisamchk table-file
可選參數:
F 快速檢查 只檢查非正常關閉的文件
m 中速檢查 更詳細的檢查
e 擴展檢查 最慢速最完整的檢查
C 變更檢查 只檢查自上次檢查依賴有變化的文件
w 等待檢查 等待鎖被刪除后進行檢查
例:
/usr/local/mysql/bin/myisamchk -e db1/dbfile1
缺點:
診斷時檢查工具會鎖定客戶機,但客戶機不能再運行myisamchk時鎖住被檢查的表,如果檢查時間長可能會出問題
解決方法是給myisamchk分配更大緩存
替代方法:
check table table_name;
check table同樣可以使用關鍵字:fast\medium\extended\changed
mysql> check table a;
+-------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------+-------+----------+----------+
| an.a | check | status | OK |
+-------+-------+----------+----------+
1 row in set (0.05 sec)
區別:
myisamchk可以在數據庫不能啟動時或者不啟動時運行,check table必須要在數據庫可用時才能使用
myisamchk不能再innodb和bdb表上工作,但是check table可以
修理表:
check后發現又錯誤就必須要修復表,同樣使用myisamchk命令,只需要是用關鍵字-r就可以
myisamchk -r table-file
/usr/local/mysql/bin/myisamchk -r mysql/dbfile
修復表可以使用的選項
-r 修理和恢復 標準恢復
-o 恢復的安全模式 慢速、完全恢復
-q 快速恢復 只檢查索引,不檢查數據文件
同樣在數據庫級別也有一個與之對應的命令
repair table table_name quick;
mysql> create table ia (id int) type=myisam;
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> check table ia;
+-------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------+-------+----------+----------+
| an.ia | check | status | OK |
+-------+-------+----------+----------+
1 row in set (0.00 sec)
mysql> repair table ia;
+-------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------+--------+----------+----------+
| an.ia | repair | status | OK |
+-------+--------+----------+----------+
1 row in set (0.00 sec)
優化表
頻繁數據改變會導致表支離破碎,進而印象性能,使用optimize table命令可以清理空間,達到優化表的目的
optimize table table_name;
mysql> optimize table a;
+-------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------+----------+----------+----------+
| an.a | optimize | status | OK |
+-------+----------+----------+----------+
1 row in set (0.14 sec)
----------------------
備份和恢復
mysqldump database_name
導出db1全庫:
/usr/local/mysql/bin/mysqldump db1 --user=jonn --password=aabbss
導出db1下的an表
/usr/local/mysql/bin/mysqldump db1 an --user=jonn --password=aabbss
導出db1下的an表到an.txt
/usr/local/mysql/bin/mysqldump db1 an --user=jonn --password=aabbss >an.txt
同時備份多個數據庫,使用參數B
/usr/local/mysql/bin/mysqldump -B db1 db2
可選字段分隔控制
--field-enclosed-by
--fileds-terminated-by
--fields-escaped-by
--lines-terminated-by
使用-d關鍵字可以創建結構相同的空表
/usr/local/mysql/bin/mysqldump -d db1 an >an.structure
這樣生成的轉儲文件就是一個sql命令,可以用來創建新表
使用-t關鍵字則可以只抽取數據而不帶表結構
/usr/local/mysql/bin/mysqldump -t db1 an >an.data
恢復
快速重建
/usr/local/mysql/bin/mysql db1 <mydump.txt
在數據庫中重建
mysql> source mydump.txt
如果是只有數據的導出可以用
mysql> load data infile 'xxxx' into table xx fields terminated by ',' line terminated by '\r\n';
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。