Mysql 数据备份与恢复(详细步骤)

  • 测试数据:
当前我用 test 数据库 与 test 数据库中的 user 表作为测试使用

备份测试路径:/Users/dengzemiao/Desktop/dbTest

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| area           |
| test           |
| user           |
+----------------+


  • 数据备份

    数据备份就是指将一个数据库中的数据,转存为一个或多个文件的过程,备份数据库的命令不需要登录数据之后操作,直接打开命令行进行操作即可。



  • 备份整个数据库


命令形式: (注意:.exe 是 Windows 上面的,Mac 不用带这个)

// 这种中间存在 空格分开的方式密码可以不用输入,回车之后还是需要输入密码的
mysqldump.exe -h 主机地址 -u 用户名 -p 密码 数据库名 > 备份文件名(含路径)

// 这种中间没有空格分开的方式密码可以直接连着输入,但是回车之后会警告密码放命令行中不安全
mysqldump.exe -h主机地址 -u用户名 -p密码 数据库名 > 备份文件名(含路径)

// 如果是本地本机,可以省略 -h主机地址
mysqldump.exe -u用户名 -p密码 数据库名 > 备份文件名(含路径)

说明:
1、跟登录 mysql 类似,密码可以不写,则随后会提示输入
2、该语句是 mysq/bin 中的一个命令,不是 sql 语句(即不应该登录 mysql 后使用)

使用举例:
dengzemiaodeMacBook-Pro:~ dengzemiao$ mysqldump -hlocalhost -uroot -p test > /Users/dengzemiao/Desktop/dbTest/test.sql
Enter password: 

dengzemiaodeMacBook-Pro:~ dengzemiao$ mysqldump -hlocalhost -uroot -p123456 test > /Users/dengzemiao/Desktop/dbTest/test.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.


  • 备份单个表


命令形式: (使用的区别区别跟上面一样,看看上面就行了)
mysqldump.exe -h 主机地址 -u 用户名 -p 密码 数据库名 表名 > 备份文件名(含路径)
mysqldump.exe -h主机地址 -u用户名 -p密码 数据库名 表名 > 备份文件名(含路径)

说明:
1、跟登录 mysql 类似,密码可以不写,则随后会提示输入
2、该语句是 mysql/bin 中的一个命令,不是 sql 语句(即不应该登录 mysql 后再去使用)

使用举例:
dengzemiaodeMacBook-Pro:~ dengzemiao$ mysqldump -hlocalhost -uroot -p test user > /Users/dengzemiao/Desktop/dbTest/test-user.sql
Enter password: 

dengzemiaodeMacBook-Pro:~ dengzemiao$ mysqldump -hlocalhost -uroot -p123456 test user > /Users/dengzemiao/Desktop/dbTest/test-user.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

Mysql 数据备份与恢复(详细步骤)_第1张图片



  • 数据还原 (数据恢复)

数据还原(恢复)是指将一个之前备份过的数据文件,恢复(还原)到某个数据库的过程。
还原其实不分整个库还是单个表,都是一样的。



命令形式: (使用的区别区别跟上面一样,看看上面就行了)
mysql.exe -h 主机地址 -u 用户名 -p 密码 目标数据库名 < 想要还原的备份文件名(含路径)
mysql.exe -h主机地址 -u用户名 -p密码 目标数据库名 < 想要还原的备份文件名(含路径)

也可以登录数据库,并创建一个数据库,在数据库中通过 source 进行导入:
mysql> create database test_bak;
mysql> user test_bak;
mysql> source /Users/dengzemiao/Desktop/dbTest/test.sql;
mysql> source /Users/dengzemiao/Desktop/dbTest/test_user.sql;

目标数据库名: 也就是你数据库里面需要先建一个数据库,用于备份导入

使用举例:
dengzemiaodeMacBook-Pro:~ dengzemiao$ mysql -hlocalhost -uroot -p test_bak < /Users/dengzemiao/Desktop/dbTest/test.sql
Enter password: 

dengzemiaodeMacBook-Pro:~ dengzemiao$ mysql -hlocalhost -uroot -p123456 test_bak < /Users/dengzemiao/Desktop/dbTest/test.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
列出本地数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

新建一个备份数据库 test_bak
mysql> create database test_bak;
Query OK, 1 row affected (0.01 sec)

使用备份数据库 test_bak
mysql> use test_bak;
Database changed

在备份前查看一下是否存在表,现在是没有的,那么开始备份
mysql> show tables;
Empty set (0.00 sec)

新开命令行窗口执行备份命令
dengzemiaodeMacBook-Pro:~ dengzemiao$ mysql -hlocalhost -uroot -p123456 test_bak < /Users/dengzemiao/Desktop/dbTest/test.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

再次查看数据库中的表,说明备份数据已经导入进来了,就算重复执行上面的备份命令也只是覆盖数据库
mysql> show tables;
+--------------------+
| Tables_in_test_bak |
+--------------------+
| area               |
| test               |
| user               |
+--------------------+

上面备份整个数据库也就好了,当然也可以通过 source 来进行导入:
mysql> source /Users/dengzemiao/Desktop/dbTest/test.sql;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
......

mysql> source /Users/dengzemiao/Desktop/dbTest/test_user.sql;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
......

你可能感兴趣的:(Mysql,mysql,sql,数据库)