博客
关于我
mysql数据库备份与恢复
阅读量:792 次
发布时间:2023-02-12

本文共 2504 字,大约阅读时间需要 8 分钟。

一、MySQL数据库备份常用操作

MySQL数据库的备份是保障数据安全的重要环节,本文将介绍几种常用的备份命令和操作方法。

1. 使用mysqldump备份数据库

mysqldump是MySQL常用的数据库备份工具,支持多种参数来定制备份操作。以下是常用的备份命令示例:

mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql

该命令将备份指定数据库的所有表数据和结构信息。

2. 备份带有删除表的数据库

如果需要备份数据库但不想手动删除原有数据库,可以使用以下命令:

mysqldump --add-drop-table -u用户名 -p密码 --database 数据库名 > 文件名.sql

该命令会在备份过程中自动生成删除表的SQL语句,从而覆盖原有数据库。

3. 压缩备份数据库

为了减少存储空间,可以对备份文件进行压缩。以下是压缩备份的命令:

mysqldump -h主机名 -u用户名 -p密码 -database 数据库名 | gzip > 文件名.sql.gz

备份文件会被压缩为`.sql.gz`格式。

4. selective备份特定表

如果只需要备份数据库中的部分表,可以通过指定表名来实现:

mysqldump -h主机名 -u用户名 -p密码 -database 数据库名 specific_table1 specific_table2 > 文件名.sql

5. 同时备份多个数据库

需要同时备份多个数据库时,可以将数据库名列表传递给命令:

mysqldump -h主机名 -u用户名 -p密码 --databases 数据库1 数据库2 数据库3 > 文件名.sql

6. 备份数据库结构(无数据)

如果仅需要备份数据库的结构信息,可以使用以下命令:

mysqldump --no-data --databases 数据库1 数据库2 数据库3 > 结构文件名.sql

7. 备份所有数据库

如果需要一次性备份所有数据库,可以使用以下命令:

mysqldump --all-databases > 所有数据库备份文件.sql

8. MySQL数据库还原命令

还原数据库时,通常需要使用与备份相同的命令结合文件进行还原操作。例如:

mysql -h主机名 -u用户名 -p密码 数据库名 < 文件名.sql

9. 解压并还原压缩备份

如果备份文件是压缩的,需要先解压再还原。例如:

gunzip < 文件名.sql.gz | mysql -h主机名 -u用户名 -p密码 数据库名

10. 数据库迁移

将数据库迁移到新服务器时,可以使用mysqldump和mysql命令结合使用:

mysqldump -u用户名 -p密码 数据库名 | mysql --host=新服务器IP -C 数据库名

11. mysqldump的高级参数

在实际操作中,mysqldump支持一些高级参数,如--master-data和--single-transaction。--master-data=2会记录binlog文件和position信息,而--single-transaction会将隔离级别设置为repeatable-commited。

12. 数据库导入

使用mysql客户端导入数据库文件时,可以使用source命令:

mysql> source d:\test.sql

13. 查看MySQL日志

查看binlog日志可以使用mysqlbinlog命令:

mysqlbinlog binlog文件名 | more

14. 查看和管理general_log

要查看general_log状态,可以使用show variables like "general_log%"命令。开启general_log时,可以使用set global general_log=on。

二、增量备份

增量备份适用于大型数据库,每天进行完整备份可能耗时过长。增量备份利用了MySQL的binlog日志,记录数据库的所有修改操作。

1. 先做一次完整备份

mysqldump -h10.6.208.183 -utest2 -p123 -P3310 --single-transaction --master-data=2 test > test.sql

此时,备份文件test.sql中会包含CHANGE MASTER TO语句,指向对应的binlog文件和position信息。

2. 执行增量操作并生成新的binlog文件

在test库中添加两条记录test_student表的记录,并执行flush logs命令。此时,新的binlog文件bin-log.000003会被创建。

3. 删除test库中的表

在test库中删除t_student和a表的操作也会记录在binlog.000003文件中。

三、恢复操作

恢复数据库时,通常需要分两步:首先还原全备文件,再还原相关的binlog文件。

1. 运行全备文件还原

mysql -h10.6.208.183 -utest2 -p123 -P3310 < test.sql

或者在mysql命令行中使用source命令:

mysql> source d:\test.sql

2. 恢复binlog.000002文件

mysqlbinlog binlog.000002 | mysql -h10.6.208.183 -utest2 -p123 -P3310

3. 恢复部分binlog.000003文件

通过查找general_log中的操作时间,找到对应的binlog.000003文件中的position点,使用mysqlbinlog命令控制恢复范围:

mysqlbinlog mysql-bin.000003 --stop-position=208 | mysql -h10.6.208.183 -utest2 -p123 -P3310

以上命令可以帮助恢复误删除的数据库和相关数据。

转载地址:http://fcdfk.baihongyu.com/

你可能感兴趣的文章
MySql创建数据表
查看>>
MySQL创建新用户以及ERROR 1396 (HY000)问题解决
查看>>
MySQL创建用户报错:ERROR 1396 (HY000): Operation CREATE USER failed for 'slave'@'%'
查看>>
mysql加强(3)~分组(统计)查询
查看>>
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
查看>>
mysql加强(5)~DML 增删改操作和 DQL 查询操作
查看>>
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
mysql加强(7)~事务、事务并发、解决事务并发的方法
查看>>
mysql千万级大数据SQL查询优化
查看>>
MySQL千万级大表优化策略
查看>>
MySQL单实例或多实例启动脚本
查看>>
MySQL压缩包方式安装,傻瓜式教学
查看>>
MySQL原理、设计与应用全面解析
查看>>
MySQL原理简介—1.SQL的执行流程
查看>>
mysql参考触发条件_MySQL 5.0-触发器(参考)_mysql
查看>>
MySQL及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
MySql各种查询
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>