数据库维护
备份数据
由于MySSQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据。
- 使用命令行实用程序mysqldump转储所有数据库内容到某个外部文件。
- 可用命令行实用程序mysqlhotcopy从一个数据库复制所有数据(并非所有数据库引擎都支持这个实用程序)。
- 可以使用MySQL的BACKUP TABLE或SELECT INTO OUTFILE转储所有数据到某个外部文件。
为了保证所有数据被写到磁盘(包括索引数据),可能需要在进行备份前使用FLUSH TABLES语句。
数据库维护
- ANALYZE TABLE,用来检查表键是否正确。
mysql> ANALYZE TABLE orders;
+-------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------------+---------+----------+----------+
| shop.orders | analyze | status | OK |
+-------------+---------+----------+----------+
1 row in set (0.03 sec)
- CHECK TABLE,用来针对许多问题对表进行检查。在MyISAM表上还对索引进行检查。
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option: {
FOR UPGRADE
| QUICK
| FAST
| MEDIUM
| EXTENDED
| CHANGED
}
CHECK TABLE检查一个或多个表是否有错误。CHECK TABLE 还可以检查视图是否存在问题,例如视图定义中引用的表不再存在。
要检查表,您必须具有一些特权。
CHECK TABLE适用于 InnoDB, MyISAM, ARCHIVE,和 CSV表格。
下表显示了可以提供的其他检查选项。这些选项将传递到存储引擎,该引擎可以使用或忽略它们。
类型 | 含义 |
---|---|
QUICK | 不要扫描行以检查链接是否不正确。适用于 InnoDB并MyISAM 表和视图。 |
FAST | 仅检查尚未正确关闭的表。被忽略 InnoDB; 仅适用于 MyISAM表和视图。 |
CHANGED | 仅检查自上次检查以来已更改的表或未正确关闭的表。被忽略 InnoDB; 仅适用于 MyISAM表和视图。 |
MEDIUM | 扫描行以确认删除的链接有效。这还将计算行的密钥校验和,并使用计算出的密钥校验和进行校验。被忽略 InnoDB; 仅适用于 MyISAM表和视图。 |
EXTENDED | 对每一行的所有键进行全键查找。这样可以确保表是100%一致的,但是要花费很长时间。被忽略InnoDB; 仅适用于 MyISAM表和视图。 |
您可以组合检查选项,如以下示例中所示,该示例对表进行快速检查以确定是否正确关闭了表:
CHECK TABLE test_table FAST QUICK;
诊断启动问题
服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现。MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作为系统进程或服务自动启动的,这些消息可能看不到。
在排除系统启动问题时,首先应该尽量手动启动服务器。
查看日志文件
MySQL维护管理员依赖的一系列日志文件。主要有以下几种:
日志类型 | 写入日志的信息 |
---|---|
错误日志 | 启动,运行或停止mysqld遇到的问题 |
通用查询日志 | 建立的客户连接和从客户那里收到的陈述 |
二进制日志 | 更改数据的语句(也用于复制) |
中继日志 | 从复制主服务器收到的数据更改 |
慢查询日志 | long_query_time执行耗时超过几秒钟的查询 |
DDL日志(元数据日志) | DDL语句执行的元数据操作 |
默认情况下,除Windows上的错误日志外,没有启用任何日志。
改善性能