mysql数据备份管理

本文详细介绍了MySQL数据库的管理员密码管理、数据备份与恢复的方法,包括物理备份、逻辑备份、增量备份和差异备份。重点讨论了mysqldump工具和Percona的xtrabackup进行热备份,以及如何使用binlog日志进行实时数据恢复。同时,文章还提到了备份策略,如完全备份、增量备份和差异备份的适用场景及其优缺点。
摘要由CSDN通过智能技术生成

数据库管理员 root密码管理

操作系统管理员,修改本机数据库服务管理员登录密码

1)修改密码 alter user

[root@test ~]# mysqladmin -uroot -p123456 password "135790"  #方法一
[root@test ~]# mysql  -uroot -p135790
mysql> alter user root@"localhost" identified by "123456";   #方法二
mysql> exit
[root@test ~]# mysql  -uroot -p123456
mysql> exit

2)破解数据库管理员root密码skip_grant_tables

a.修改服务运行参数,要重启数据库服务

~]# vim /etc/my.cnf
[mysqld]
skip_grant_tables		#添加的参数
#validate_password_policy=0    #如果更改了密码策略。请注释
#validate_password_length=6
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql  -uroot -p1
mysql> exit

b.登录mysql修改密码

mysql> desc mysql.user ;      密码记录字段
| authentication_string  | text               | YES  |     | NULL  
mysql> update mysql.user set authentication_string=password("456789") where user="root" and host="localhost";
mysql> exit
[root@test ~]# vim /etc/my.cnf
[mysqld]
secure_file_priv="/myload"
#skip_grant_tables
validate_password_policy=0  如果存在密码策略。请去#
validate_password_length=6
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql -uroot -p456789
mysql> exit

数据的备份与恢复

一、数据备份的方式介绍
1.物理备份 冷备:cp 、tar、…

[root@test ~]# cp -r /var/lib/mysql /root/mysql.bak     #备份
[root@test ~]# tar -zcf /root/mysql.tar.gz /var/lib/mysql			#备份
[root@test ~]# rm -rf /var/lib/mysql  #模拟删除
[root@test ~]# systemctl stop mysqld				
[root@test ~]# cp -r /root/mysql.bak/*  /var/lib/mysql		#恢复
[root@test ~]# chown -R mysql:mysql /var/lib/mysql    
[root@test ~]# systemctl start mysqld
[root@test ~]#  cp -rp /var/lib/mysql   /root/mysql.bak  #不用改属组

2.逻辑备份

mysqldump 对数据库做备份,对应的恢复命令是mysql
启用mysql服务的binlog日志文件实现对数据的实时备份,使用binlog日志恢复数据。
使用源软件提供的innobackupex命令对数据做备份和恢复

3.备份策略
完全备份:备份所有数据
增量备份:备份上次备份后,所有新产生数据
差异备份:完全备份后,所有新产生的数据
工作总常用的备份策略
1完全备份+增量备份 完+增1+增2+增3+增4+增5,恢复数据时需要所有,每日备份量相当,节省存储,但都重要
2完全备份+差异备份 完+差1+差2+差3+差4+差5,恢复数据时需要完+差5,每日备份量日增,存储消耗较大,不是每份都有用

二、使用mysqldump对数据做完全备份恢复

1.备份命令格式mysqldump -uroot -p密码 库名 >目录/xxx.sql

1)对所有库备份 -all-databases或-A		
[root@test ~]# mysqldump -uroot -p456789 --all-databases > ./allbak.sql
[root@test ~]# ls
allbak.sql

2)对单个库备份
~]# mysqldump -uroot -p456789 mydb > /bak/onedb.sql

3)对库下的单个表备份
~]# mysqldump -uroot -p123456 mydb t1 > /bak/onetable.sql

4)对多个库备份
~]# mysqldump -uroot -p123456 -B  mydb user > /bak/twodb.sql
#  -B   导入数据库时,自动创建库。否则导入失败。

2.使用备份文件恢复数据

1)库文件恢复命令格式 mysql -uroot -p密码 [库名]< 目录/xxx.sql
mysql> drop database user;
mysql> drop database mydb;
[root@test ~]# mysql -uroot -p456789  < ./twodb.sql
#twodb.sql是库文件,前面不在加库名,单独的表恢复时必须加库名
[root@test ~]# mysql  -uroot  -pl23456 <  /root/twodb.sql 
[root@test  ~]# mysql -uroot -p456789
mysql>  show databases;				#能够看到多出来新库了
mysql> drop database user;
mysql> drop database mydb;
mysql>  show databases;	
mysql> source twodb.sql			#在数据库登录的情况下用source导入
2)表文件恢复   前面需要加库名
mysql> use mydb;
mysql> show tables;
t1
mysql> drop table t1;
[root@test ~]# mysql -uroot -p456789  mydb t1 < ./onetable.sql

mysqldump优点与缺点:
命令执行过程中,表被锁定,不允许客户端访问。适合备份数据量比较小的数据,做好再服务器访问量少的时候使用。只能把数据恢复到备份时的状态。是mysql自带的备份工具。

生产中你要可以用navicate软件导出sql文件备份

三、增量备份 备份新产生的数据
1.binlog日志设置介绍
也称做二进制日志,MySQL服务日志文件的一种。记录除查询之外的所有SQL命令,可用于数据备份和恢复,是配置mysql主从同步的必要条件
mysql服务有4种日志文件:错误日志、 binlog日志、查询日志、慢查询日志,默认启用错误日志

1)启用binlog日志实现对数据的实时备份
[root@test ~]# vim /etc/my.cnf
[mysqld]
log_bin
server_id=18
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql -uroot -p456789
mysql> show master status ;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| test-bin.000001 |      154 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+
[root@test ~]#  ls /var/lib/mysql      #默认路径
test-bin.000001 test-bin.index		#主机名-bin.000001自动创建2.3...
server_id=数字				 指定id值(1-255)  一般设置为本机ip
log_bin=[目录名/文件名]	 启用binlog日志,指定目录,需改属组
max_binlogsize=数值m 	 指定日志文件容量,默认1G。超出再建,不自动删除

2)修改日志文件的存放目录和日志名

[root@test ~]# vim /etc/my.cnf
[mysqld]
server_id=18
log_bin=/mylog/dachui
[root@test ~]# mkdir /mylog
[root@test ~]# chown mysql:mysql  /mylog
[root@test ~]# setenforce 0
[root@test ~]# systemctl restart myslqd
[root@test ~]# mysql  -uroot  -p456789  -e  'flush log'    #或者进入mysql刷新
[root@test ~]# mysql -uroot -p456789
mysql> flush logs;
[root@test ~]# ls /mylog
data.000001  data.index				#新生成的文件

4)清理日志 rm -rf /mylog/* reset master

mysql> flush logs;			#生成新的日志
[root@test ~]# ls /mylog
data.000001  data.000002  data.index			
mysql> flush logs;			#生成新的日志
[root@test ~]# ls /mylog
data.000001	 data.000002  data.000003  data.index
mysql> purge master logs to "data.000002";  #删除02之前的日志
[root@test ~]# ls /mylog
data.000002  data.000003  data.index
mysql> purge master logs to "data.000003";  
[root@test ~]# ls /mylog
data.000003  data.index
mysql> reset master;
[root@test ~]# ls /mylog
data.000001  data.index

使用binlog日志恢复数据

1)查看日志 mysqlbinlog [选项] binlog日志文件名

[root@test ~]# mysqlbinlog /mylog/data.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#220225  8:40:17 server id 50  end_log_pos 123 CRC32 0x6d71000a         
Start: binlog v 4, server v 5.7.17-log created 220225  8:40:17 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
QdwYYg8yAAAAdwAAAHsAAAABAAQANS43Lj...

binlog日志文件记录命令的方式,选项写一个时,默认从开头执行或执行到结尾
a.通过偏移量

--start-position=数字         --stop-position=数字

b.通过执行命令时的时间

--start-datetime="yyyy-mm-dd hh:mm:ss"           
--stop-datetime="yyyy-mm-dd hh:mm:ss"   

2)恢复mysqlbinlog /目录/日志名 | mysql -uroot -p密码
恢复数据的基本思路:查看日志文件的执行内容,管道给连接数据库的mysql 执行

[root@test1 ~]# mysql -uroot -p456789 db 
mysql> reset master;
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       32 |
+----------+
[root@test1 ~]# mysqldump -uroot -p456789 --flush-logs db > /root/db.sql
[root@test1 ~]# scp db.sql root@192.168.1.17:/root/
[root@test ~]# mysql -uroot -p456789 db 
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       35 |
+----------+
mysql> flush logs;
mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| data.000002 |      154 |              |                  |                   |
+-------------+----------+--------------+------------------+-------------------+
mysql> exit
[root@test ~]# scp /mylog/data.000001 root@192.168.1.17:/root/
[root@test2 ~]# mysql  -uroot  -p123456  db  <  db.sql
[root@test2 ~]# mysql  -uroot  -p123456  db
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       32 |
+----------+
mysql> truncate db.user;		#清除数据,保留了表结构
mysql> select count(*) from db.user;		
+----------+
| count(*) |
+----------+
|        0 |
+----------+
mysql> exit
[root@test2 ~]# mysqlbinlog  data.000001  |  mysql -uroot -p123456
mysql> select count(*) from db.user;
[root@test2 ~]# mysql  -uroot  -p123456  db -e "select count(*) from db.user"
+----------+
| count(*) |
+----------+
|       35 |
+----------+

3)部分恢复binlog_format=“mixed” 时间或偏移值

a.修改日志记录格式 mixd,模式
statement 报表模式
row 行模式,默认的模式
mixed 混合模式,可以查看到执行的sql命令行

[root@test ~]# vim /etc/my.cnf
[root@test ~]# systemctl restart mysqld
[root@test ~]# mysql -uroot -p456789
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| data.000003 |      154 |              |                  |                   |
+-------------+----------+--------------+------------------+-------------------+
mysql> insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj");
Query OK, 1 row affected (0.06 sec)

mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| data.000003 |      489 |              |                  |                   |
+-------------+----------+--------------+------------------+-------------------+
mysql> select count(*) from db.user;
+----------+
| count(*) |
+----------+
|       36 |
+----------+

b.mysqlbinlog查看日志中执行的指令

查看命令的起始时间 起始偏移量 在记录命令的上方
查看命令的结束时间 结束偏移量 在记录命令的下方 (不要文件记录的最后1条命令,要把commit对应结束时间结束偏移量包涵在内)查看日志文件内容加选项,适合恢复指定的数据)

[root@test ~]# mysqlbinlog /mylog/data.000003
...
#220225 21:35:22 server id 50  end_log_pos 324 CRC32 0xc443ad78         Intvar
SET INSERT_ID=33/*!*/;
#220225 21:35:22 server id 50  end_log_pos 458 CRC32 0x4bbf3e31         Query   thread_id=3     exec_time=0     error_code=0
SET TIMESTAMP=1645842922/*!*/;
insert  into  db.user(name,uid,gid,homedir) values ("B4",1,1,"bj")  #执行的命令
/*!*/;
# at 458
#220225 21:35:22 server id 50  end_log_pos 489 CRC32 0x2627e627         Xid = 6
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
...

insert命令执行前的偏移量是458

[root@test ~]# mysqlbinlog --start-position=154 --stop-position=458  /mylog/data.000003 |mysql -uroot -p456789[root@test ~]# mysql  -uroot  -p456789  db -e "select count(*) from db.user"
+----------+
| count(*) |
+----------+
|       35 |
+----------+

insert命令执行结束的偏移量是489

[root@test ~]# mysqlbinlog --start-position=154 --stop-position=489 /mylog/data.000003 |mysql -uroot -p456789[root@test ~]# mysql  -uroot  -p456789  db -e "select count(*) from db.user"
+----------+
| count(*) |
+----------+
|       36 |
+----------+

使用时间恢复

mysqlbinlog  --start-datetime="2022/03/01 10:55:39"  --stop-datetime="2022/03/01 11:26:08"  /mylog/data.000003  |  mysql -uroot  -p密码 

percona软件提供innobackupex命令备份数据

物理备份:缺点一跨平台性差一备份时间长、冗余备份、浪费存储空间
mysqldump备份:缺点一效率较低、备份和还原速度慢、锁表一备份过程中,数据插入和更新操作被阻塞

percona(备份时不锁表)适合线上服务器,一款强大的在线热备份工具一备份过程中不锁库表,适合生产环境-由专业组织Percona提供(改进MySQL分支)主要含两个组件-xtrabackup:C程序,支持InnoDB/XtraDB-innobackupex:以Perl脚本封装xtrabackup,还支持MyISAM

1.percona安装及常用命令

]# rpm-ivh libev-4.15-1.el6.rf.×86_64.rpm     #yum源没有,都需要上传
]# yum-y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm   #依赖libev
1)查看安装列表 
[root@host62~]# rpm-ql percona-xtrabackup-24 
/usr/bin/innobackupex //备份innodb、xtrdb、myisam引擎的表 
/usr/bin/xbcloud 
/usr/bin/xbcloud _osenv 
/usr/bin/xbcrypt 
/usr/bin/xbstream 
/usr/bin/xtrabackup//备份innodb、xtrdb引擎的表 
2)查看命令帮助 
]# rpm -ql percona-xtrabackup-24 
]# innobackupex  --help		//常用选项 
]# man innobackupex			//详细帮助

常用选项

--host			主机名
--user 			用户名
--port 			端口号
--password 		密码
--databases 	数据库名:  库   库.表    库1,库2
--no-timestamp 	不用日期命名备份文件存储的子目录名
--redo-only		日志合并
--apply-log		准备恢复数据
--copy-back 	拷贝数据
--incremental 	目录名,增量备份
--incremental-basedir=目录名	增量备份时,指定上一次备份数据存储的目录名
--incremental-dir=目录名		准备恢复数据时,指定增量备份数据存储的目录名
--export 		导出表信息
import 			导入表空间

完全备份与恢复介绍、举例

#innobackupex  -u用户名  -p密码  备份目录名   -no -timestamp
完全恢复命令格式
]#innobackupex    --apply-log   目录名   //准备恢复数据
]#innobackupex    --copy-back   目录名   //拷贝数据
#不指定数据库,备份所有的
[root@test ~]# innobackupex  -uroot  -p456789 allbak  #allbak不需创建,不能重复使用
[root@test ~]# ls allbak/
2022-02-25_22-10-23
#不创建带有时间的目录
[root@test ~]# innobackupex  -uroot  -p456789 allbak2  --no-timestamp
[root@test ~]# ls allbak2
backup-my.cnf  ib_buffer_pool  mysql               xtrabackup_binlog_info  xtrabackup_logfile
db             ibdata1         performance_schema  xtrabackup_checkpoints
db3            mydb            sys                 xtrabackup_info
#指定数据库
[root@test ~]# innobackupex -uroot -p456789  --database=db allbak3
[root@test ~]# ls allbak3
2022-02-25_22-15-05


1)准备恢复数据–apply-log

[root@test ~]# innobackupex  -uroot  -p456789 allbak2  --no-timestamp
[root@test ~]# scp -r allbak2 root@192.168.1.17:/root/
[root@test2 ~]# mysql -uroot -p123456 db
mysql> show tables;
mysql> drop table user;
[root@test2 ~]# cat allbak2/xtrabackup_checkpoints
backup_type = full-backuped			#准备ok
from_lsn = 0
to_lsn = 3354460
last_lsn = 3354469
compact = 0
recover_binlog_info = 0
[root@test2 ~]# systemctl stop mysqld			#停止myslqd
[root@test2 ~]# rm -rf /var/lib/mysql/*				#清空原数据
[root@test2 ~]# innobackupex --copy-back allbak2/		#恢复
[root@test2 ~]# chown -R mysql:mysql  /var/lib/mysql		#修改属主
[root@test2 ~]# systemctl start mysqld
[root@test2 ~]# mysql -uroot -p456789   #密码和原主机的密码一样
mysql> show databases;		#验证

3.单独恢复一张表db.user

模拟删除表空间test2主机  
表空间:用来存储表数据的文件     表名.ibd
表结构:用来存储表结构的文件   	表名.frm
mysql> system ls /var/lib/mysql/db/
db.opt  user.frm  user.ibd
mysql> alter table db.user discard tablespace;
mysql> system ls /var/lib/mysql/db/
db.opt  user.frm
mysql> select * from db.user;
ERROR 1814 (HY000): Tablespace has been discarded for table 'user'
2)导出表信息
[root@test2 ~]# ls allbak2/db/
db.opt  user.frm  user.ibd
[root@test2 ~]# innobackupex  --apply-log  --export /root/allbak2/
[root@test2 ~]# ls allbak2/db/
db.opt  user.cfg  user.exp  user.frm  user.ibd
[root@test2 ~]# cp /root/allbak2/db/user.{cfg,exp,ibd}  /var/lib/mysql/db
[root@test2 ~]# ls /var/lib/mysql/db
db.opt  user.cfg  user.exp  user.frm  user.ibd
[root@test2 ~]# chown mysql:mysql  /var/lib/mysql/db/user*
[root@test2 ~]# mysql -uroot -p456789
mysql> select * from db.user;
ERROR 1814 (HY000): Tablespace has been discarded for table 'user'
mysql> alter table db.user import tablespace;		#导入表空间
mysql> select * from db.user;   #有数据了
[root@test2 ~]# rm -rf /var/lib/mysql/db3/tea.{cfg,exp}

4.增量备份与恢复

应用示例
增量备份时,必须先有一次备份,通常是完全备份
周一完全备份,周二~周日增量备份

1)命令格式  -incremental /目录 --incremental-basedir=
增量备份数据
~]# innobackupex  -u用户名 -p密码  --incremental  /目录
--incremental-basedir=/上次备份文件存放的目录 --no-timestamp
准备恢复数据
~]# innobackupex  --apply-log  --redo-only/目录名     
合并数据
~]# innobackupex  --apply-log  --redo-only  /目录名  --incremental-dir=/目录名			 
拷贝数据
~]# innobackupex   --copy-back  /目录名/		

2)增量备份恢复数据举例

周一全备份
[root@test ~]# innobackupex  -uroot  -p456789  /fullbak  --no-timestamp
[root@test ~]# mysql -uroot -p456789
> insert into db3.tea values("dachui",18)("tiechui",18);
周二增量备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp
root@test ~]# ls  /
allbak  bin   dev  fullbak  lib    media  myload  new1dir  proc  run   
mysql> insert into db3.tea values ("zhouer",2);
周三增量备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /new2dir --incremental-basedir=/new1dir  --no-timestamp
mysql> insert into db3.tea values ("zhousan",2);
mysql> insert into db3.tea values ("zhou3",2);
周四增量备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /new3dir --incremental-basedir=/new2dir --no-timestamp
[root@test ~]# scp -r /fullbak/ /new1dir/ /new2dir/ /new3dir/  root@192.168.4.51:/
在test2主机恢复数据,具体操作如下
a.准备恢复数据--apply-log --redo-only(告诉从哪开始)
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = full-backuped
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = log-applied
b.合并数据  --incremental-dir=/new1dir

 (合并的顺序要和备份的顺序一致,原因如下)
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 3012109
[root@test2 ~]# cat /new1dir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3012109
to_lsn = 3014104
[root@test2 ~]# cat /new2dir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3014104
to_lsn = 3014465
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/ --incremental-dir=/new1dir
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/ --incremental-dir=/new2dir
[root@test2 ~]# innobackupex  --apply-log --redo-only /fullbak/ --incremental-dir=/new3dir
[root@test2 ~]# cat /fullbak/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 3016750
last_lsn = 3016759
c.停止服务,清空数据库目录
[root@test2 ~]# systemctl stop mysqld.service
[root@test2 ~]# rm -rf /var/lib/mysql/*
d.拷贝数据
[root@test2 ~]# innobackupex --copy-back /fullbak/
e.修改所有者和组用户为MySQL重启服务并查看数据
[root@test2 ~]# chown -R mysql:mysql /var/lib/mysql
[root@test2 ~]# systemctl start mysqld
mysql> select * from db3.tea;

命令小结
备份数据:inno -u -p --incremental /新增 --incremental-basedir=/原始 --no-timestamp
准备恢复:inno… --apply-log --redo-only /原
合并数据:inno… --apply-log --redo-only /原 --incremental-dir=/增
停止服务 清空数据库目录
拷贝数据innobackupex --copy-back /原
修改所有者和组用户为mysql,启动服务,登录查看数据

5.差异备份与恢复

周一完全备份
[root@test ~]# innobackupex -uroot -p456789  /allbak --no-timestamp
mysql> insert into db3.t1 values (1);
mysql> insert into db3.t1 values (11);
周二差异备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /adir --incremental-basedir=/allbak --no-timestamp
mysql> insert into db3.t1 values(2);
mysql> insert into db3.t1 values(22);
周三差异备份
[root@test ~]# innobackupex -uroot -p456789 --incremental /bdir --incremental-basedir=/allbak --no-timestamp
mysql> insert into db3.t1 values(3);
mysql> insert into db3.t1 values(33);
周四差异备份到周日做差异备份
root@test ~]# innobackupex -uroot -p456789 --incremental /cdir --incremental-basedir=/allbak --no-timestamp
[root@test ~]# scp -r /adir/ /bdir/ /cdir/ /allbak/  root@192.168.4.51:/opt/
在51主机使用差异备份文件恢复数据,以上环境布置
1)准备恢复数据
[root@test2 ~]# innobackupex --apply-log --redo-only /opt/allbak/
2)合并数据
差异备份只合并最后一次备份数据,原因如下
[root@test ~]# cat /allbak/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 3016750
[root@test ~]# cat /adir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3016750
to_lsn = 3018989
[root@test ~]# cat /bdir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3016750
to_lsn = 3021331
[root@test ~]# cat /cdir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3016750
to_lsn = 3023546
[root@test2 ~]# innobackupex --apply-log --redo-only /opt/allbak/ --incremental-dir=/opt/cdir
3)停止服务,清空数据库目录
[root@test2 ~]# systemctl stop mysqld
[root@test2 ~]# rm -rf /var/lib/mysql/*
4)拷贝数据
[root@test2 ~]# innobackupex  --copy-back /opt/allbak/
5)修改所有者和组用户为mysql启动服务登录查看数据
[root@test2 ~]# chown -R mysql:mysql /var/lib/mysql
[root@test2 ~]# systemctl start mysqld
[root@test2 ~]# mysql -uroot -p456789 -e "select * from db3.t1"
Legal Notice Copyright © 2017 Veritas Technologies LLC. All rights reserved. Veritas and the Veritas Logo are trademarks or registered trademarks of Veritas Technologies LLC or its affiliates in the U.S. and other countries. Other names may be trademarks of their respective owners. This product may contain third party software for which Veritas is required to provide attribution to the third party (“Third Party Programs”). Some of the Third Party Programs are available under open source or free software licenses. The License Agreement accompanying the Software does not alter any rights or obligations you may have under those open source or free software licenses. Please see the Third Party Legal Notice Appendix to this Documentation or TPIP ReadMe File accompanying this product for more information on the Third Party Programs. The product described in this document is distributed under licenses restricting its use, copying, distribution, and decompilation/reverse engineering. No part of this document may be reproduced in any form by any means without prior written authorization of Veritas Technologies LLC and its licensors, if any. THE DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. VERITAS TECHNOLOGIES LLC SHALL NOT BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS DOCUMENTATION. THE INFORMATION CONTAINED IN THIS DOCUMENTATION IS SUBJECT TO CHANGE WITHOUT NOTICE. The Licensed Software and Documentation are deemed to be commercial computer software as defined in FAR 12.212 and subject to restricted rights as defined in FAR Section 52.227-19 "Commercial Computer Software - Restricted Rights" and DFARS 227.7202, et seq. "Commercial Computer Software and Commercial Computer Software Documentation," as applicable, and any successor regulations, whether delivered by Veritas as on premises or hosted services. Any use, modification, reproduction release, performance, display or disclosure of the Licensed Software and Documentation by the U.S. Government shall be solely in accordance with the terms of this Agreement.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值