Jul
20
差错 目次 效果 测验 测试 文件 次序 过程 考试 选项 至正 号令 任务 东西 消息 日记 动态 基准 启事 系统 局部 罕见 脚本 备份 形状 长度 志愿 装置 尺寸 准确 代码 数据库 时间 工作 如许 平安 小节 迟钝 洁净 变量 源代码 数目 细致 实质 补丁 时机 平常 好象 上述 反应
2008102818.1 假设MySQL总是解体如何办
壹切MySQL正在公布它们之前!正在很多平台上被测试这实在不料味着正在MySQL中没有任何差错!可是假设有差错!它们是很少的并且很能难发觉假设妳有壹个效果并且假设妳测验考试找出究竟是甚么摧毁了妳的系统!它将总是有辅佐的!因为妳将有壹个更好时机使得它被快速修复
起首妳该当试着找出效果mysqld保护过程可否死掉落或者妳的效果可否与妳的客户相干妳能够用mysqladmin version检查妳的mysqld效劳器一般施行了多长时间!假设mysqld死了!妳能够正在文件mysql-data-directory/hostname.err中找到其启事
因为很难知道壹些东西为甚么解体!起首试着检查为其它人任务的东西可否使妳解体请测验考试以下工作
与mysqladmin shutdown中断mysqld保护过程!正在壹切表上运转myisamchk --silent --force /.MYI恰好重启mysqld保护经过程这将包管妳从壹个洁净的形状运转见13 保护MySQL装置
使用mysqld --log并且试着从日记消息肯定可否是某个特定的查询杀死了效劳器局部差错的95&与特定的查询相干一般它是正在日记文件中就正在MySQL重启之前的最后查询之壹妳也容许以使用以下过程考据它
中断MySQL保护过程
正在MySQL数据库目次下做文件的壹个备份
与myisamchk -s /.MYI检查表以考据壹切表是准确的假设有任何表被保护!用myisamchk -r path-to-table.MYI修复它
从MySQL数据目次增除任何陈的日记文件
用safe_mysql --log发动效劳器
假设mysqld平常死掉落!妳能够经过复原备份并施行mysql lt。 mysql-log-file来测试效果可否是壹个特定的查询惹起的固然妳能够经过用safe_mysqld --data=http://博客.soso.com/qz.q/path-to-backup-directory发动另壹个MySQL效劳器!正在某个其他目次而不是规范MySQL数据库目次下做前面的测试
妳试用了基准测试吗他们该当很好地测试MySQL妳也能够增加代码模拟妳的使用次序递次基准次序递次可正在源代码分发的bench目次下找到!或者对贰进制分发!正在妳的MySQL装置目次下sql-bench目次
试壹下fork_test.pl和fork2_test.pl
对任何差错检查文件mysql-data-directory/hostname.err
假设妳建设MySQL以便调试!假设出错!搜罗能够的差错消息将更简单使用--with-debug选项的configure从头建设MySQL然后从头编译见G.1 调试壹个 MySQL 效劳器
为调试而建设MySQL使它包含壹个平安的内存分派器以便能发觉壹些差错它也供给对于正正在发作甚么的少量输进
妳为妳的操纵系统使用了最新的补丁吗
使用mysql的--skip-locking选项.正在壹些系统上!lockd锁治理器不克不及准确任务--skip-locking选项通知mysqld不使用外部锁
当mysqld好象正正在运转但没有反应时!妳测验考试过mysqladmin -u root processlist吗有时mysqld不是毫无反应!固然妳能够如许认为效果能够是壹切正在用的连接!或者能够用外部锁定效果mysqladmin processlist以至正在这些状况下将一般能够停止壹个连接!并且能供给相干以后连接数目及其形状的有效消息
正在妳运转其他查询时!正在壹个独自窗口中运转号令mysqladmin -i 5 status!发生统计
测验考试以下方法
经过gdb(或者其他调试器)发动mysqld
运转妳的测试脚本
当mysqld核心倾倒!做back(或者妳调试器中的回溯-backtrace号令)
测验考试用壹个Perl脚本模拟妳的使用次序递次以志愿MySQL解体或者表现不准确
或者发壹份正式的差错演讲见2.3 若何演讲差错或者效果!可是要不服常更细致因为MySQL为很多人的任务!招致解体的东西能够只具有于妳的盘算机上
假设妳的效果有具有动态长度行的表相干!并且妳不使用BLOB/TEXT列!妳能够用ALTER TABLE试着将局部VARCHAR改成CHAR!这将志愿MySQL使用流动尺寸的行流动尺寸的行占据很小的额外空间!可是更能容忍解体以后动态行的代码正在 TCX 至少使用3 年的时间!没有任何效果!可是从实质上讲!动态长度的行对差错更迟钝!因此假设上述对妳有辅佐!测验考试壹下能够是壹个好主意
18.2 使用MySQL时的壹些罕见差错
18.2.1 MySQL server has gone away差错
本小节也触及相干Lost connection to server during query的差错
对MySQL server has gone away差错最罕见的启事是效劳器超时了并且封闭了连接缺省地!假设没有工作发作!效劳器正在 8个小时后封闭连接妳可正在发动mysqld时经过设置wait_timeout变量篡改时间限制18.1 假设MySQL总是解体如何办 壹切MySQL正在公布它们之前!正在很多平台上被测试这实在不料味着正在MySQL中
刘旭 ' blog http://www.liuxu.info
2008102818.1 假设MySQL总是解体如何办
壹切MySQL正在公布它们之前!正在很多平台上被测试这实在不料味着正在MySQL中没有任何差错!可是假设有差错!它们是很少的并且很能难发觉假设妳有壹个效果并且假设妳测验考试找出究竟是甚么摧毁了妳的系统!它将总是有辅佐的!因为妳将有壹个更好时机使得它被快速修复
起首妳该当试着找出效果mysqld保护过程可否死掉落或者妳的效果可否与妳的客户相干妳能够用mysqladmin version检查妳的mysqld效劳器一般施行了多长时间!假设mysqld死了!妳能够正在文件mysql-data-directory/hostname.err中找到其启事
因为很难知道壹些东西为甚么解体!起首试着检查为其它人任务的东西可否使妳解体请测验考试以下工作
与mysqladmin shutdown中断mysqld保护过程!正在壹切表上运转myisamchk --silent --force /.MYI恰好重启mysqld保护经过程这将包管妳从壹个洁净的形状运转见13 保护MySQL装置
使用mysqld --log并且试着从日记消息肯定可否是某个特定的查询杀死了效劳器局部差错的95&与特定的查询相干一般它是正在日记文件中就正在MySQL重启之前的最后查询之壹妳也容许以使用以下过程考据它
中断MySQL保护过程
正在MySQL数据库目次下做文件的壹个备份
与myisamchk -s /.MYI检查表以考据壹切表是准确的假设有任何表被保护!用myisamchk -r path-to-table.MYI修复它
从MySQL数据目次增除任何陈的日记文件
用safe_mysql --log发动效劳器
假设mysqld平常死掉落!妳能够经过复原备份并施行mysql lt。 mysql-log-file来测试效果可否是壹个特定的查询惹起的固然妳能够经过用safe_mysqld --data=http://博客.soso.com/qz.q/path-to-backup-directory发动另壹个MySQL效劳器!正在某个其他目次而不是规范MySQL数据库目次下做前面的测试
妳试用了基准测试吗他们该当很好地测试MySQL妳也能够增加代码模拟妳的使用次序递次基准次序递次可正在源代码分发的bench目次下找到!或者对贰进制分发!正在妳的MySQL装置目次下sql-bench目次
试壹下fork_test.pl和fork2_test.pl
对任何差错检查文件mysql-data-directory/hostname.err
假设妳建设MySQL以便调试!假设出错!搜罗能够的差错消息将更简单使用--with-debug选项的configure从头建设MySQL然后从头编译见G.1 调试壹个 MySQL 效劳器
为调试而建设MySQL使它包含壹个平安的内存分派器以便能发觉壹些差错它也供给对于正正在发作甚么的少量输进
妳为妳的操纵系统使用了最新的补丁吗
使用mysql的--skip-locking选项.正在壹些系统上!lockd锁治理器不克不及准确任务--skip-locking选项通知mysqld不使用外部锁
当mysqld好象正正在运转但没有反应时!妳测验考试过mysqladmin -u root processlist吗有时mysqld不是毫无反应!固然妳能够如许认为效果能够是壹切正在用的连接!或者能够用外部锁定效果mysqladmin processlist以至正在这些状况下将一般能够停止壹个连接!并且能供给相干以后连接数目及其形状的有效消息
正在妳运转其他查询时!正在壹个独自窗口中运转号令mysqladmin -i 5 status!发生统计
测验考试以下方法
经过gdb(或者其他调试器)发动mysqld
运转妳的测试脚本
当mysqld核心倾倒!做back(或者妳调试器中的回溯-backtrace号令)
测验考试用壹个Perl脚本模拟妳的使用次序递次以志愿MySQL解体或者表现不准确
或者发壹份正式的差错演讲见2.3 若何演讲差错或者效果!可是要不服常更细致因为MySQL为很多人的任务!招致解体的东西能够只具有于妳的盘算机上
假设妳的效果有具有动态长度行的表相干!并且妳不使用BLOB/TEXT列!妳能够用ALTER TABLE试着将局部VARCHAR改成CHAR!这将志愿MySQL使用流动尺寸的行流动尺寸的行占据很小的额外空间!可是更能容忍解体以后动态行的代码正在 TCX 至少使用3 年的时间!没有任何效果!可是从实质上讲!动态长度的行对差错更迟钝!因此假设上述对妳有辅佐!测验考试壹下能够是壹个好主意
18.2 使用MySQL时的壹些罕见差错
18.2.1 MySQL server has gone away差错
本小节也触及相干Lost connection to server during query的差错
对MySQL server has gone away差错最罕见的启事是效劳器超时了并且封闭了连接缺省地!假设没有工作发作!效劳器正在 8个小时后封闭连接妳可正在发动mysqld时经过设置wait_timeout变量篡改时间限制18.1 假设MySQL总是解体如何办 壹切MySQL正在公布它们之前!正在很多平台上被测试这实在不料味着正在MySQL中
刘旭 ' blog http://www.liuxu.info


安康附件附件
站点如何制作壹个网页的注册次序递次次序