博客
关于我
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学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
查看>>
Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
查看>>
Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
查看>>
Mysql学习总结(85)——开发人员最应该明白的数据库设计原则
查看>>
MySQL学习笔记十七:复制特性
查看>>
mysql安装卡在最后一步解决方案(附带万能安装方案)
查看>>
mysql安装和启动命令小结
查看>>
MySQL安装配置教程(非常详细),从零基础入门到精通,看完这一篇就够了
查看>>
mysql安装配置简介
查看>>
MySQL定义和变量赋值
查看>>
mysql实战01|基础架构:一条SQL查询语句是如何执行的?
查看>>
Mysql实战之数据备份
查看>>
mysql实现成绩排名
查看>>
Mysql客户端中文乱码问题解决
查看>>
mysql客户端工具使用
查看>>
MySQL密码忘记,怎么办?
查看>>
mysql对同一张表进行查询和赋值更新
查看>>
mysql导入数据库出现:Incorrect string value: '\xE7\x82\xB9\xE9\x92\x9F' for column 'chinese' at row 1...
查看>>
mysql导入(ibd文件)
查看>>
Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
查看>>