MySQL ------ 数据库维护(三十二)

Posted 随风而逝.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL ------ 数据库维护(三十二)相关的知识,希望对你有一定的参考价值。

备份数据

像所有的数据一样,mysql的数据也需要经常的备份。由于MySQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据,但是由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是有效

可以的解决方案

1、使用命令行实用程序mysqldump 转储所有数据库内容到某个外部文件。在进行常规备份前这个实用程序应该正常运行,以便能正确地备份转储文件。

2、使用命令行使用程序mysqlhotcopy 从一个数据库复制所有数据,但是,并非所有数据库引擎都支持这个实用程序

3、使用MySQL 的 BACKUP TABLE 或 SELECT INTO OUTFILE 转储所有数据到某个外部文件,这两个语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可以用RESTORE  TABLE 来复原。 

为了保证所有数据被写到磁盘(包括索引数据),可能需要在进行备份前使用FLUSH TABLE 语句,首先刷新未写的数据

进行数据库维护

MySQL 提供了一系列的语句,可以保证数据正确和正常运行。

1、ANALYZE TABLE 用来检查表键是否正确

--
 analyze table orders;

2、CHACK TABLE 用来针对许多问题对表检查。在MyISAM 表上还对索引进行检查,

      CHANGED 检查自最后一次检查以来改动的表,

      EXTENDED 执行最彻底的检查,

      FAST  只检查为正常关闭的表,

      MEDIUM 检查所有被删除的链接并进行键检验

      QUICK 只进行快速扫描

-- 发现和修复问题 
 check table orders,orderitems;

 

 3、如果MYISAM 表访问产生不确定和不一致的结果,可能需要用REPAIR TABLE 来修复相应的表

4、如果要从一个表中删除大量数据,使用OPTIMIZE TABLE 来收回所有空间从而优化表的性能。

 

诊断启动问题

服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现,MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作为系统进行或服务自启动的,所以一般看不到,因此在排除系统启动问题时,首先应该尽量用手动启动服务器。MySQL服务器自身通过在命令行执行mysqld 启动

重要的mysqld 命令行选项

1、--help 显示帮助   (一个选项列表)

2、--safe-- mode 装载减去某些最佳配置的服务器

3、--verbose显示全文本消息(为获得更详细的帮助消息与--help 联合使用)

4、--version 显示版本信息然后退出

 

查看日志文件

主要的日志文件分为:

1、错误日志:包含启动和关闭问题以及任意关键错误的细节。

      此日志通常名为hostnme.err,位于data 目录中,此日志名可以使用--log--error 命令选项更改

2、查询日志:记录所有MySQL活动,在诊断问题时非常有用,此日志文件可能会很快的变得非常大,因此不应该长期使用它,

      通常名为hostname.log,位于data目录中,此名字可以使用 --log 命令行选项更改

3、二进制日志: 记录更新过的数据(或者可能更新过的数据)的所有语句

       通常名为hostname-bin ,位于data目录中。此名字可以用 --log-bin 命令行选项更改,注意此日志文件时MySQL5 中添加的,之前使用的时更新日志

4、缓慢查询日志:记录执行缓慢的任何查询。在确定数据库何处需要优化很有用

       通常名为host-slow.log ,位于data 目录中,此名字可以用--log--slow--queries 命令行选项更改

在使用日志时,可用 FLUSH   LOGS 语句来刷新和重新开始所有日志文件。

 

 可以使用vim 命令进去看一下

 

以上是关于MySQL ------ 数据库维护(三十二)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL从入门到精通50讲(三十二)-ScyllaDB生产环境集群搭建

MySQL从入门到精通50讲(三十二)-ScyllaDB生产环境集群搭建

redis 简单整理——缓存设计[三十二]

mysql 第三十二篇文章~并发导致的从库延迟问题

MySQL实战第三十二讲-为什么还有kill不掉的语句?

林晓斌MySQL实战第三十二讲-为什么还有kill不掉的语句?