备份与恢复学习记录

mysql备份工具

官方工具

mysqldump 单线程备份 目前仍然兼容
mysqlpump 多线程备份 5.7之后

mysql enterprise backup 5.7之后 企业版

社区

mydumper mysqldump的衍生,时间消耗约是后者二分之一,但慢于mysqlpump

系统工具

cp/tar

第三方

innobackup 收费
xtrabackup 免费,常用


备份策略

中小型数据库

拷贝文件

cp、tar

mysqldump

完全备份+增加备份,速度较慢,适合中小型数据库

备份相关
mkdir -p /data/mysqldump/`date +%Y-%m-%d`
mysqldump -uroot -p test > /data/mysqldump/`date +%Y-%m-%d`/test.db

打开文件可以发现,实际上这个备份文件实际上会删掉原库中的表然后重新建表插数据,必然效率低下且空间占用更大

-- Host: localhost    Database: test
-- ------------------------------------------------------
-- Server version	5.7.26

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `test01`
--

DROP TABLE IF EXISTS `test01`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `test01` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `test01`
--

LOCK TABLES `test01` WRITE;
/*!40000 ALTER TABLE `test01` DISABLE KEYS */;
INSERT INTO `test01` VALUES (1,'xiaoming'),(2,'xiaoming01'),(3,'xiaoming02');
/*!40000 ALTER TABLE `test01` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

参数名缩写含义
–host-h服务器IP地址
–port-P服务器端口号
–user-uMySQL 用户名
–pasword-pMySQL 密码
–no-data-d只导出表结构
–databases指定要备份的数据库,备份多个数据库使用,否则被视为数据库名接表明的形式
–all-databases-A备份mysql服务器上的所有数据库
–compact压缩模式,产生更少的输出
–comments添加注释信息
–complete-insert输出完成的插入语句
–lock-tables备份前,锁定所有数据库表
–no-create-db/–no-create-info禁止生成创建数据库语句
–force当出现错误时仍然继续备份操作
–default-character-set指定默认字符集
–add-locks备份数据库表时锁定数据库表
还原相关
-- 进入数据库
-- 如果库被删掉了要重建然后进入
create database test;
use test
source /data/mysqldump/2021-02-28/test.db

mysqldump

mysqlpump 的使用和 mysqldump 基本一致,因其多线程新增命令

参数名含义
–-default-parallelism=N每个并行处理队列的默认线程数
–parallel-schemas=[N:]db_list用于并行备份多个数据库:
N为使用的线程数,如果没有设置,则使用 --default-parallelism 参数的值
db_list 是一个或多个以逗号分隔的数据库名称列表;
–compress-output=ZLIB|LZ4对备份文件进行压缩,支持 LZ4 和 ZLIB 两种格式
压缩后的文件可以占用更少的存储空间,但是却不能直接用于备份恢复,需要先进行解压

xtrabackup

几乎完全热备,配合二级制日志实现增量备份,适合比较繁忙数据库

xtrabackup目前有两个主要版本xtrabackup8.0和xtrabackup2.4

xtrabackup8.0只支持mysql8.0以上数据库

mysql5.7可以使用xtrabackup2.4

下载

官网下载

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/#

Percona-XtraBackup-8.0-5-r40ec8a3-el7-x86_64-bundle.tar
# 包内包含
percona-xtrabackup-80-8.0.5-1.el7.x86_64.rpm
percona-xtrabackup-80-debuginfo-8.0.5-1.el7.x86_64.rpm
percona-xtrabackup-test-80-8.0.5-1.el7.x86_64.rpm

安装依赖

# 缺依赖报错
	libev.so.4()(64bit) is needed by percona-xtrabackup-80-8.0.5-1.el7.x86_64
	perl(DBD::mysql) is needed by percona-xtrabackup-80-8.0.5-1.el7.x86_64
	perl(Digest::MD5) is needed by percona-xtrabackup-80-8.0.5-1.el7.x86_64
# 下载依赖
yum -y install libev perl-DBD-MySQL perl-Digest-MD5

安装

rpm -ivh percona-xtrabackup-80-8.0.5-1.el7.x86_64.rpm
rpm -qa | grep xtrabackup

备份

xtrabackup --defaults-file=/etc/my.cnf --datadir=/data/mysql/data -S /tmp/mysql.sock --user=root --password=1 --backup --target-dir=/data/backup/fullback-`date +%Y-%m-%d` --parallel=2

# 出现completed OK!则为成功

还原

rsync -avrp /data/backup/fullback2021-03-05/* /data/mysql/data
chown -R /data/mysql
# 授权很重要

Table doesnt exist

ib系列文件为引擎生成的文件,如果被删除或丢失会出现表存在但不能查询显示损坏的情况,之前因为还原后没有进行授权,导致库无法启动,然后按照一些博客的教程删掉了几个ib家族文件,结果导致了更大的问题

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值