数据库备份

一.关于备份
备份原因
丢弃,删除
备份目标
1. 数据的一致性
2. 服务的可用性
备份技术
物理备份/冷备份
直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。
tar,cp,scp
拷贝数据, 优点快,缺点服务停止。
逻辑备份/热备份
备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库。
mysqldump,mydumper
效率相对较低
备份种类
完全备份
增量备份
连续回复
特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
差异备份
跳跃恢复
特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。
实战案例1
percona-xtrabackup
简介
logo
在这里插入图片描述简介
它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;
为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。
percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本–percona Server。并围绕
percona Server还发布了一系列的mysql工具。
获得软件包官方站点https://www.percona.com/
选择版本

	安装
	安装YUM仓库
	安装percona需要的mysql包
	mysql官方源
	yum install -y  https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
	yum工具
	yum install -y yum-utils
	查看mysql可用版本
	yum repolist all | grep mysql
	禁用80
yum-config-manager --disable mysql80-community
	启用57
yum-config-manager --enable mysql57-community
yum  install mysql-community-libs-compat -y
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
YUM安装percona-xtrabackup,官方安装速度慢,这里我选择本地安装
yum -y install percona-xtrabackup-24.x86_64官方安装percona网址
	本地RPM包安装
	percona-xtrabackup24.rpm.zip   再用解压工具解压
		查询安装结果
		rpm -ql percona-xtrabackup-24 
	1-1 完全备份流程
		innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
			连接数据库,开始备份。
			请注意备份结果是否完成
				xtrabackup: Transaction log of lsn (74182721) to (74182730) was copied.
200828 19:14:12 completed OK!
		ls /xtrabackup/full/
			查看备份目录。数据库,配置文件,日志文件
		ls /xtrabackup/full/2020-08-28_19-14-12/
		观看二进制日志位置
			cat /xtrabackup/full/2020-08-28_19-14-12/xtrabackup_binlog_info 
	1-2 完全恢复流程
		停止数据库
			systemctl stop mysqld
		清理环境(模拟损坏)
			rm -rf /var/lib/mysql/*   清理数据库内容
			rm -rf /var/log/mysqld.log 清理数据库日志文件
		生成回滚日志
			innobackupex --apply-log /xtrabackup/full/2020-08-28_19-14-12/  指定备份点
		恢复文件,把备份文件复制。
			innobackupex --copy-back /xtrabackup/full/2020-08-28_00-00-18/
		登陆验证
			ls /var/lib/mysql
			chown -R mysql.mysql /var/lib/mysql
			systemctl start mysqld
			mysql -uroot -p'QianFeng@123'
	2-1 增量备份流程
		准备工作
		使用指定的数据库
		create database testdb;   创建库
		use testdb;  使用库
		create table test(id int);创建表
		 insert into test values (1);	插入内容			
		 select * from test; 查看表全部内容
		mysql> select * from test;
		+------+
        | id   |
        +------+
        |    1 |
       +------+
1 row in set (0.00 sec)

		完整备份:周一
		rm -rf /xtrabackup/*
		date 09010000
			时间建议靠后设置。
			innobackupex --user=root --password='QianFeng@123' /xtrabackup
			ll /xtrabackup/
			2020-09-01_00-07-43
			请问数据库中的记录是多少?
				1
		增量备份:周二
			date 09020000
		更新时间
	mysql -uroot -p'QianFeng@123' -e  'insert into testdb.test values (2)'   登录数据库插入数据
[root@localhost ~]# mysql -uroot -p'QianFeng@123' -e 'select * from testdb.test'登录数据库查看表内容
innobackupex --user=root --password='QianFeng@123'  --incremental /xtrabackup/ --incremental-beifen=/xtrabackup/2020-09-01_00-07-43
				备份基于周一的备份。会生成一个今天的。
ls  /xtrabackup/    查看内容
2020-09-01_00-07-43
2020-09-02_00-21-40
	增量备份:周三
	date 09030000
	mysql -uroot -p'QianFeng@123' -e  'insert into testdb.test values (3)'
innobackupex --user=root --password='QianFeng@123' --incremental /xtrabackup/ --incremental-beifen=/xtrabackup/2020-09-02_00-21-40
	备份基于周2的备份。会生成一个今天的。
	ls  /xtrabackup/  查看内容
	2020-09-01_00-07-43
     2020-09-02_00-21-40
     2020-09-03_00-09-00
		周四。。周五。。周六
2-2 增量恢复流程
停止数据库
systemctl stop mysqld
 清理环境
rm -rf /var/lib/mysql/*
 周一
innobackupex --apply-log --redo-only /xtrabackup/2020-09-01_00-07-43
回滚合并
周二
innobackupex --apply-log --redo-only   /xtrabackup/2020-09-01_00-07-43
--incremental-dir=/xtrabackup/2020-09-02_00-21-40
恢复文件
innobackupex --copy-back /xtrabackup/2020-09-01_00-07-43	  复制
chown -R mysql.mysql /var/lib/mysql 授权
systemctl start mysqld  启动
登陆查询记录。请思考记录是第几天的。
想恢复3,怎么办
 systemctl stop mysqld   启动
innobackupex --apply-log --redo-only /xtrabackup/2020-09-01_00-07-43 
--incremental-dir=/xtrabackup/2020-09-03_00-09-00
# rm -rf /var/lib/mysql/*  删除数据库
innobackupex --copy-back /xtrabackup/2020-09-01_00-07-43
chown -R mysql.mysql /var/lib/mysql  授权
systemctl start mysqld  启动
mysql -uroot -p'QianFeng@123' -e 'select * from testdb.test'   登录数据库查看内容
周四和上面做法一样,先把周四的添加到完整备份里,然后清除数据库,恢复完整备份。以此类推。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值