『MySQL』数据库维护
备份数据
由于MySQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据。
但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是有效。
下面列出这个问题的可能解决方案:
使用命令行实用程序
mysqldump
转储所有数据库内容到某个外部文件。在进行常规备份前这个实用程序应该正常运行,以便能正确的备份转储文件。
可用命令行实用程序
mysqlhotcopy
从一个数据库复制所有数据(并非所有数据库引擎都支持这个实用程序)。可以实用MySQL的
BACKUP TABLE
或SELECT INTO OUTFILE
转储所有数据到某个外部文件。这两条语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可用
RESTORE TABLE
来复原。
首先刷新未写数据:为了保证所有数据被写到磁盘(包括索引数据),可能需要在进行备份前使用
FLUSH TABLES
语句。
进行数据库维护
ANALYZE TABLE
,用来检查表键是否正确。
1 | ANALYZE TABLE orders; |
CHECK TABLE
用来针对许多问题对表进行检查。在MyISAM表上还对索引进行检查。CHECK TABLE
支持一系列的用于MyISAM表的方式。CHANGED
检查自最后一次检查以来改动过的表。EXTENDED
执行最彻底的检查。FAST
只检查未正常关闭的表。MEDIUM
检查所有被删除的链接并进行键检验。QUICK
只进行快速扫描。
1 | -- CHECK TABLE发现和修复问题 |
如果MyISAM表访问产生不正确和不一致的结果,可能需要用
REPAIR TABLE
来修复相应的表。这条语句不经常使用,如果需要经常使用,可能会有更大的问题要解决。
如果从一个表中删除大量的数据,应该使用
OPTIMIZE TABLE
来收回所用的空间,从而优化表的性能。
诊断启动问题
服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现。
MySQL在问题发生时报告错误,但由于多数MySQL服务器是作为系统进程或服务自动启动的,这些消息可能看不到。
在排除系统启动问题时,首先应该尽量用手动启动服务器。MySQL服务器自身通过在命令行上执行
mysqld
启动。下面是几个重要的
mysqld
命令行选项:--help
显示帮助——一个选项列表。--safe-mode
装载减去某些最佳配置的服务器。--verbose
显示全文本消息(为获得更详细的帮助消息与--help
联合使用)。--version
显示版本信息然后退出。
几个另外的命令行选项(与日志文件的使用有关)在下一节列出。
查看日志文件
MySQL维护管理员依赖的一系列日志文件。主要的日志文件有以下几种:
错误日志。它包含启动和关闭问题以及任意关键错误的细节。
此日志通常名为
hostname.err
,位于data
目录中。此日志名可用--log-error
命令行选项修改。查询日志。它记录所有MySQL活动,在诊断问题时非常有用。此日志文件可能很快会变得非常大,不应该长期使用。
此日志通常名为
hostname.log
,位于data
目录中。此名字可以用--log
命令行选项更改。二进制文件。它记录更新过数据(或者可能更新过数据)的所有语句。
此日志通常名为
hostname-bin
,位于data
目录内。此名字可用--log-bin
命令行选项更改。注意,这个日志文件是MySQL 5中添加的,以前的MySQL版本中使用的是更新日志。
缓慢查询日志。此日志记录执行缓慢的任何查询。此日志在确定数据库何处需要优化很有用。
此日志通常名为
hostname-slow.log
,位于data
目录中。此名字可用--log-slow-queries
命令行选项更改。
在使用日志时,可用
FLUSH LOGS
语句来刷新和重新开始所有日志文件。