博客
关于我
mysql数据库备份与恢复
阅读量:789 次
发布时间: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存储登录_php调用mysql存储过程会员登录验证实例分析
查看>>
MySql存储过程中limit传参
查看>>
MySQL存储过程入门
查看>>
mysql存储过程批量建表
查看>>
MySQL存储过程的使用实现数据快速插入
查看>>
mysql存储过程详解
查看>>
Mysql存表情符号发生错误
查看>>
MySQL学习-group by和having
查看>>
MySQL学习-MySQL数据库事务
查看>>
MySQL学习-MySQL条件查询
查看>>
MySQL学习-SQL语句的分类与MySQL简单查询
查看>>
MySQL学习-子查询及limit分页
查看>>
MySQL学习-排序与分组函数
查看>>
MySQL学习-连接查询
查看>>
Mysql学习总结(10)——MySql触发器使用讲解
查看>>
Mysql学习总结(11)——MySql存储过程与函数
查看>>
Mysql学习总结(12)——21分钟Mysql入门教程
查看>>
Mysql学习总结(13)——使用JDBC处理MySQL大数据
查看>>
Mysql学习总结(14)——Mysql主从复制配置
查看>>
Mysql学习总结(15)——Mysql错误码大全
查看>>