mysql备份恢复的原理_mysql备份及恢复

热备份

mysqldump

介绍:mysqldump是MySQL自带的备份工具,他备份出来的是一个文本文件可以直接查看,里面记录的就是数据库语句,原理就是通过数据库语句把数据库或表重新建了到备份时状态,其实用图形工具备份原理是一样的(都是逻辑备份)

备份

注意:一定要检查备份文件,注意文件大小不是0,因为即使备份出错也会生成一个空文件

[root@zzh /]# mysqldump -u root -p --all-database > /beifeng/all.sql

备份所以数据库,保存为all.sql文件

[root@zzh /]# mysqldump -u root -p zzh > /beifeng/zzh.sql

备份指定zzh数据库,保存为zzh.sql文件

[root@zzh /]# mysqldump -u root -p zzh kt1 kt2 > /beifeng/biao.sql

备份zzh数据库中的kt1和kt2表,保存为biao.sql文件

-l参数

MyISAM存储引擎在备份的时候需要加,表示将所有表加上锁,在备份

期间,所有表将只能读而不能进行数据更新

-F参数

表示生成一个新的日志文件,这

个日志记录了之前的操作,用来完全恢复

-u参数

指定用户名

-p参数

指定密码

-h参数

指定服务器ip或者域名

-P(大写)

指定端口

完全恢复

[root@zzh /]# mysql -u root -p zzh < /beifeng/zzh.sql

恢复数据库时,数据库不受任何影响,注意:恢复的库时原库一定要存在

把数据恢复到最新状态

[root@zzh /]# mysqldump -F -u root -p kangte > /beifeng/kangte.sql

备份kangte数据库,加-F生成一个新日志文件恢复时好查找,注意:一定要检查一下备份的文件

这时备份以后数据库发生的操作都会记录到二进制日志里面

[root@zzh /]# cp /mysqldata/mysql-bin.000009 /beifeng/

特别注意:一定要在恢复之前把日志文件拷贝出来,否则日志也会记录恢复操作,把从备份生成后的所有二进制文件拷贝出来

[root@zzh /]# mysql -u root -p kangte < /beifeng/kangte.sql

执行完全恢复kangte数据库,恢复到备份数据库时的状态,此时备份时到数据库恢复之间的操作还没有恢复

[root@zzh /]# mysqlbinlog /beifeng/mysql-bin.000009 | mysql -u root -p kangte

用二进制日志把kangte数据恢复到最新状态

不完全恢复

一、基于时间点恢复(如果00:00:00——00:30:30中间出现问题,可以跳过这段时间恢复数据)

注意:恢复数据库之前最后把二进制文件备份一下

[root@zzh /]# mysqlbinlog --stop-date="2009-09-01 00:00:00" /mysqldata/mysql-bin.000009 | mysql -u root -p kangte

用二进制日志文件把kangte数据库恢复到故障前

[root@zzh /]# mysqlbinlog --start-date="2009-09-01 00:30:30" /mysqldata/mysql-bin.000009 | mysql -u root -p kangte

跳过故障时间点继续恢复kangte数据库

二、基于位置的恢复(可以更精确的恢复数据)

[root@zzh /]# mysqlbinlog --start-date="2009-09-01 00:00:00" --stop-date="2009-09-01 00:30:30" /mysqldata/mysql-bin.000009 > /jilu.txt

根据二进制日志生成00:00:00——00:30:30中间的操作记录文件,这里记录的是对所有数据库的操作

[root@zzh /]# more /jilu.txt

查看文件找出错误点前后对应的语句代号,如at 1000

[root@zzh /]# mysqlbinlog --stop-position="1000" /mysqldata/mysql-bin.000009 | mysql -u root -p kangte

把kangte数据库恢复到代号为1000的语句前,注意:不恢复代号为1000的语句

[root@zzh /]# mysqlbinlog --start-position="1010" /mysqldata/mysql-bin.000009 | mysql -u root -p kangte

恢复代号为1010的语句之后的语句

冷备份

直接拷贝数据库文件,根据情况备份需要备份的文件

[root@zzh /]# /usr/local/mysql/share/mysql/mysql.server stop

先关闭数据库

[root@zzh /]# mkdir beifeng

建立一个目录用来保存备份

[root@zzh /]# tar -zcvf /beifeng/2009.9.tgz ./mysqldata/

备份数据库,注意:备份时一定要清楚自己当前所在目录,这里用的相对路径

[root@zzh /]# /usr/local/mysql/share/mysql/mysql.server start

启动数据库

用冷备份文件还原

注意:如果是一个小文件还原,直接关闭数据库把文件复制还原回去就可以了,但是如果像全库回复,把文件拷回去时间就会很长时间,这时执行下面操作,先把文件解压到新数据库目录,修改my.cnf文件重新指定新数据库目录,这样关闭数据库时间就会很短

[root@zzh beifeng]# mv mysqldata/ /xindata/

先把备份放到新数据库目录

[root@zzh /]# chown -R mysql.mysql /xindata/

给新数据库目录权限

[root@zzh /]# /usr/local/mysql/share/mysql/mysql.server stop

关闭数据库,注意:一定要把数据库关闭后在修改下面的文件,要不修改完在关库会报错

[root@zzh /]# vim /etc/my.cnf

datadir = /xindata

设置新数据库目录位置,注意:这个字段默认没有自己在[mysqld]标签下添加

[root@zzh /]# /usr/local/mysql/share/mysql/mysql.server start

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值