修改mysql存储引擎备份数据库报错及解决方案

备份数据库报错

原因:由于监控服务器最近cpu负载比较高。(cpu4核心,负载2.7左右)感觉很奇怪,因为别的服务器mysql占用的资源并不多,因此我首先优化了数据库的配置文件。cpu稍微下降了一点,但是没有特别明显的变化。

于是,从mysql的存储引擎和日志考虑,结果发现默认用的引擎是myisam。好吧。换成innodb,(由于事先我没备份,就在配置文件修改了引擎,因为日志除了二进制其他并没有开启。所以没动它。重启数据库。


ok

早就听说这两个引擎,区别,看来性能差别真大啊!


好吧。备份数据库吧!

使用备份全部数据库时候

mysqldump: Got error: 23: Out of resourceswhen opening file‘./mysql/jchigr32.MYD‘ (Errcode: 24) when using LOCK TABLES

原因

出现Outof resources when opening file ‘./xxx.MYD‘ (Errcode: 23)错误是

因为打开的文件数超过了my.cnf--open-files-limitopen-files-limit选项

无法在mysql命令行直接修改,必须在my.cnf中设定,最大值是65536

 

首先用ulimit-n命令查看下打开文件数限制:

默认是1024

解决

vim  /etc/my.cnf

open_files_limit=65536(最大)

重启mysql  ok

检查

mysqlcheck -uroot -pxxx  mysql

Error    : Youcan‘t use locks with log tables.

Error    : Table‘mysql.tempmix‘ doesn‘t exist

status   :Operation failed

mysql.tempmix1

Error    : Table‘mysql.tempmix1‘ doesn‘t exist

status   :Operation failed

mysql.tempmix4

Error    : Table‘mysql.tempmix4‘ doesn‘t exist

status   :Operation failed

 

好吧!请教谷歌大神

使用LOCK TABLES时,mysqldump的表不存在

症状

MySQL数据库转储失败,错误:

mysqldump: Goterror: 1146: Table ‘<TABLENAME>‘ doesn‘t exist when using LOCK TABLES

原因

  1. 也许有人删除并重新创建InnoDB数据文件却忘了从数据库目录中删除InnoDB表的相应的.FRM文件,或者有人移动.FRM文件到另一个数据库。 请与show tables
  2. 不正确的权限和所有权上表文件MySQL数据目录
  3. 表已损坏
  4. 表中创建大写

解析度

  1. 请与show tables ,如果表中未列出的举动.frm从数据库目录文件出来    
  2. 权限和所有权在MySQL数据目录表的文件是不正确的,理想的所有者应该是MySQL用户和权限设置为660。
  3. 修复表
  4. 设置lower_case_table_names

如果以上所有点都ok然后尝试使用--skip-lock-tables参数用mysqldump 。


根据上面的思路,很快解决!

如果出现这种错误,建议单独备份数据库。

时间: 2024-12-26 20:38:18

修改mysql存储引擎备份数据库报错及解决方案的相关文章

Emoji表情符号录入MySQL数据库报错的解决方案

前言:手机app应用评论的时候,恢复表情符号,提示失败.?1,查看tomcat后台日志,核心报错信息如下:  Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)at com.mysql.

MysqL5.7在使用mysqldump命令备份数据库报错:mysqldump: [Warning] Using a password on the command line interface can be insecure.

在阿里云服务器增加一个shell脚本定时备份数据库脚本执行任务时,测试性的执行了备份命令,如下 [[email protected] mysql_bak]# /usr/local/mysql/bin/mysqldump -uroot -pmyServerPwd# dateabase > /data/mysql_bak/bak_test.sql 在执行完了命令本该在指定的目录下出现bak_test.sql文件,然而并没有生成,报了一行错误.这个问题应该是在MySQL5.6+版本的时候就有出现,可能

mysql 用source 导入数据库报错

平时一直使用phpmyadmin或mysqldum进行导出,使用source命令导入数据库. 但换了新版本mysql后,上述导入方法出现以下错误: ERROR: Unknown command '\\'. Query OK, 2022 rows affected (0.71 sec) Records: 2022 Duplicates: 0 Warnings: 0 然后就是命令行报mysql连接错误,不停的reconnect. 两个数据库全部为utf8格式,phpmyadmin也没有编码问题,但查

Navicat链接数据库报错1130解决方案

1.背景 使用localhost 可以正常连接mysql服务器,但是使用ip地址连接保存如下: 2.问题原因 默认情况下root用户只允许本机访问,即使用localhost访问,如下图: 解决方案:将root用户对用的host改为 '%',即允许所有IP访问,然后刷新即可. 3.问题解决具体步骤 1.命令窗口登录mysql mysql  -uroot  -padmin 2.连接到mysql(数据库名) use mysql; 3.修改表user的值 update user set host = '

mysql 保存emoji时报,数据库报错:Caused by: java.sql.SQLException: Incorrect string value: &#39;\xF0\x9F\x98\x82\xF0\x9F...&#39; for column &#39;review&#39; at row 1

错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智能手机输入法中的表情.那为什么会报错呢?因为mysql中的utf-8并不是真正意义上的utf-8,它只能存储1~3个字节长度的utf-8编码,如果想存储4个字节的必须用utf8mb4类型.不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3. 常用

数据库 之 Mysql存储引擎介绍

1  存储引擎概念介绍 存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法.数据库中的存储引擎其实是对使用了该引擎的表进行某种设置,数据库中的表设定了什么存储引擎,那么该表在数据存储方式.数据更新方式.数据查询性能以及是否支持索引等方面就会有不同的"效果". 通过选择不同的存储引擎,获得额外的速度或者功能,从而改善服务器的应用的整体功能.例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎.内存存储引擎能够在内存中存储所有

MySQL 转换/修改表存储引擎 详细介绍

MySQL表转换(转换/修改表存储引擎): 有几种方法可以吧表从一种引擎转移到另外一种引擎上,都有自己的优缺点.下面介绍3种常用的方法. 一:ALTER TABLE 把表从一种引擎转移到另外一种引擎最简单快捷的方法用ALTER TABLE语句: mysql>ALTER TABLE mytablename ENGINE = 引擎类型 详细介绍该用法:这种语法适合所有的存储引擎,不过这里有一个"陷阱":这种转换过程会消耗大量时间.MySQL为此要执行一个旧表到新表的逐行复制(Row-

修改mysql数据引擎的方法- 提高数据库性能

前言:同学告我说,他为了能使得数据查询变得快一点,修改的数据引擎,故查询一下,总结一下. 登录mysql后,查看当前数据库支持的引擎和默认的数据库引擎,使用下面命令: mysql>show engines; +--------------------+---------+-------------------------------------------------------------------------------------------------------+----------

Python - - MySQL数据库 - - 报错锦集

注:环境配置信息,系统环境CentOS 7.4,数据库版本 mysql-5.7.24 1,跳过授权表 # 在命令行跳过授权表命令 mysqld_safe --skip-grant-tables & # 在 my.cnf 文件配置跳过授权表命令 [mysqld] skip-grant-tables 2,更改root密码 # 方法一: update mysql.user set authentication_string=password('root') where user='root' and