数据版本匹配
下载地址
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