学习笔记MySQL 数据备份与恢复
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记MySQL 数据备份与恢复相关的知识,希望对你有一定的参考价值。
数据备份与恢复
数据备份
系统意外崩溃或者硬件的损坏都可以导致数据库的丢失,因此mysql管理员应该定期备份数据库,使得在意外情况发生时,尽可能减少损失。
使用MySQLdump命令备份
MySQLdump命令执行时,可以将数据库备份成一个文本文件,该文件中实际包含了多个CREATE和INSERT语句,使用这些语句可以重新创建表和插入数据。
语法:
mysqldump -u user -h host -p password dbname[tbname,[tbname...]] > filename.sql
user : 用户名称
host : 登录用户主机名称
password : 登录密码
dbname : 数据库名称
tbname : 数据库中需要备份的表名称
> : 告诉MySQLdump将备份数据表的定义和数据写入备份文件
filename.sql : 备份文件名称
比如需要备份testdb数据库中所有的表:
mysqldump -u root -p testdb>C:/backup/testdb20211225.sql
Tip : 需要保证备份路径下的文件夹存在,否则将会找不到指定路径而备份失败。
比如需要备份testdb数据库中dept表:
mysqldump -u root -p testdb dept>C:/backup/testdb20211225.sql
比如需要备份多个数据库,testdb1和testdb2:
mysqldump -u root -p --databases testdb1 testdb2>C:/backup/testdb20211225.sql
Tip :需要使用“--databases”参数,并且多个数据库之间用空格分隔。
比如需要备份系统中所有的数据库:
mysqldump -u root -p --all-databases>C:/backup/testdb20211225.sql
直接复制整个数据库目录
因为MySQL表保存为文件方式,因此可以直接复制MySQL数据库的存储目录及文件进行备份。
在Windows平台下,默认目录通常为:
C:\\Documents and Settings\\All Users\\Application Data\\MySQL\\MySQL Server 8.0\\data
这种方式简单、快速、有效。要想保持备份的一致性,备份前需要对相关表执行LOCK TABLES操作,然后对表执行FLUSH TABLES。这样当复制数据库目录中的文件时,允许用户继续查询表。
但是这种方法对InnoDB存储引擎的表是不适用的,而且这种方法数据最好恢复到相同版本的服务器中,否则有可能不兼容。
使用MySQLhotcopy工具备份
MySQLhotcopy是一个Perl脚本。使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库。它是备份数据库或者单个表最快的途径,但它只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。
MySQLhotcopy在UNIX系统中运行。
语法:
mysqlhotcopy db_name_1, ... db_name_n /path/to/new_directory
比如需要备份testdb数据库到/usr/backup目录:
mysqlhotcopy -u root -p testdb /usr/backup
Tip : 要想执行MySQLhotcopy,必须拥有可以访问备份的表文件权限。
数据恢复
通过恢复已经备份的数据可以尽量减少因为意外情况导致数据丢失的损失。
使用MySQL命令恢复
对于已经备份的包含CREATE和INSERT语句的文本文件,可以使用命令导入到数据库中。
语法:mysql -u user -p [dbname] < filename.sql
比如将C:/backup/testdb20211225.sql文件中的备份导入到数据库中:
mysql -u root -p testdb < C:/backup/testdb20211225.sql
Tip : 必须现在MySQL服务器中创建testdb数据库。
如果已经登录MySQl服务器,还可以使用source命令导入sql文件。
语法:source filename
比如需要将C:/backup/testdb20211225.sql文件中的备份导入到数据库中:
use testdb ;
source C:/backup/testdb20211225.sql;
直接复制到数据库目录
如果数据库通过复制数据库文件备份,那么可以直接复制备份的文件到MySQL数据目录下实现恢复。主要注意的是,保存备份数据的数据库和待恢复的数据库服务器的主版本号必须相同。而且该方式仅仅对MyISAM引擎的表有效,对于InnoDB存储引擎的表不可用。
执行恢复以前关闭MySQL服务器,将备份的文件或者目录覆盖MySQL的data目录,然后重启MySQL服务。
使用MySQLhotcopy快速恢复
在MySQL服务器停止运行时,将备份的数据库文件复制MySQL存放数据的位置(MySQL的data文件夹),重启MySQL服务即可。
比如需要从MySQLhotcopy复制的备份恢复数据库:
cp -R /usr/backup/testdb usr/local/mysql/data
以上是关于学习笔记MySQL 数据备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章
Mysql DBA 高级运维学习笔记-MySQL备份与恢复实战案例及生产方案
Mysql DBA 高级运维学习笔记-Mysql增量备份及数据恢复实战