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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。