胖蔡说技术
随便扯扯

MySQL数据备份与恢复

对于程序开发而言,数据是重中之重。通常为了防止我们的网站应用、桌面应用、手机应用等的数据的安全和完整性,通常会定期做一个常规性的备份操作,以备出现重大灾难性数据损毁,或者是版本数据回退等操作,本文介绍MySQL数据库中几个常见的数据备份方式,本文内容来自网络整理。

拷贝数据库文件

直接通过拷贝数据库存储文件,实现全数据的完全备份。之后还原的话直接替换原机器的数据库文件即可完成数据库全覆盖。

# 需要关闭数据库
[root@host1 mysql]# pwd
/var/lib/mysql
压缩、拷贝到host2
[root@host1 mysql]# tar czf db.tar.gz *
[root@host1 mysql]# scp db.tar.gz 192.168.157.11:/beifen
 

# 带备份及其需要首先关闭数据库,清理/var/lib/mysql/下的内容,
[root@host2 beifen]# tar xf db.tar.gz /var/lib/mysql/
将/beifen/db.tar.gz解压到/var/lib/mysql# 

mysqldump备份

MySQL自带的备份工具,可方便实现对Mysql的备份,使用mysqldump来备份可以指定对应的库,将其保存为sql脚本,并使用mysql命令导入备份数据。

1、单库备份

通过如下的命令实现单库的备份操作并导出备份文件:


[root@host1 ~]# mysqldump -u登录用户 -p'密码' 数据库 表名 > 备份文件名称.sql
#数据库 表名:这里可以是指定数据库或者是某个库表
-A备份所有数据库,
-B会将创建数据库语句也备份,
-b备份数据库表的结构不备份数据。


#示例

[root@host1 ~]# mysqldump -u root -p 'root' mysql > /backup/mysql.sql  #单库
[root@host1 ~]# mysqldump -u root -p 'root' mysql user > /backup/mysql-user.sql #单表

并通过如下命令实现备份文件的还原:

[root@host1 ~]#  mysql -u root -p 'root' < /backup/mysql.sql

2、多库备份

操作类似,就是需要在备份的数据添加参数,命令格式如下:

[root@host1 ~]# mysqldump -u 用户名 -p [密码] [选项] --databases 库名1 [库名2] ... > /备份路径/备份文件名

3、数据库完全备份

备份所有数据库数据,命令格式如下:

[root@host1 ~]# mysqldump -u 用户名 -p [密码] [选项] --all-databases > /备份路径/备份文件名

增量恢复

mysql中我们可以使用mysqlbinlog来实现基于归档日志的增量恢复操作。Binlog是用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复。

1、常规恢复

常规恢复是将所有备份的二进制日志内容全部恢复,可以通过使用mysqlbinlog实现,命令如下:

[root@host1 ~]# mysqlbinlog [--no-defaults]增量备份文件|mysql -u用户名-p

2、基于位置的恢复

实现精准定位恢复操作,可主动跳过一些错误的数据库操作而导致的数据异常,命令如下:

# 恢复数据到指定位置
[root@host1 ~]# mysqlbinlog --stop-position='操作id' 二进制日志 | mysql -u 用户名 -p 密码

# 指定的位置开始恢复数据
[root@host1 ~]# mysqlbinlog --start-position='操作id' 二进制日志 | mysql -u 用户名 -p 密码

3、基于时间点的恢复

从日志开头截止到某个时间点的恢复,命令格式如下:

# 从日志开头截止到某个时间点的恢复
[root@host1 ~]# mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql-u用户名-p密码

# 从某个时间点到日志结尾的恢复
[root@host1 ~]# mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小时:分钟:秒' 二进制日志 | mysql-u用户名-p密码

# 从某个时间点到某个时间点的恢复
[root@host1 ~]#  mysqlbinlog [-no-defaults] --start-datetime='年-月-日 小时:分钟:秒'--stop-datetime='年-月-日小时:分钟:秒'二进制日志 | mysql-u用户名-p密码
赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » MySQL数据备份与恢复
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏