十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
为了让MySQL崩溃时生成正确的coredump,除了要按前一篇中讲到的那样配置好系统环境,还需要在启动mysqld时指定--core-file参数。这一配置非常重要,若不指定这一参数,则MySQL崩溃时有时能生成coredump,有时不能生成,而且最要命的是生成的coredump内容经常完全不能反映崩溃的原因,具有很强的误导性。
创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元泰和做网站,已为上家服务,为泰和各地企业和个人服务,联系电话:18980820575
一般在Linux系统中都是通过mysqld_safe脚本来启动MySQL(通过/etc/init.d/mysqld start启动时也是调用mysqld_safe),这时指定这一配置最简单的方法是在my.cnf中的[mysqld]节中加入这样一行:
core-file
mysqld_safe会自动将这一参数传递给mysqld。若直接启动mysqld,则在命令行中加上这一参数。
另外core文件的大小限制也可在my.cnf中指定。只要将如下行加入到my.cnf中的[mysqld_safe]节中
core-file-size = unlimited
通过mysqld_safe脚本启动mysqld时就会自动调用"ulimit -c unlimited"。
MySQL 随着版本不停迭代,崩溃的现象越来越少,也越来越隐蔽。
一旦遇到生产环境上的 MySQL 崩溃,就需要保留现场信息,供分析用。虽然 MySQL 的 error log 中会打印部分信息,但对于比较隐蔽的崩溃,往往显得力不从心。
通过开启操作系统级别、放开用户限制、启用 MySQL 参数三个步骤,我们启用了 MySQL 的 coredump 功能,使得 MySQL 崩溃时留下了足够的线索。
对于复杂崩溃的分析,还是需要将 coredump 交给专业的研发工程师手里,或者提交给 MySQL 开发团队。
不过不管是什么场景,能提供一份 coredump,所有技术人员都会感谢你的。
Windows上安装了XMAPP-controller之后间歇性出现MySQL无法启动,查看日之后发现是innodb的报错,报错信息如下:
度娘上各种答案无法解决,后来直接看官方文档,直接上解决方案:
踩坑指南 - - 操作配置前需要做这些操作:
1、配置my.cnf 配置innodb_force_recovery = 1 到 6 试到正确为止,重启MySQL
2、导出数据脚本 mysqldump -uroot -p123456 test test.sql 导出SQL脚本。或者用Navicat将所有数据库/表导入到其他服务器的数据库中。 注意:这里的数据一定要备份成功。然后删除原数据库中的数据。
3、删除ib_logfile0、ib_logfile1、ibdata1 备份MySQL数据目录下的ib_logfile0、ib_logfile1、ibdata1三个文件,然后将这三个文件删除
4、配置my.cnf 将my.cnf中innodb_force_recovery 这行配置删除或者配置为innodb_force_recovery = 0,重启MySQL服务
5、将数据导入MySQL数据库 mysql -uroot -p123456 test test.sql;
或者用Navicat将备份的数据导入到数据库中。 如果在导入数据过程中发生tablespace不存在的问题,请删除data目录相应database下的文件。
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
你用sql语句查,那是自家查自家。
应用程序需要1.连接2.命令3.接收结果,不考虑数据处理其他打开关闭什么的,就比sql语句多了2步。
如举例,你要有个朋友(有钱的情况),然后借钱,结果还不一定能接到。
而老婆,她又没有钱你知道,她不可能不给你钱而饿着你,结果是一定借到还不用还。
sql语句就像是原配的老婆,继承在数据库操作平台中,不快还得了啊。
应用程序:
万一连接写错了,报错,命令写错了报错,结果接收不不如意,这都要考虑(简单的try catch 也影响性能)。
还有一个最致命的问题,你连的未必是本地数据库,这又牵扯到网速问题。
综上所述,慢是必然的,尤其是mysql,在配置优化和存储过程上多下点功夫,会提高点查询速度。
masql没升级吧? 要是没升级这样出错了就你COPY文件的错误 一般数据库的文件都是自动生成 默认的 COPY是无效的