美文网首页学习随记
Mysql 备份 — mysqldump 指令

Mysql 备份 — mysqldump 指令

作者: o黄裳元吉o | 来源:发表于2017-02-27 17:47 被阅读129次

    参与的一个项目需要将mysql数据库整个备份导出,我用百度大法学习了mysql的备份方法。

    一. mysqldump常见用法

    mysqldump指令详见:
    <pre>
    mysqldump --help
    </pre>

    1.1 导出整个数据库(包含结构和数据)

    <pre>
    mysqldump -u用户名 -p密码 -h主机 数据库1 数据库2 > 转储文件路径
    </pre>

    上述命令将指定数据库(可以是一个或多个)备份到某dump文件中,比如:

    <pre>
    mysqldump -u root -p123456 znms > znmsdump.sql
    </pre>

    上述命令将本机上的znms数据库整个备份到当前路径下的znmsdump.sql文件中。

    1.2 导出数据库结构(不含数据)

    <pre>
    mysqldump -u用户名 -p密码 -h主机 -d 数据库1 数据库2 > 转储文件路径
    </pre>

    上述命令仅将指定数据库的结构备份到某dump文件中,比如:

    <pre>
    mysqldump -u root -p -d znms > znmsdump.sql
    </pre>

    1.3 导出数据库中的表

    <pre>
    mysqldump -u用户名 -p密码 -h主机 -d 数据库名 表1 表2 表3 > 转储文件路径
    </pre>

    上述命令将指定数据库的指定表(一张或多张)导出到指定文件,例如:

    <pre>
    mysqldump -u root -p123456 znms user_info role user_role > znmsdump.sql
    </pre>

    如果加上 -d 或 --no-data,将只导出表结构,如:

    <pre>
    mysqldump -u root -p123456 -d znms user_info role user_role > znmsdump.sql
    </pre>

    加上--where="筛选条件" 可对表中数据进行筛选后再导出,例如:
    <pre>
    mysqldump -u root -p123456 znms user_info --where="id>10" > znmsdump.sql
    </pre>

    1.4 数据库迁移

    以下命令将数据库导出然后通过管道导入到另一台机子上的数据库:
    <pre>
    mysqldump -u root -p123456 --single-transaction--databases db1 db2 | mysql -u root -p123456 -h 172.16.1.25
    </pre>

    二. 重要参数说明

    --add-drop-database:每个数据库创建之前添加drop数据库语句。默认为打开状态,使用--skip-add-drop-table取消。
    --comments:附加注释信息。默认为打开,可以用--skip-comments取消。
    --lock-tables:在导出数据前先锁表,导出完成后释放。注意如果导出多个数据库,则在前一个表导出完成后,后一个表才上锁。
    --lock-all-tables:它会在一开始就对所有的数据库的所有表上锁,请注意它会使用FLUSH TABLES。
    --single-transaction:它设置整个导出的过程为一个事务,避免了锁。
    --master-data:它对所有数据库的所有表上了锁,并且查询binlog的位置。请注意它会使用FLUSH TABLES。
    --master-data --single-transaction:这种组合,会先对所有数据库的所有表上锁,读取binlog的信息之后就立即释放锁,这个过程是十分短暂的,然后整个导出过程都在一个事务里。请注意它会使用FLUSH TABLES。
    -F or -flush-logs:使用这个选项,在执行导出之前将会刷新MySQL服务器的log。
    -f or -force:使用这个选项,即使有错误发生,仍然继续导出。
    -t or -no-create-info:这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在只需要数据而不需要DDL(数据库定义语句)时很方便。
    -d or -no-data :这个选项使的mysqldump命令不创建INSERT语句,即不导出数据。

    相关文章

      网友评论

        本文标题:Mysql 备份 — mysqldump 指令

        本文链接:https://www.haomeiwen.com/subject/aoizwttx.html