MySQL备份恢复

MySQL备份恢复

MySQL备份方式简单概述

首先强调一下MySQL备份方式分为物理备份和逻辑备份

物理备份:

物理备份是对整个数据库进行压缩打包的暴力压缩办法,大致方式如下:

#备份
server1 ~]# systemctl stop mysqld
server1 ~]# cp -r /var/lib/mysql  /tmp/mysql
server1 ~]# tar -zxvf /root/mysql.tar.gz /var/lib/mysql
#恢复
server2 ~]# systemctl stop mysqld
server2 ~]# rm -rf /var/lib/mysql
server2 ~]# tar -xvf /root/mysql.tar.gz  -c /

方式过于暴力,不推荐,但也确实是一个备份恢复的办法

逻辑备份

逻辑备份分为完全备份,增量备份,差异备份,分别对以下操作逐一解释

一、完全备份

完全备份是针对单个库,单个表,或者所有库,做全部的备份,和物理备份不同,物理备份是针对所有的文件,包括配置文件压缩备份,而逻辑备份是针对的库或表做备份,说回完全备份,完全备份是备份标志是有.sql文件的,实际备份恢复操作如下

#备份   mysqldump -uroot -p密码 库名 >  存放目录
server1 ~]# mysqldum -uroot -pbanqiao -A > /root_demo1.sql   #对server1中的所有(-A)数据库做完全备份
server1 ~]# mysqldum -uroot -pbanqiao database1 > /root_demo2.sql   #对server1中database1中的数据做完全备份
server1 ~]# mysqldum -uroot -pbanqiao database1.user > /root_demo3.sql   #对server1中的database库下的user表做完全备份
server1 ~]# mysqldum -uroot -pbanqiao -B database2 database3 > /root_demo4.sql   #对server1这种的database2和database3做完全备份

#恢复  mysql -uroot -p密码 库名 < 存放目录
库名用法如上,如果是对某个库重命名,就备份原先的库,然后在恢复操作时,库名写新的名称即可

二、增量备份

增量备份是借助上一个备份的偏移量继续做备份,那么什么事偏移量呢,偏移量是日志文件记录每一个对数据库操作的标记,比如你做了插入数据的操作,那么日志文件就是记录你的这一步操作。偏移量对差异恢复非常关键。

在做增量备份的时候我们先要对配置文件做一个调整

#备份

server1 ~]# mysqldump -uroot -pbanqiao database1 > /root_demo4.sql

]# vim /etc/my.cnf
[mysqld]
    ```  #此为省略
    log_bin        #打开日志文件可以重命名,修改日志位置    /存储路径/文件名
    server_id =1
    binlog_format="mixed"    #有3种模式    ROW行模式//statement报表模式//mixed混合模式
    max_bin_log_size=1024m    #当日志文件有1G大小时就生成新的日志文件
    ```

]# systemctl restart mysqld
]# ls /var/lib/mysql     #查看是否生成以   主机名_bin.index的日志索引文件

]# mysql -uroot -pbanqiao -e 'insert into database1.user(name,age) values ("yasuo","8")'   #插入一条数据
]# mysql -uroot -pbanqiao -e 'flush logs'   #刷行日志


#恢复
server2 ~]# mysql -uroot -pbanqiao testdb1 < root_demo4.sql
]# mysqlbinlog /root/server1_log.000001 | mysql -uroot -pbanqiao
这句话的意思是吧日志中执行过的命令都全部执行一遍

三、差异备份

差异备份就是在日志的基础上找到对应的偏移量进行回复,一般用于误操作上

先完全回复之前备份好的版本

Mysql>  show binlog events in "server1_log.000001"

找到误操作之前的偏移量
]# mysqlbinlog --stop-position=650 server1_bin.000001 

日常生产环境遵循每日一增备,每周一完备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值