草庐IT

mysql - 如何避免在 MySQL 中出现 "repair with keycache"?

coder 2023-10-11 原文

这真是令人抓狂。我已按照我在互联网上找到的每条设置说明进行操作,但我无法克服这一点。

基本上,我有一个大约有 800 万行的表。我需要像这样创建这个表的备份:

create table mytable_backup like mytable

这在我的生产服务器上需要几个小时,这是一个通过 EngineYard 运行的 Amazon EC2 实例。在我的 MacBook Pro 上只需几分钟。这是 MySQL 在后台做的另一件烦人的事情,你无法猜测它是如何做出如此愚蠢的决定的。

顺便说一句,tmp 目录中有超过 330G 可用空间,所以这不是问题。

但这是“free -m”的结果:

deploy@domU-12-31-39-02-35-31 ~ $ free -m
             total       used       free     shared    buffers     cached
Mem:          1740       1728         11          0         14       1354
-/+ buffers/cache:        359       1380
Swap:          895          2        893

我不知道怎么读,但是自由栏下的“11”看起来不太好。

我在运行:

Server version: 5.0.51-log Gentoo Linux mysql-community-5.0.51

这是我的配置文件:

# /etc/mysql/my.cnf: The global mysql configuration file.
# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/files/my.cnf-4.1,v 1.3 2006/05/05 19:51:40 chtekk Exp $

# The following options will be passed to all MySQL clients
[client]
port                = 3306

[mysql]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqldump]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[myisamchk]
character-sets-dir=/usr/share/mysql/charsets

[myisampack]
character-sets-dir=/usr/share/mysql/charsets


[mysqld_safe]
err-log             = /db/mysql/log/mysql.err

# To allow table cache to be raised
open-file-limit = 4096

[mysqld]
max_connections         = 300
innodb_file_per_table       = 1

log-slow-queries        = /db/mysql/log/slow_query.log
long_query_time         = 2000000
ft_min_word_len         = 3

max_heap_table_size         = 64M
tmp_table_size          = 64M

server-id           = 1
log-bin             = /db/mysql/master-bin
log-bin-index           = /db/mysql/master-bin.index
# END master/slave configuration

character-set-server        = utf8
default-character-set       = utf8
user                = mysql
port                = 3306
socket                  = /var/run/mysqld/mysqld.sock
pid-file            = /var/run/mysqld/mysqld.pid
log-error           = /db/mysql/log/mysqld.err
basedir             = /usr
datadir             = /db/mysql

key_buffer          = 32M
max_allowed_packet      = 32M
table_cache         = 1024
thread_cache            = 512
sort_buffer_size        = 100M
net_buffer_length       = 64K
read_buffer_size        = 1M
read_rnd_buffer_size        = 1M
myisam_sort_buffer_size     = 100M
myisam_max_sort_file_size   = 2G
myisam_repair_threads           = 1
language            = /usr/share/mysql/english

# security:
# using "localhost" in connects uses sockets by default
# skip-networking
# bind-address          = 127.0.0.1

# point the following paths to different dedicated disks
tmpdir              = /mnt/mysql/tmp
# log-update            = /path-to-dedicated-directory/hostname

# you need the debug USE flag enabled to use the following directives,
# if needed, uncomment them, start the server and issue 
# #tail -f /tmp/mysqld.sql /tmp/mysqld.trace
# this will show you *exactly* what's happening in your server ;)

#log                = /tmp/mysqld.sql
#gdb
#debug              = d:t:i:o,/tmp/mysqld.trace
#one-thread


# the rest of the innodb config follows:
# don't eat too much memory, we're trying to be safe on 64Mb boxes
# you might want to bump this up a bit on boxes with more RAM
innodb_buffer_pool_size     = 1275M
# this is the default, increase it if you have lots of tables
innodb_additional_mem_pool_size = 16M
#
# i'd like to use /var/lib/mysql/innodb, but that is seen as a database :-(
# and upstream wants things to be under /var/lib/mysql/, so that's the route
# we have to take for the moment
#innodb_data_home_dir       = /var/lib/mysql/
#innodb_log_arch_dir        = /var/lib/mysql/
#innodb_log_group_home_dir  = /var/lib/mysql/
# you may wish to change this size to be more suitable for your system
# the max is there to avoid run-away growth on your machine
innodb_data_file_path       = ibdata1:20M:autoextend

# we keep this at around 25% of of innodb_buffer_pool_size
# sensible values range from 1MB to (1/innodb_log_files_in_group*innodb_buffer_pool_size)
innodb_log_file_size        = 96M

# this is the default, increase it if you have very large transactions going on
innodb_log_buffer_size      = 8M

# this is the default and won't hurt you
# you shouldn't need to tweak it
innodb_log_files_in_group   = 2

# see the innodb config docs, the other options are not always safe
# This is not good for performance when used with bin_sync.  Disabling.
innodb_flush_log_at_trx_commit  = 2
innodb_flush_method     = O_DIRECT
innodb_lock_wait_timeout    = 50

query_cache_size        = 16M
query_cache_type        = 1

[mysqldump]
quick
max_allowed_packet      = 16M

[mysql]
# uncomment the next directive if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer          = 20M
sort_buffer_size        = 20M
read_buffer         = 2M
write_buffer            = 2M

[myisamchk]
key_buffer          = 20M
sort_buffer_size        = 20M
read_buffer         = 2M
write_buffer            = 2M
ft_min_word_len         = 3

[mysqlhotcopy]
interactive-timeout

最佳答案

就其值(value)而言,11 兆的免费空间完全没问题。那是 11 兆的内存没有被用于任何东西,就硬件而言是“浪费”的。实际数字是缓存中使用的“1380”加上未使用的 11 兆。必要时可以清除缓存。

您的系统有将近 1400 MB 的可用 RAM。

关于mysql - 如何避免在 MySQL 中出现 "repair with keycache"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244044/

有关mysql - 如何避免在 MySQL 中出现 "repair with keycache"?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  5. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  6. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  7. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  10. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

随机推荐