【percona-xtrabackup】数据库物理备份整库、单库单表/恢复整库、单库单表

数据版本匹配

下载地址

www.percona.com/downloads/P...

数据库版本 xtrabackup版本 服务器版本
5.7.33-0ubuntu0.16.04.1 percona-xtrabackup-2.4.29 Ubuntu 16.04.7 LTS
mysql 复制代码
-- 下载对应数据库
apt-get update
apt-get install mysql-server=5.7.33-0ubuntu0.16.04.1


-- 创建用户
CREATE USER 'backup_user'@'%' IDENTIFIED BY '123456';
-- 给指定用户赋值指定权限、并只能内网本地登录、将localhost设置%就能外网登录
GRANT RELOAD, LOCK TABLES,PROCESS,REPLICATION CLIENT ON *.* TO 'backup_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

整库备份/恢复

第一步(备份整数据)

shell 复制代码
/usr/local/percona-xtrabackup-2.4.29/bin/innobackupex \
--user=root \
--password=123456 \
--no-timestamp \
/data/backups/fullAll
shell 复制代码
--user=root    	        # 账号
--password=123456   	# 密码
--no-timestamp            # 指定保存文件位置
/data/backups/fullAll 	# 指定备份文件夹位置

第二步(数据恢复)

shell 复制代码
/usr/local/percona-xtrabackup-2.4.29/bin/innobackupex \
--defaults-file=/etc/mysql/my.cnf \
--copy-back /data/backups/fullAll
shell 复制代码
--defaults-file=/etc/mysql/my.cnf 	# 指定数据的配置、可以使用find / -name my.cnf去查找文件位置
--copy-back /data/backups/fullAll		# 备份数据位置

因为读取了my.cnf 配置然后会找到mysql的数据存储位置、比如我的数据库存储位置在/var/lib/mysql、我就必须把/var/lib/mysql这个位置删了、恢复命令才能执行!

执行成功后/var/lib/mysql文件夹会出来、然后他的权限和作用域都是root的、要把他设置成mysql

shell 复制代码
chown -R mysql:mysql /var/lib/mysql		# 设置文件夹权限
chown -R mysql:mysql /var/lib/mysql/*		# 设置文件夹里面的所有文件的权限

注意:如果mysql不是停止状态下恢复到/var/lib/mysql后其他库可能展示不出来、需要重启mysql命令systemctl restart mysql

备份单库单表

第一步

备份指定库中指定表、文件保存位置 /data/backups/test07

shell 复制代码
/usr/local/percona-xtrabackup-2.4.29/bin/innobackupex \
--user=root \
--password=123456 \
--tables=test05.user1,test05.user2 \
--no-timestamp \
/data/backups/test07
shell 复制代码
--user=root                            # 账号
--password=123456   		     # 账号
--tables=test05.user1,test05.user2     # 指定库.表
--no-timestamp 			     # 不自动创建备份文件夹
/data/backups/test07                   # 指定备份文件路径

第二步

sh 复制代码
/usr/local/percona-xtrabackup-2.4.29/bin/xtrabackup  \
--prepare \
--export \
--target-dir=/data/backups/test06
shell 复制代码
--prepare 													# 进行还原操作
--export 														# 还原导出的表创建必要的文件
--target-dir=/data/backups/test05		# 还原备份的数据文件夹位置

第一步和第二步、可以理解为在保存的备份数据。

第三步

假如要将备份的数据迁移到另一台服务器上的数据库中。

3.1 在恢复的数据库中先创建好一个数据、并创建在备份文件夹中存在的表、简单来说就是先把库和表结构先创建好。==表结构要和备份的数据一致==

3.2 在数据库中执行这个、会删除ibd文件、如果要恢复多表就再次执行指定库.表。

mysql 复制代码
ALTER TABLE 数据库.表 DISCARD TABLESPACE;

3.3 将备份文件夹中的数据信息复制一份给到mysql存储数据的文件夹中

shell 复制代码
cp /data/backups/test05/user.* /var/lib/mysql/test/

3.4 复制的文件是root组、修改成mysql组

shell 复制代码
chown -R mysql:mysql /var/lib/mysql;
chown -R mysql:mysql /var/lib/mysql/*;

3.5 导入表空间信息到mysql

mysql 复制代码
# 执行前必须要将复制过去的文件设置成mysql组
ALTER TABLE 数据库.表 IMPORT TABLESPACE;

备份其他操作

流式tar

备份时将备份文件压缩成tar.gz格式

shell 复制代码
/usr/local/percona-xtrabackup-2.4.29/bin/innobackupex \
--user=root \
--password=123456 \
--databases=test06 \
--stream=tar /data/backups/ |gzip -> /data/backups/test061.tar.gz


#创建文件夹并写入到创建的文件夹中
mkdir test06 && tar -zxvf test061.tar.gz -C test06
shell 复制代码
--user=root    		            # 账号
--password=123456   	            # 密码
--databases=test06	            # 数据库名
	       # 重新设置临时文件	    # 真实保存目标位置		
--stream=tar /data/backups/ |gzip -> /data/backups/test061.tar.gz 
相关推荐
CookieCrusher6 分钟前
数据泄露危机逼近:五款电脑加密软件为企业筑起安全防线
运维·数据库·windows·安全·文件加密·数据防泄漏·dlp
小薛博客2 小时前
17、DevOps持续集成、持续部署
运维·ci/cd·devops
霍格沃兹软件测试开发3 小时前
Browser Use:打造你的浏览器自动化助手
运维·自动化
M1A14 小时前
小红书重磅升级!公众号文章一键导入,深度内容轻松入驻
后端
fuyongliang1235 小时前
linux Nginx服务配置介绍,和配置流程
运维·服务器·网络
0wioiw05 小时前
Go基础(④指针)
开发语言·后端·golang
UNbuff_06 小时前
Linux bzip2 命令使用说明
linux·运维·服务器
IOT-Power7 小时前
Ubuntu下把 SD 卡格式化为 FAT32
linux·运维·ubuntu
李姆斯7 小时前
复盘上瘾症:到底什么时候该“复盘”,什么时候不需要“复盘”
前端·后端·团队管理
javachen__7 小时前
Spring Boot配置error日志发送至企业微信
spring boot·后端·企业微信