失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法

centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法

时间:2023-09-18 15:05:21

相关推荐

centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法

一、mysqldump工具备份

mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具。支持基于InnoDB的热备份。但由于是逻辑备份,所以速度不是很快,适合备份数据量比较小的场景。

mysqldump完全备份+二进制日志 —>实现时间点恢复

温备:

在使用MyISAM引擎中,只能使用温备份,这时候要防止数据的写入,所以先加上读锁

这时候可以进入数据库手动加读锁。这样比较麻烦,在mysqldump工具中直接有一个加锁的选项

mysqldump --databases mydatabase --lock-all-tables --flush-logs> /tmp/backup-`date +%F-%H-%M`.sql

如果是针对某张表备份,只要在数据库名称后面加上表名称就行了

这里注意,要实现时间点的恢复,加上--flush-logs选项,在使用备份文件恢复后,然后再基于二进制日志进行时间点的恢复

时间点的恢复方法

mysqlbinlog mysql-bin.000000x > /tmp/PointTime.sql

然后用mysql命令导入这个sql脚本就行了

热备:

如果使用的是InnoDB引擎,就不必进行对数据库加锁的操作,加一个选项既可以进行热备份:--single-transaction

mysqldump --databases mydb --single-transaction --flush-logs --master-data=2 > /tmp/backup-`date +%F-%H-%M`.sql

注意点

恢复的时刻关闭二进制日志

mysql>set sql_log_bin=0;

例子:

# vim /usr/work/newsbackup.sh

# //填写以下内容

#!/bin/bash

# Program

# use mysqldump to Fully backup news database data per week!

#History(版本)

# -07-27 first

#path(定义目录)

BakDir=/usr/work/mysql/backup

Days=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份

DelDate=` date -d -7day +%Y%m%d ` #删除ftp服务器空间7天前的备份

echo "You are in backup dir"

FileDate=$(date +%Y%m%d).sql.gz

echo $FileDate

cd $BakDir

File=$Date.sql

#简单的备份

#mysqldump -u root news > $FileDate

#如果使用的是InnoDB引擎,就不必进行对数据库加锁的操作,加一个选项既可以进行热备份:--single-transaction

#mysqldump -u root news --single-transaction >$FileDate

#对备份的数据继续压缩

mysqldump -u root news --single-transaction |gzip >/$BakDir/$FileDate

echo "Your database backup successfully completed"

#压缩有的数据进行传

echo FTP to FtpServer

ftp -ivn << EOF

#打开服务器连接

open 192.168.1.125

#用户 密码

user administrator zzf

#打开路径

cd newsbackup

#放入文件

put $FileDate

#把服务上7天前的数据进行删除

delete $DelDate.sql.tz $DelDate.sql.tz

#退出ftp服务器

bye

EOF

echo delete $Days days ago files(删除ftp服务器上7天前的文件)

cd $BakDir

#删除7天前的备份文件(注意:{} \;中间有空格)

find $BakDir/ "*.sql.gz" -mtime +$Days -exec rm {} \;

二、基于LVM快照备份

在物理备份中 ,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令打包。但这些只能进行冷备份

不同的存储引擎能备份的级别也不一样,MyISAM能备份到表级别,而InnoDB不开启每表一文件的话就只能备份整个数据库。

下面就介绍下使用LVM的快照功能进行备份

为了安全 首先在数据库上施加读锁

mysql>FLUSH TABLES WITH READ LOCK;

刷新一下二进制日志,便于做时间点恢复

mysql>FLUSH LOGS;

然后创建快照卷

lvcreate –L 1G –s –n data-snap –p –r /dev/myvg/mydata

最后进入数据库释放读锁

UNLOCK TABLES;

挂载快照卷进行备份

mount –r /dev/myvg/data-snap /mnt/snap

然后对/mnt/snap下的文件进行打包备份

还原的时候,关闭mysqld,然后备份二进制日志后将原来备份的文件还原进去,然后通过二进制日志还原到出错的时间点(通过二进制还原时间点的时候不要忘了暂时关闭二进制日志)

如果觉得《centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。