- 测试数据:
当前我用 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.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)
......