- 测试数据:
``` 当前我用 test 数据库 与 test 数据库中的 user 表作为测试使用
备份测试路径:/Users/dengzemiao/Desktop/dbTest
mysql> show databases; +--------------------+ | Database | +--------------------+ | informationschema | | mysql | | performanceschema | | sys | | test | +--------------------+
mysql> show tables; +----------------+ | Tablesintest | +----------------+ | area | | test | | user | +----------------+ ```
- 数据备份
数据备份就是指将一个数据库中的数据,转存为一个或多个文件的过程,备份数据库的命令不需要登录数据之后操作,直接打开命令行进行操作即可。
- 备份整个数据库
``` 命令形式:
// 这种中间存在 空格分开的方式密码可以不用输入,回车之后还是需要输入密码的 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.exe -h 主机地址 -u 用户名 -p 密码 目标数据库名 < 想要还原的备份文件名(含路径) mysql.exe -h主机地址 -u用户名 -p密码 目标数据库名 < 想要还原的备份文件名(含路径)
也可以登录数据库,并创建一个数据库,在数据库中通过 source 进行导入: mysql> create database testbak; mysql> user testbak; 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 | +--------------------+ | informationschema | | mysql | | performanceschema | | sys | | test | +--------------------+
新建一个备份数据库 testbak mysql> create database testbak; Query OK, 1 row affected (0.01 sec)
使用备份数据库 testbak mysql> use testbak; 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; +--------------------+ | Tablesintest_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) ...... ```