mysql数据备份与恢复
数据备份
- 备份一个数据库
mysqldump -u用户名 -p密码 数据库名 > 备份的文件名
mysqldumo -uroot -p123456 database_name > mysql.sql # 可以在文件名前写上文件路径
- 备份多个数据库
mysqldump -u用户名 -p密码 数据库1 数据库2 > 备份的文件名
mysqldumo -uroot -p123456 database1 database2 > mysql.sql
- 备份一个表
mysqldump -u用户名 -p密码 数据库名 表名 > 备份的文件名
mysqldump -uroot -p123456 database_name table_name >mysql.sql
如果只需要备份数据库或数据表的结构,在数据库名后面加上 ‘-d’ 即可
- 备份数据库或数据表的结构
mysqldump -u用户名 -p密码 数据库名 -d > 备份的文件名
mysqldumo -uroot -p123456 database_name -d > mysql.sql
# 数据表同理
如果需要指定备份数据库的服务器 可以使用如下命令
mysqldump -h服务器 -u用户名 -p密码 数据库 > 备份的文件名
mysqldumo -h192.168.11.12 -uroot -p123456 database_name > mysql.sql
下面是我备份得到的数据库的部分截图
数据还原
- 还原数据库
mysql -u用户名 -p密码 已存在的数据库名 < 备份的数据库文件路径
mysql -uroot -p123456 exit_database < mysql.sql
【注意】
- 备份数据库是“>”,还原数据库是“<”,别弄混。
- 通过这种方式还原时,必须保证两个MySQL数据库的版本号是相同的。MyISAM类型的表有效,对于InnoDB类型的表不可用,InnoDB表的表空间不能直接复制。
测试
在使用上面数据进行备份还原时有几个问题:
- 数据库没有清空是否能够还原成功?会不会还原后有重复的数据出现?
- 数据备份后,新增数据后,还原数据库会保留新增的数据吗?
针对以上问题,我进行了测试
测试环境
- mysql数据库版本:mysql5.5
- 系统:windows
数据表结构
初始数据
开始测试
进行数据库备份
在桌面创建了个 test 文件夹,在文件夹下打开powershell窗口,执行命令
mysqldump -uroot -p123456 test >test.sql
命令执行完成后,在当前目录下生成了 test.sql 备份文件
测试1: 1. 数据库没有清空是否能够还原成功?会不会还原后有重复的数据出现?
步骤1: 删除数据表中的数据
将 customer 表中的 id 为1的数据删除,如下图所示
步骤2:数据还原
执行还原语句
还原后进行查询 customer 表,如下图
结论
数据库没有清空可以还原成功,不会出现重复的数据
测试2: 数据备份后,新增数据后,还原数据库会保留新增的数据吗?
新增一条数据,结果如下
执行数据库还原语句
查询数据表,如下图:
结论
通过上面结果可以得出,使用上面方法对数据库进行数据备份还原,在备份后,对数据表进行增删改的修改,进行还原会把数据库完全还原到备份时的数据,不会造成数据混乱