zoukankan      html  css  js  c++  java
  • mysql 开发进阶篇系列 35 工具篇 mysqldump(数据导出工具)

    一.概述

        mysqldump客户端工具是用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的sql语句。mysqldump目前是mysql中最常用的备份工具。
      三种方式来调用mysqldump,命令如下:

      上图第一种是备份单个数据库或者库中部分数据表(从备份方式上,比sqlserver要灵活一些,虽然sql server有文件组备份)。第二种是备份指定的一个或者多个数据库。第三种是备份所有数据库。
      1.连接导出,下面将test数据库导出为test.txt文件,导出位置在data目录下

    [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p test > test.txt

      上图显示: 导出到test.txt文件里, 数据有几部份sql语句,包括:(1)有判断表存在删除,(2)导出表结构和表数据,(3)导前加table write锁,导完释放。通过下面帮助命令可以看到默认设置。

     [root@hsr data]# /usr/local/mysql/bin/mysqldump --help

      2. 输出内容选项

    -n, --no-create-db

    不包含数据库的创建语句

    -t, --no-create-info

    不包含数据表的创建语句

    -d,--no-data

    不包含数据

        下面演示导出test库的a表,不包含数据:

    [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p -d  test a > a.txt

        上图显示,使用more 查看a.txt,内容只有表结构。
      3. 使用 --compact选项使得结果简洁,不包括默认选项中的各种注释,下面还是演示a表:

    [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p --compact  test a > a.txt

      4. 使用-c --complete-insert 选项,使insert语句包括字段名称

    [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p -c --complete-insert  test b > b.txt

      5. 使用-T选项将指定数据表中的数据备份为单纯的数据文本和建表sql, 两个文件。

         [root@hsr data]# midir bak
            [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p   test b -T ./bak
            Enter password: 
            mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute 
                          this statement when executing 'SELECT INTO OUTFILE'
     --上面的语句报错,查找错误信息中的字段设置
    SHOW VARIABLES LIKE '%secure%';

        secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的。

                       (1) 当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出。

                       (2) 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下。

                       (3 )当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制。

        下面来设置my.cnf文件,加上导入位置,位置在/tmp 目录下,如下图:

    -- 再次导出,导出路径在/tmp下
    [root@hsr data]#  /usr/local/mysql/bin/mysqldump -uroot -p   test b -T /tmp

        使用more 查看文件,b.sql中包含了表架构, b.txt包含数据。

       6.  字符集选项

        --default-character-set=name 选项可以设置导出的客户端字符集。这个选项很重要,如果客户端字符集和数据库字符集不一致,有可能成为乱码,使得备份文件无法恢复。

    [root@hsr data]#  /usr/local/mysql/bin/mysqldump -uroot -p  --compact --default-character-set=utf8 test >test.txt

        

      7. 其他常用选项

        (1) -F --flush-logs(备份前刷新日志)  备份前将关闭旧日志,生成新日志。恢复的时候直接从新日志开始进行重做,方便恢复过程。

        (2) -l --lock-tables(给所有表加读锁) 使得数据无法被更新,从而使备份的数据保持一致性(可以导致大量长时间阻塞)。

  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9567164.html
Copyright © 2011-2022 走看看