逻辑备份:
1、回顾什么是逻辑备份?
逻辑备份就是把数据库、数据表或者数据进行导出,导出到一个文本文件中。
2、逻辑备份工具:
mysqldump:提供全库级、数据库级别以及表级别的数据备份。
mysqldump+binlog:二进制日志实现增量备份。
3、逻辑的导出导入:
导出(数据备份):
无论是什么存储引擎,以下方式本身是一种数据导出的方法,同时可以用来辅助备份,它可以对一个表的其中一列或者某几列做备份。备份的是==数据记录。==
案例:把tb_student数据表中的数据记录进行逻辑导出。
出现以上问题的主要原因在于我们没有指定MySQL逻辑导出时指定的路径。
我们将配置文件进行更新,并重启mysql。
还需要更新下权限:
最后我们再执行导出操作:
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支持远程连接。
借助一些mysql的管理软件来进行数据的导出导入。
根据向导一步一步地导出:
导出结果如下:
插入数据:
这个是要注意的。
然后再进行导入操作:
数据表的备份和还原:
导出向导只能备份数据信息。
数据表的备份。
数据库的备份和还原。
转储SQL文件。