zoukankan      html  css  js  c++  java
  • mysql数据库的备份与恢复

    假定我们的目标数据库是 test, 表是 user。
    假定mysql的用户名和密码均为 root。

    备份与恢复所用的程序分别是mysql软件包提供的 mysqldump 命令和 mysql 命令。思想很简单,就是通过mysqldump将数据库的内容导出为sql语句组成的文件,恢复的时候再将该sql文件丢给mysql去执行。

    mysql的man手册中提到了三种方式:
               shell> mysqldump [options] db_name [tbl_name ...]
               shell> mysqldump [options] --databases db_name ...
               shell> mysqldump [options] --all-databases

    第一种方式是备份特定数据库下的某些表,其中表的指定是可选的,若不指定表,则备份该数据库下的所有表。

    第二种方式是备份某些数据库,应该至少指定一个数据库。

    第三种方式是备份所有数据库。

    [options] 是可选的,下文的命令中指定的 options 是这三种方式通用的,事实上 mysqldump命令 的 manual 中也没有针对这三种方式对选项进行区分。


    /**备份**/
    由于我们要备份指定数据库的指定表,所以我们使用第一种方式。

    使用以下命令:
    mysqldump -u root -proot --add-drop-table --add-locks --create-options --quick --skip-extended-insert test user

    解释一下命令中各个 option 的意义:
    -u root 指定用户名。
    -proot 指定密码(-p和密码之间不能有空格, 也可以只使用-p 选项,密码在按回车之后再让用户输入)。
    --add-drop-table 在恢复阶段,如果目标表存在,则先drop。在导出的sql文件中体现为:DROP TABLE IF EXISTS `user`;
    --add-locks 在恢复阶段,向表中插入数据之前先对表进行lock,插入完数据再unlock。
    --create-options 表示在创建表的语句中增加一些附加选项, 在导出的sql文件中体现为:ENGINE=InnoDB AUTO_INCREMENT=266 DEFAULT CHARSET=utf8;
    --quick 取一行写一行,表中的内容很庞大的时候有用。若使用的是 --skip-quick 选项,则将表的内容全取回来之后再写。
    --skip-extended-insert 每行数据使用一个insert语句。若使用 --extended-insert 选项,则将内容放到一个 insert 语句中。

    命令执行之后,可以发现内容被输出到 stdout 中了,若要备份到文件,将内容重定向即可,使用下面的命令:
    mysqldump -u root -proot --add-drop-table --add-locks --create-options --quick --skip-extended-insert test user > test.user.sql

    mysqldump 命令也提供了选项来指定将内容输出到的文件,--result-file=file_name, -r file_name

    所以也可以使用以下命令:
    mysqldump -u root -proot --add-drop-table --add-locks --create-options --quick --skip-extended-insert --result-file=test.user.sql test user

    或者,
    mysqldump -u root -proot --add-drop-table --add-locks --create-options --quick --skip-extended-insert -r test.user.sql test user




    /**恢复**/
    使用下面的命令:
    mysql -u root -proot test < test.user.sql

    或者是进入 mysql 的交互模式,use test;
    然后再 source test.user.sql;


    更详细的内容需参考相应命令的manual。

  • 相关阅读:
    ERP Odoo开发--Getting started with Odoo development --openerp
    5 Tips for Building a Winning DevOps Culture
    android stream media
    LDAP summary-- Python ldap
    android call and audio
    android bluetooth
    .windows安装使用这些偏底层的Python扩展太
    经典的DOS小命令 for 网络 nbtstat
    js和jquery设置disabled属性为true使按钮失效
    Several ports (8005, 8080, 8009)被占用
  • 原文地址:https://www.cnblogs.com/vanwoos/p/5928114.html
Copyright © 2011-2022 走看看