• MySQL之myisamchk


    Description, check and repair of MyISAM tables.
    Used without options all tables on the command will be checked for errors
    Usage: myisamchk [OPTIONS] tables[.MYI]

    Global options:
    -H, --HELP Display this help and exit.
    -?, --help Display this help and exit.
    -O, --set-variable var=option.
    Change the value of a variable. Please note that
    this option is deprecated; you can set variables
    directly with '--variable-name=value'.
    -t, --tmpdir=path Path for temporary files. Multiple paths can be
    specified, separated by colon (:), they will be used
    in a round-robin fashion.
    -s, --silent Only print errors. One can use two -s to make
    myisamchk very silent.
    -v, --verbose Print more information. This can be used with
    --description and --check. Use many -v for more verbosity.
    -V, --version Print version and exit.
    -w, --wait Wait if table is locked.

    Check options (check is the default action for myisamchk):
    -c, --check Check table for errors.
    -e, --extend-check Check the table VERY throughly. Only use this in
    extreme cases as myisamchk should normally be able to
    find out if the table is ok even without this switch.
    -F, --fast Check only tables that haven't been closed properly.
    -C, --check-only-changed
    Check only tables that have changed since last check.
    -f, --force Restart with '-r' if there are any errors in the table.
    States will be updated as with '--update-state'.
    -i, --information Print statistics information about table that is checked.
    -m, --medium-check Faster than extend-check, but only finds 99.99% of
    all errors. Should be good enough for most cases.
    -U --update-state Mark tables as crashed if you find any errors.
    -T, --read-only Don't mark table as checked.

    Repair options (When using '-r' or '-o'):
    -B, --backup Make a backup of the .MYD file as 'filename-time.BAK'.
    --correct-checksum Correct checksum information for table.
    -D, --data-file-length=# Max length of data file (when recreating data
    file when it's full).
    -e, --extend-check Try to recover every possible row from the data file
    Normally this will also find a lot of garbage rows;
    Don't use this option if you are not totally desperate.
    -f, --force Overwrite old temporary files.
    -k, --keys-used=# Tell MyISAM to update only some specific keys. # is a
    bit mask of which keys to use. This can be used to
    get faster inserts.
    --max-record-length=#
    Skip rows bigger than this if myisamchk can't allocate
    memory to hold it.
    -r, --recover Can fix almost anything except unique keys that aren't
    unique.
    -n, --sort-recover Forces recovering with sorting even if the temporary
    file would be very big.
    -p, --parallel-recover
    Uses the same technique as '-r' and '-n', but creates
    all the keys in parallel, in different threads.
    -o, --safe-recover Uses old recovery method; Slower than '-r' but can
    handle a couple of cases where '-r' reports that it
    can't fix the data file.
    --character-sets-dir=...
    Directory where character sets are.
    --set-collation=name
    Change the collation used by the index.
    -q, --quick Faster repair by not modifying the data file.
    One can give a second '-q' to force myisamchk to
    modify the original datafile in case of duplicate keys.
    NOTE: Tables where the data file is currupted can't be
    fixed with this option.
    -u, --unpack Unpack file packed with myisampack.

    Other actions:
    -a, --analyze Analyze distribution of keys. Will make some joins in
    MySQL faster. You can check the calculated distribution
    by using '--description --verbose table_name'.
    --stats_method=name Specifies how index statistics collection code should
    treat NULLs. Possible values of name are "nulls_unequal"
    (default for 4.1/5.0), "nulls_equal" (emulate 4.0), and
    "nulls_ignored".
    -d, --description Prints some information about table.
    -A, --set-auto-increment[=value]
    Force auto_increment to start at this or higher value
    If no value is given, then sets the next auto_increment
    value to the highest used value for the auto key + 1.
    -S, --sort-index Sort index blocks. This speeds up 'read-next' in
    applications.
    -R, --sort-records=#
    Sort records according to an index. This makes your
    data much more localized and may speed up things
    (It may be VERY slow to do a sort the first time!).
    -b, --block-search=#
    Find a record, a block at given offset belongs to.

    由于临时断电,使用kill -9中止MySQL服务进程,所有的这些都可能会毁坏MySQL的数据文件。如果在被干扰时,服务正在改变文件,文件可能会留下错误的或不一致的状态。因为这样的毁坏有时是不容易被发现的,当你发现这个错误时可能是很久以后的事了。于是,当你发现这个问题时,也许所有的备份都有同样的错误。 
     
    myisamchk通过一行一行地创建一个“.MYD”(数据 )文件的副本来工作,它通过由删除老的“.MYD 文件并且重命名新文件到原来的文件名结束修复阶段。如果你使用--quick,myisamchk不创建一个临时“.MYD”文件,只是假定“.MYD”文件是正确的并且仅创建一个新的索引文件,不接触“.MYD”文件,这是安全的,因为myisamchk自动检测“.MYD”文件是否损坏并且在这种情况下,放弃修复。你也可以给myisamchk两个--quick选项。在这种情况下,myisamchk不会在一些错误上(象重复键)放弃,相反试图通过修改“.MYD”文件解决它们。通常,只有在你在太少的空闲磁盘空间上实施一个正常修复,使用两个--quick选项才有用。在这种情况下,你应该至少在运行myisamchk前做一个备份。

    1、myisamchk
    使用myisamchk必须暂时停止MySQL服务器。例如,我们要检修test数据库。执行以下操作:

    # service mysqld stop ;
    # myisamchk -r /var/lib/mysql/test/*MYI
    # service mysqld start;

    myisamchk会自动检查并修复数据表中的索引错误。

    2、mysqlcheck
    使用mysqlcheck无需停止MySQL,可以进行热修复。

    #mysqlcheck –r DBname Tablename –uuser –ppassword
    

    注意,无论是myisamchk还是mysqlcheck,一般情况下不要使用-f强制修复,-f参数会在遇到一般修复无法成功的时候删除

  • 相关阅读:
    [ffmpeg 扩展第三方库编译系列] 关于 mingw32 下编译libcaca
    新版本的tlplayer for android ,TigerLeapMC for windows发布了
    tlplayer 所有平台版本支持水印叠加
    更新Windows ActiveX,Ios
    Linux批量“解压”JAR文件
    Linux进阶路线
    30个实用的Linux find命令示例
    Redhat 无线(Wifi)上网命令行配置
    PLSQL developer常用技巧
    Hibernate4.3.5搭建Log4j日志环境
  • 原文地址:https://www.cnblogs.com/xiaoit/p/3990304.html
Copyright © 2020-2023  润新知