zoukankan      html  css  js  c++  java
  • mysqldump-info

    其实很多东西都能在info里面找到非常详细的说明,只是,我们太忙了,只想要一个答案,而无心去看而已,所以呢,就把用得到的都看一下来记录吧。

    命令模式:
    mysqldump [options] [db_name [tbl_name ...]]
    当不指定tbl_name 或者使用了 --databases | --all-databases 整个库都会被备份。
    同时,mysqldump 不会备份 INFOMATION_SCHEMA 库,即使显式的指定。

    options:
    --opt 同等于 --add-drop-table --add-locks --create-options --disable-keys --extend-insert --lock-tables --quick --set-charset
    --compact 同等于 --skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset
    同样,我们可以用--skip-opt or --skip-compact 来进行反转选项。
    当我们想对--opt组中的某些选项进行取消的时候,我们可以用--skip来操作:
    比如,要取消extend inserts 跟 memory buffing:
    [--opt] --skip-extend-inserts --skip-quick。(--opt可选是因为其是默认开启的)。
    如果我们要取消--opt中的除禁止索引跟锁表外的选项,则可以用:
    --skip-opt --disable-keys --lock-tables。
    如果是在组选项中要选择性的关闭或者开启一些功能,顺序很重要。
    --disable-keys --lock-tables --skip-opt 将不会获得你想要的效果。

    mysqldump 可以逐行的获取-备份表内容(至文件),同时可以在备份(至文件)前将整个内容缓存到内容中。
    数据过大的时候开启缓存会产生问题,想要逐行的进行备份,用--quick(或--opt,组选项中开启了--quick),想要开启缓存那么用--skip-quick即可

    --help, -?
    --add-drop-database 常用--all-databases --databases 备份多库的时候联合使用
    --add-drop-table
    --add-locks 在重新读入备份文件的时候会插入得更快些。
    --all-databases,-A 与--databases 所有库名... 等价,备份所有库,表[infomation_schema除外]
    --allow-keywords 允许建立含关键字的列,在每列加上表名作为前缀。
    --character-set-dir=path 字符集路径
    --comments,-i 默认开启,在备份文件写入版本、主机等信息。--skip-comments 关闭
    --acompact 更紧凑的输出。将会开启--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset
    --compatible=name 为了与其他数据库系统兼容,name={ansi | mysql323 | mysql40 | postgresql | oracle | msssql | db2 | maxdb | no_key_options | no_table_options | no_field_options}的个选项的话用逗号分开。但这并不能保证就一定能与其他数据库兼容,只是保证输出尽量兼容。
    --complate-insert,-c 使用包含列的完整插入语句。
    --compress,-C 如果clien and server 支持压缩的话就压缩所有信息。
    --create-options 包含所有mysql-create-table 语句支持的表选项
    --databases,-B 多个库
    --debug[=debug_options],-#[debug_options] 调试日志,典型格式`d:t:o,file_name`,默认值`d:t:o,/tmp/mysqldump.trace`
    --debug_info
    --cdefault-character-set=charset-name 用charset-name 作为默认的字符集。如果没指定charset-name的话,默认使用utf8,早些版本用的是latin1。此选项对用--tab option产生的文件没有影响。
    --delayed-insert insert delayed 代替 insert
    --delete-master-logs 在主从服务器上,在备份操作完成后会给服务器一个`purge binary logs`语句,删除二进制日志。此选项自动开启--master-data
    --disable-keys, -K 每个表都会被 /*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS*/包围.这会让插入的时候更快,因为所有索引都在所有行插入完毕后建立。只有在非唯一索引的MyISAM表有效。
    --dump-date --comments 开启的情况下,默认在文件尾加上日期。--skip-dump-date关闭。
    --extend-insert, -e 多行插入。会让文件更小,插入更快。
    --fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields=escaped-by=..., --tab option
    --first-slave 5.5已删除
    --flush-logs, -F 备份前刷新日志,需要reload权限。当与--all-databases,每个库被备份时都会刷新。当使用--lock-all-tables or --master-data,日志只有在所有表在锁定的时候被刷新。想要备份跟日志一起刷新,就要配合--lock-all-tables or --master-data.
    --flush-privileges 备份库后发送`FLUSH PRIVILEGES`语句到服务器。当其他有库依赖于此库进行恢复的时候必须使用。
    --force, -f 出错依然继续。
    --host=host_name, -h host_name
    --hex-blob 二进制列用16进制表示(`abc`->`ox616263`)
    --log-error=file_name
    --ignore-table=db_name.tbl_name 忽略表或视图,多张表就多次使用。
    --insert-ignore INSERT IGNORE 代替INSERT 语句
    --lines-terminated-by=... 与 --tab option 联用
    --lock-all-tables, -x 所有库的表锁定。在备份期间产生一个全局读锁。自动关闭 --single-transaction 和--lock-tables.
    --lock-tables, -l 每个库备份前锁表。
    MyISAM表用READ LOCAL 锁定来允许同步插入。
    事务性的表(InnoDb/BDB),--single-transaction 选项更好,因为不需要锁表。
    因为--lock-tables为每个库单独锁表,并不能保证在备份在文件后的内容在库间逻辑上的一致。
    consistent read:一致性读。快照读。
    --single-transaction 备份前发送`START TRANSACTION SQL`语句给服务器,对事务性的表很有用。当`BEGIN`被执行的时候,其备份各库的一致状态,且不会阻塞任何应用。
    必须记住的是,只有InnoDB表才会在一致状态下备份。假入是MyISAM,其状态依然会有可能改变。
    在备份期间,为了保证成功(备份文件正常、二进制文件坐标正确),其他连接不可使用任何一个:
    { ALTER TABLE | CREATE TABLE | DROP TABLE | RENAME TABLE | TRUNCATE TABLE}语句。因为一致性读与这些语句是不隔离的,
    在要备份的表上执行这几个语句会使 mysqldump执行的 `SELECT`命令重新读取表内容而得到错误的内容或者失败。
    --single-transaction与--lock-tables是互斥的,因为--lock-tables会让所有未提交的事务悄悄的提交。
    --master-data[=value] 产生的备份文件可以作用当前主从服务器的从属服务器。
    这将导致备份出来的文件含有一个`CHANGE MASTER TO`语句,二进制日志
    (file name 和 position)与被备份服务器一致。
    在导入从服务器后可以从主服务器日志处开始同步复制。
    默认是value是1,如果值是2,只是写在信息式的写在注释内,并不生效。
    此选项要求二进制日志必须开启
    --master-data自动关闭--lock-tables,在--single-transaction没指定的
    情况下开启--lock-all-tables,这样情况下全局读锁只会在开始备份的产生很
    短的时间。无论什么情况,任何对日志的操作都会在备份的时刻发生。
    在已有的从服务器上备份出文件再做一个从服务器也是可以的。
    1、停止 从服务器进程,获取其状态:
    mysql > STOP SLAVE SQL_THREAD;
    mysql > SHOW SLAVE STATUS;
    2、从上面得到主服务器二进制日制的坐标(file_name file_pos):
    Relay_Master_Log_File
    Exec_Master_Log_Pos 字段,把他给记下来。
    3、dump 从服务器。
    shell > mysqldump --master-data=2 --all-database > dumpfile
    4、重启从服务器线程
    mysql > START SLAVE;
    5、新从服务器,导入dumpfile.
    shell > mysql < dumpfile
    6、在新从服务器上,设置同步坐标。(file_name file_pos)
    --no-autocommit 以Set autocommit=0 和 COMMIT语句来包围INSERT语句。
    --no-create-db, -n --databases,-B | --all-databases 指定的时候,压缩`CREATE DATABASES`语句
    --no-create-info, -t 不写出重新创建备份表的`CREATE TABLE`语句
    --no-data, -d 只要表结构。
    --no-set-names, -N 等价于--skip-set-charset
    --opt
    --norder-by-primary 当主键、或唯一索引存在的时候以此排序列行。当MyISAM表要转到InnoDB表的时候,但会花费更多时间。
    --password[=password],-p[password]
    -pipe, -W
    --port=port_num, -P port_num
    --quick, -q
    --quote-names, -Q
    --result-file=file_name, -r file_name
    --routines, -R 包括函数跟结构。但没有时间戳,新导入的时间就是重新建立过程的时间戳。想要原来的时间戳,导出mysql.proc表后进行恢复。
    --set-charset 默认开启 加入`set NAMES default_character_set`语句。--skip-set-charset 关闭
    --skip-comments
    --skip-opt
    --socket=path, -S path
    --ssl*
    --tab=path, -T path
    --tables 多表
    --tariggers --skip-triggers
    --user=user_name, -u user_name
    --verbose, -v
    --version, -V
    --xml, -X
    mysql > CHAGE MASTER TO
    -> MASTER_LOG_FILE = file_name MASTER_LOG_POS = file_pos;
    自行添加CHAGE MASTER TO 需要的参数,比如主服务器地址等。

  • 相关阅读:
    数据结构-栈
    virtualenvwrapper 的安装和使用
    MySQL命令行本地登陆,远程登陆MySQL 的快捷键
    关于mysql8授权的问题,mysql萌新小白采坑记录
    史上最直接小白式的Sourcetree的分支创建与合并
    验证两个集合是否相等的方法
    VS开发工具的常用插件
    C# 数据库并发的解决方案(通用版、EF版)
    Jquery实现div左右重复来回走动
    描述符的应用
  • 原文地址:https://www.cnblogs.com/dieangel/p/5875478.html
Copyright © 2011-2022 走看看