• MYSQL数据备份与还原学习笔记


    数据备份与还原

     

    1.mysqldump

    1.1 文件地址

    E:xamppmysqlin

    文件名:mysqldump.exe

    CMD下进入mysqldump.exe

    cd E:xampp_newmysqlin

    1.2 调用mysqldump的参数

    Mysqldump –u 用户名 [-h 主机] [-p 密码] 数据库名  [表名称 表名称] > 备份到的路径及文件名

    备份多个数据库的全部表:

    Mysqldump –u 用户名 [-h 主机] [-p 密码] –databases 数据库1名称 数据库2名称> 备份到的路径及文件名

    备份MYSQL的全部数据库:

    Mysqldump –u 用户名 [-h 主机] [-p 密码] –all-databases > 备份到的路径及文件名

    说明:

    如果加表名称,就备份指定的表,如果不加表名称,则表示备份数据库的全部表。

    1.3备份操作:

    备份数指定的据库:

    mysqldump -uroot -hlocalhost -p123 homework>G:/homeworks20141124.sql

    备份指定数据库的指定数据表:

    mysqldump -uroot -hlocalhost -p123 homework province>G:/homeworks20141124.sql

    备份指定数据库的指定的多个数据表:

    mysqldump -uroot -hlocalhost -p123 homework province users2>G:学习Mysql日志1.sql

    备份多个数据库的所有表:

    mysqldump -uroot -hlocalhost -p123 --databases homework mysqlpart2>G:学习Mysql日志2.sql

    备份MYSQL下的全部数据库:

    mysqldump -uroot -hlocalhost -p123 --all-databases>G:学习Mysql日志3.sql

    说明:mysqladmin密码在:E:xamppphpMyAdmin config.inc.php 文件中

    1.4 mysqldump其它常用参数:

    add-drop-database 如果备份的时候,加上该参数,就会生成生成DROP DATABASE

    add-drop-tables    如果备份的时候,加上该参数,就会生成 DROP TABLES语句

    comment=[0|1] 在生成备份文件的时候,会加上系统的注释

    complete-insert 如果加上该参数,那么在生成备份文件的时候,就会生成表名所拥有的所有列名的INSERT语句

    2. sql 文件的内容:

    (1)MYSQLdump工具的版本号:

    -- MySQL dump 10.13  Distrib 5.6.16, for Win32 (x86)

    -- Host: localhost    Database: homework

    -- ------------------------------------------------------

    -- Server version       5.6.16  (mysql的版本号)

    (2)变量赋值及注释内容:

    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

    说明:

    ①/*!  注释内容*/; 是MYSQL可执行注释,MYSQL会执行注释内容,其它数据库不会执行这些注释内容。

    ②40101是支持可执行语句的MYSQL的最低版本

    ③用SET定义一个用户级的变量,由系统级的变量为其赋值,数据库的系统参数以变量的形式保存下来。

    (3)数据库的表备份

    --

    -- Table structure for table `province`

    --

    DROP TABLE IF EXISTS `province`;

    (4)以INSERT语句来保存数据,用于恢复数据库时的数据还原

    --

    -- Dumping data for table `province`

    --

    LOCK TABLES `province` WRITE;

    /*!40000 ALTER TABLE `province` DISABLE KEYS */;

    INSERT INTO `province` VALUES (1,'北京'),(2,'上海'),(3,'辽宁'),(4,'天津'),(5,'广东'),(6,'福建'),(100,'吉林');

    /*!40000 ALTER TABLE `province` ENABLE KEYS */;

    UNLOCK TABLES;

    3. 备份数据文件的方法

    备份数据文件夹里的全部文件:

    E:xamppmysqldata

    4. 客户端工具备份方法:

    可以通过sql文件恢复数据库

    CREATE TABLE 保存表的结构

    INSERT INTO  保存了数据

    5. 数据库还原技术

    5.1 mysql命令还原数据库

    mysql -u 用户名 -p 密码 要还原的数据库 <备份文件路径和文件名

    mysql -u root -p 123 homework <G:学习Mysql日志hw1.sql

    5.2 使用粘贴数据库文件的方式进行还原(禁止使用该方法)

    通过操作发现,使用直接复制、粘贴数据库文件的方法,对数据库进行恢复,是不可行的,会造成数据库无法启动,就算后面删除日志文件,数据库可以启动了,也是无法浏览数据库内的表文件的。

    5.3 使用客户端工具进行还原

    6. 表的导入和导出

    6.1 SELECT INTO OUTFILE 导出数据表

    导出数据表只是导出数据表的内容,并无SQL语句:

    SELECT语句 INTO OUTFILE ‘导出路径及文件名’

    [LINES TERMINATED BY ‘每一行的结尾字符’]

    ;

    参数介绍:

    FIELDS TERMINATED BY ‘,’   列的结尾符

    FIELDS ENCLOSED BY ‘”’    列的数据是用什么扩起来(引起来)

    FIELDS ESCAOED BY ‘’      定义一个新的转义字符的符号

    LINES STARTING BY ‘>’       以什么作为该行的开头

    LINES TERMINATED BY ‘ ’  以什么作为该行的结尾

    例1SELECT * FROM users2 INTO OUTFILE 'G:users2.txt';

    说明:

    路径中不能包含中文

    例2以转义字符换行导出:

    SELECT * FROM province INTO OUTFILE 'G:1.txt' LINES TERMINATED BY ' ';

    显示:

    1       北京

    2       上海

    3       辽宁

    4       天津

    5       广东

    6       福建

    100  吉林

    6.2使用MYSQLDUMP工具导出表数据:

    MYSQLDUMP工具会导出数据表的数据和数据表的SQL表结构语句(不包含INSERT语句,即不包含数据表的数据内容)

    语法:

    mysqldump -T 文件要保存的路径 数据库名称 数据表名称 -u 用户名 –p 密码

    [--lines-terminated-by=换行符]

    说明:

    -T 表示要输出

    参数介绍:

    --fields-terminated-by=,   每列的结尾

    --fields-optionally-enclosed-by=”  每列以什么进行引用

    --fields-escaped-by=?  定义转义字符

    --lines-terminated-by=   每一行以什么结尾

    例1:

    mysqldump -T G:/ homework province -u root -p

    例2,格式化换行输出表数据:

    mysqldump -T G:/ homework province -u root -p --lines-terminated-by=

    6.3 使用mysq导出表数据:

    在系统环境下(非mysql环境内):

    mysql -u root -p --execute="SELECT语句" 数据库名称 >输出文件的路径及文件名

    例:

    mysql -u root -p --execute="select * from province" homework >G:/p.txt

    显示:

    id      pro_name

    1       北京

    2       上海

    3       辽宁

    4       天津

    5       广东

    6       福建

    100  吉林

    6.4 通过LOAD DATA方式将数据导入数据表中

    LOAD DATA INFILE '输入文件的路径及文件名' INTO TABLE 要导入表的表名称;

    LOAD DATA INFILE 'G:/p.txt' INTO TABLE province;

    LOAD DATA INFILE 'G:/p.txt' INTO TABLE province CHARACTER SET utf8 ;

    注意:

    (1)       导入txt之前,应当删除字段的表头,否则表头内容也会被当做字段的值导入字段中。

    (2)       导入txt之前,应当将txt另存为utf-8格式,否则中文无法导入。

    (3)       导入txt之前,一定要将utf-8的文档去BOM头化,否则因为有前导字符串,会导入错误。

    6.5通过mysqlimport工具方式将数据导入数据表中

    该命令需要使用系统的命令窗口进行输入:

    mysqlimport -u 用户名 -p 数据库名称 导入表的路径及文件名

     

    mysqlimport -u root -p homework G:/province.txt

      

    说明:

    (1)       如果没有指定表的名称,那么系统会根据txt的文件名来导入相应的表内,所以txt的文件名要与数据表的名称一致。

    (2)       导入操作的参数的名称和值,要与导出操作的参数名称和值一致,这样才能成功导入数据。

  • 相关阅读:
    【luogu2756】 飞行员配对方案问题 [二分图匹配 匈牙利算法]
    [APIO2008]紧急集合
    2019.8.27 Za
    【luogu2763】试题库问题 [网络流 最大流]
    [CQOI2014]危桥 [网络流 最大流]
    【luogu1231】教辅的组成 [网络流 最大流]
    【网络流】
    【2019.8.24】
    【匈牙利算法】
    2019.8.23 Za [数论]
  • 原文地址:https://www.cnblogs.com/4php/p/4122635.html
Copyright © 2020-2023  润新知