【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客
《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)
MySQL数据备份-CSDN博客,MySQL数据备份参看这一个链接。
本文讲解MySQL数据恢复方法。管理人员操作的失误、计算机故障以及其他意外情况,都会导致数据的丢失和破坏。当数据丢失或意外破坏时,可以通过恢复已经备份的数据来最大限度地减少数据丢失和破坏造成的损失。本节将介绍数据恢复的方法。
11.2.1 使用mysql命令恢复数据
对于已经备份的包含CREATE、INSERT语句的sql文件,可以使用mysql命令导入数据库中。本小节将介绍使用mysql命令导入sql文件的方法。
备份的sql文件中包含CREATE、INSERT语句(有时也会有DROP语句),mysql命令可以直接执行文件中的这些语句,其语法如下:
mysql –u user –p [dbname] < filename.sql
user是执行filename.sql中的语句的用户名;-p表示输入用户密码;dbname是数据库名。如果filename.sql文件为mysqldump工具创建的包含创建数据库语句的文件,则执行的时候不需要指定数据库名。
【例11.6】使用mysql命令将C:\backup\booksdb_20240301.sql文件中的备份导入数据库中,SQL语句如下:
mysql –u root –p booksDB < C:/backup/booksdb_20240301.sql
执行该语句前,必须先在MySQL服务器中创建booksDB数据库,如果该数据库不存在,则恢复过程将会出错。命令执行成功之后,booksdb_20220301.sql文件中的语句就会在指定的数据库中恢复以前的表。
如果已经登录MySQL服务器,还可以使用source命令导入sql文件。Source命令的语法如下:
source filename
【例11.7】使用root用户登录到服务器,然后使用source导入本地的备份文件booksdb_20240301.sql,SQL语句如下:
--选择要恢复到的数据库
mysql> use booksDB;
Database changed--使用source命令导入备份文件
mysql> source C:\backup\booksdb_20240301.sql
命令执行后,会列出备份文件booksdb_20240301.sql中每一条语句的执行结果。source命令执行成功后,booksdb_20240301.sql中的语句会全部导入现有数据库中。
执行source命令前,必须使用use语句选择数据库;否则恢复过程中会出现“ERROR 1046 (3D000): No database selected”错误。
11.2.2 直接复制到数据库目录
在MySQL中,使用复制数据库文件的方法进行备份和恢复也是一种常见的方法。但是,通过这种方式恢复数据时,保存备份数据的数据库和待恢复的数据库的服务器的主版本号必须相同,而且这种方式只对MyISAM引擎的表有效,对InnoDB引擎的表不可用。
执行恢复前,先关闭MySQL服务,将备份的文件或目录覆盖MySQL的data目录,再启动MySQL服务。对于Linux/UNIX操作系统来说,复制完文件后,需要将文件的用户和组更改为MySQL运行的用户和组,通常用户是MySQL,组也是MySQL。
11.2.3 mysqlhotcopy快速恢复
使用mysqlhotcopy备份的文件也可以用来恢复数据库。在MySQL服务器停止运行时,将备份的数据库文件复制到MySQL存放数据的位置(MySQL的data文件夹),再重新启动MySQL服务即可。如果以根用户执行该操作,则必须指定数据库文件的所有者,SQL语句如下:
chown -R mysql.mysql /var/lib/mysql/dbname
【例11.8】使用mysqlhotcopy复制的备份文件恢复数据库,SQL语句如下:
cp -R /usr/backup/test usr/local/mysql/data
执行完该语句,重启服务器,MySQL将恢复到备份状态。
如果需要恢复的数据库已经存在,则在使用DROP语句删除已经存在的数据库之后,恢复才能成功。另外,MySQL不同版本之间必须兼容,恢复之后的数据才可以使用。