MySQL 数据备份

1、表备份

  • 备份表结构
    • create table + 表1 like + 表2
      • 表1 为原有的表,表2 为备份出的表
# 备份表 dcs 为 duoceshi
mysql> create table duoceshi like dcs;

mysql> show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| dcs               |
| duoceshi          |
+-------------------+

mysql> desc duoceshi;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(1)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
| sex   | char(2)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
  • 备份表数据
    • insert into + 表1 select * from + 表2
      • 将表2 中的数据备份到表1 中
    • 注意点:插入的表必须要存在
# 把表 dcs 中的数据备份到表 duoceshi 中
mysql> insert into duoceshi select * from dcs;

mysql> select * from dcs;
+----+-----------+------+
| id | name      | sex  |
+----+-----------+------+
|  1 | zhangsan1 | m    |
|  2 | lisi1     | m    |
|  3 | zhangsan2 | m    |
+----+-----------+------+

mysql> select * from duoceshi;
+----+-----------+------+
| id | name      | sex  |
+----+-----------+------+
|  1 | zhangsan1 | m    |
|  2 | lisi1     | m    |
|  3 | zhangsan2 | m    |
+----+-----------+------+
  • 备份表中部分数据
    • 把一个表的某些字段插入到一个新表中
      • insert into + 表1(字段1,字段2) select  字段1,字段2  from 表2
    • 注意点
      • 插入的表必须存在
      • 插入的表是新表,没有数据
# 备份表 dcs 中的 id,name 两个字段数据到表 duoceshi 中
mysql> insert into duoceshi(id,name) select id,name from dcs;

mysql> select * from dcs;
+----+-----------+------+
| id | name      | sex  |
+----+-----------+------+
|  1 | zhangsan1 | m    |
|  2 | lisi1     | m    |
|  3 | zhangsan2 | m    |
+----+-----------+------+

mysql> select * from duoceshi;
+----+-----------+------+
| id | name      | sex  |
+----+-----------+------+
|  1 | zhangsan1 | NULL |
|  2 | lisi1     | NULL |
|  3 | zhangsan2 | NULL |
+----+-----------+------+

2、数据库备份还原

  • 数据库备份
    • mysqldump -uroot -p 数据库名 > 脚本名  
# 将数据库备份到 /zhengying 目录下的 student_copy.sql 文件中
[ /]# mysqldump -uroot -p student > /zhengying/student_copy.sql

Enter password: ......
  • 还原数据库
    • mysql -uroot -p  数据库 < 脚本名
    • 数据库必须存在
# 新建数据库 stu_db
mysql> create database stu_db;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cms                |
| mysql              |
| stu_db             |
| test               |
+--------------------+

# 还原数据库数据到 stu_db 数据库中
[ /]# mysql -uroot -p stu_db < /zhengying/student_copy.sql 
Enter password: ......

# 再次进入 MySQL 数据库
[ /]# mysql -u root -p
Enter password: ......

# 进入 stu_db 库中
mysql> use stu_db;

# 查看 stu_db 库的表,验证表是否还原成功
mysql> show tables;
+------------------+
| Tables_in_stu_db |
+------------------+
| dcs              |
| duoceshi         |
| t                |
| t_course         |
| t_student        |
| v_stu            |
+------------------+

# 查看 dcs 表中数据,验证表数据是否还原成功
mysql> select * from dcs;
+----+-----------+------+
| id | name      | sex  |
+----+-----------+------+
|  1 | zhangsan1 | m    |
|  2 | lisi1     | m    |
|  3 | zhangsan2 | m    |
+----+-----------+------+