MySQL学习笔记23

逻辑备份:

1、回顾什么是逻辑备份?

逻辑备份就是把数据库、数据表或者数据进行导出,导出到一个文本文件中。

2、逻辑备份工具:

mysqldump:提供全库级、数据库级别以及表级别的数据备份。

mysqldump+binlog:二进制日志实现增量备份。

3、逻辑的导出导入:

导出(数据备份):

无论是什么存储引擎,以下方式本身是一种数据导出的方法,同时可以用来辅助备份,它可以对一个表的其中一列或者某几列做备份。备份的是==数据记录。==

案例:把tb_student数据表中的数据记录进行逻辑导出。

 出现以上问题的主要原因在于我们没有指定MySQL逻辑导出时指定的路径。

我们将配置文件进行更新,并重启mysql。

MySQL学习笔记23_第1张图片

 还需要更新下权限:

MySQL学习笔记23_第2张图片

最后我们再执行导出操作:

mysql> select * into outfile '/tmp/sqlbak/tb_student.txt' from db_itheima.tb_student;
Query OK, 5 rows affected (0.00 sec)

 说明:备份的是数据表中的记录。

[root@mysql-server sqlbak]# ll
total 880
-rw-r--r-- 1 root  root  890067 Sep 29 07:04 all.sql
-rw-r----- 1 root  root     915 Sep 29 07:14 binlog.000005
-rw-rw-rw- 1 mysql mysql    112 Sep 29 11:37 tb_student.txt
[root@mysql-server sqlbak]# cat tb_student.txt
1       刘备    33      male    java
2       关羽    32      male    yunwei
4       貂蝉    18      female  ui
5       大乔    18      female  ui
6       小乔    16      female  ui

把数据逻辑进行导出,导出的结果是一个有规则的文本文件。

4、逻辑导入操作:

mysql> use db_itheima;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
mysql> drop table tb_student;
Query OK, 0 rows affected (0.00 sec)


mysql> create table tb_student (
    -> id int not null auto_increment,
    -> name varchar(20),
    -> age tinyint unsigned default 0,
    -> gender enum('male','female'),
    -> subject enum('ui','java','yunwei','python'),
    -> primary key(id)
    -> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.01 sec)


mysql> load data local infile '/tmp/sqlbak/tb_student.txt' into table tb_student;
Query OK, 5 rows affected (0.00 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 0

local data local infile的方法,该方法要求在编译数据库编译的时候加上--enable-local-infile参数才行。

也可以使用方法:

mysqlimport  dbname /path/file    # 要求:导出的文件必须和数据表名称完全一致。

典型的应用场景:

可以把一些有规则的文本文件导入到数据库中。

案例:把/etc/passwd文件中的数据导入到password数据库中。

第一步:创建一个password数据库,password是mysql保留关键字,建议使用两个反撇号括起来。

use db_itheima;

create table `password` (
	`uname` varchar(50) default null,
	`pass` char(2) default null,
	`uid` int(11) default null,
	`gid` int(11) default null,
	`comment` varchar(255) default null,
	`home` varchar(50) default null,
	`shell` varchar(50) default null
)engine=innodb default charset=utf8mb4;

第二步:把/etc/passwd文件拷贝到/tmp/sqlbak目录下,起名叫password.txt。

[root@mysql-server ~]# cp /etc/passwd /tmp/sqlbak/password.txt

第三步:使用mysqlimport把password.txt文件中的内容写入到数据表。

[root@mysql-server sqlbak]# mysqlimport db_itheima --fields-terminated-by=':' --lines-terminated-by                                           ='\n' /tmp/sqlbak/password.txt -p
Enter password:
db_itheima.password: Records: 21  Deleted: 0  Skipped: 0  Warnings: 0



[root@mysql-server sqlbak]# mysql -e "select * from db_itheima.password;" -p
Enter password:
+-----------------+------+------+------+-----------------------------------------------------------------+--------------------+----------------+
| uname           | pass | uid  | gid  | comment                                                         | home               | shell          |
+-----------------+------+------+------+-----------------------------------------------------------------+--------------------+----------------+
| root            | x    |    0 |    0 | root                                                            | /root              | /bin/bash      |
| bin             | x    |    1 |    1 | bin                                                             | /bin               | /sbin/nologin  |
| daemon          | x    |    2 |    2 | daemon                                                          | /sbin              | /sbin/nologin  |
| adm             | x    |    3 |    4 | adm                                                             | /var/adm           | /sbin/nologin  |
| lp              | x    |    4 |    7 | lp                                                              | /var/spool/lpd     | /sbin/nologin  |
| sync            | x    |    5 |    0 | sync                                                            | /sbin              | /bin/sync      |
| shutdown        | x    |    6 |    0 | shutdown                                                        | /sbin              | /sbin/shutdown |
| halt            | x    |    7 |    0 | halt                                                            | /sbin              | /sbin/halt     |
| mail            | x    |    8 |   12 | mail                                                            | /var/spool/mail    | /sbin/nologin  |
| operator        | x    |   11 |    0 | operator                                                        | /root              | /sbin/nologin  |
| games           | x    |   12 |  100 | games                                                           | /usr/games         | /sbin/nologin  |
| ftp             | x    |   14 |   50 | FTP User                                                        | /var/ftp           | /sbin/nologin  |
| nobody          | x    |   99 |   99 | Nobody                                                          | /                  | /sbin/nologin  |
| systemd-network | x    |  192 |  192 | systemd Network Management                                      | /                  | /sbin/nologin  |
| dbus            | x    |   81 |   81 | System message bus                                              | /                  | /sbin/nologin  |
| polkitd         | x    |  999 |  998 | User for polkitd                                                | /                  | /sbin/nologin  |
| sshd            | x    |   74 |   74 | Privilege-separated SSH                                         | /var/empty/sshd    | /sbin/nologin  |
| postfix         | x    |   89 |   89 |                                                                 | /var/spool/postfix | /sbin/nologin  |
| ntp             | x    |   38 |   38 |                                                                 | /etc/ntp           | /sbin/nologin  |
| tss             | x    |   59 |   59 | Account used by the trousers package to sandbox the tcsd daemon | /dev/null          | /sbin/nologin  |
| mysql           | x    |  998 |  996 |                                                                 | /home/mysql        | /sbin/nologin  |
+-----------------+------+------+------+-----------------------------------------------------------------+--------------------+----------------+
[root@mysql-server sqlbak]#

使用navicat工具进行数据的导出:

MySQL学习笔记23_第3张图片

根据向导一步一步地导出:

导出结果如下:

MySQL学习笔记23_第4张图片

 

你可能感兴趣的:(MySQL,mysql)