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