之前有几位朋友刚刚接触MySQL备份工具xtrabackup,想将使用这个工具使用在自己的生产环境上。他们使用这用具恢复数据的使用,总是按官网的,在恢复的最后都会执行--copy-back。然后之前目录的数据就必须得覆盖了。
那其实明白多实例的,应该知道其实只要apply-log完,然后在开启新的实例数据目录就能使用了。
这里我们将数据备份在 /u01/backup
1
2
3
4
5
6
7
8
9
|
/
usr
/
local
/
percona
-
xtrabackup
/
bin
/
innobackupex
\
--
defaults
-
file
=
/
etc
/
my
.
cnf
\
--
user
=
root
\
--
password
=
root
\
/
u01
/
backup
.
.
.
.
.
.
xtrabackup
:
Transaction
log
of
lsn
(
12587615580
)
to
(
12587615630
)
was
copied
.
160402
20
:
45
:
06
completed
OK
!
|
查看备份成功后结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[
root
@
localhost
2016
-
04
-
02_20
-
58
-
16
]
# pwd
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
[
root
@
localhost
2016
-
04
-
02_20
-
58
-
16
]
# ll
total
1048632
-
rw
-
r
--
--
-
1
root
root
424
Apr
2
20
:
58
backup
-
my
.
cnf
-
rw
-
r
--
--
-
1
root
root
814
Apr
2
20
:
58
ib_buffer_pool
-
rw
-
r
--
--
-
1
root
root
1073741824
Apr
2
20
:
58
ibdata1
drwxr
-
x
--
-
2
root
root
4096
Apr
2
20
:
58
mysql
drwxr
-
x
--
-
2
root
root
8192
Apr
2
20
:
58
performance_schema
drwxr
-
x
--
-
2
root
root
8192
Apr
2
20
:
58
sys
drwxr
-
x
--
-
2
root
root
4096
Apr
2
20
:
58
test
drwxr
-
x
--
-
2
root
root
53
Apr
2
20
:
58
test1
-
rw
-
r
--
--
-
1
root
root
21
Apr
2
20
:
58
xtrabackup_binlog_info
-
rw
-
r
--
--
-
1
root
root
121
Apr
2
20
:
58
xtrabackup_checkpoints
-
rw
-
r
--
--
-
1
root
root
501
Apr
2
20
:
58
xtrabackup_info
-
rw
-
r
--
--
-
1
root
root
2560
Apr
2
20
:
58
xtrabackup_logfile
|
使用xtrabackup应用日志 --apply-log(这边就不说如何让恢复的更快了,Percona官网写的很清楚)
1
2
3
4
5
6
7
|
/
usr
/
local
/
percona
-
xtrabackup
/
bin
/
innobackupex
\
--
apply
-
log
\
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
.
.
.
.
.
.
InnoDB
:
Shutdown
completed
;
log
sequence
number
12587880249
160402
21
:
00
:
05
completed
OK
!
|
拷贝已有数据库使用的my.cnf,并且修改配置文件的数据目录和端口(3307)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
cp
/
etc
/
my
.
cnf
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
my
.
cnf
cat
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
my
.
cnf
[
mysqld
]
server
-
id
=
2
port
=
3307
user
=
mysql
basedir
=
/
usr
/
local
/
mysql
datadir
=
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
tmpdir
=
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
socket
=
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
mysql
.
sock
general_log_file
=
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
centos7
.
log
log_error
=
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
centos7
.
err
skip
-
external
-
locking
|
修改数据文件的权限为mysql用户
1
|
chown
-
R
mysql
:
mysql
/
u01
/
backup
|
启动MySQL端口为3307
1
2
|
/
bin
/
bash
/
usr
/
local
/
mysql
/
bin
/
mysqld
_safe
\
--
defaults
-
file
=
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
my
.
cnf
>
/
dev
/
null
2
>
&
1
&
|
启动日志显示一下面信息说明成功
1
2
|
2016
-
04
-
02T13
:
19
:
46.838448Z
0
[
Note
]
/
usr
/
local
/
mysql
/
bin
/
mysqld
:
ready
for
connections
.
Version
:
'5.7.10-3'
socket
:
'/u01/backup/2016-04-02_20-58-16/mysql.sock'
port
:
3307
Percona
Server
(
GPL
)
,
Release
3
,
Revision
63dafaf
|
使用刚刚恢复的库端口为3307
1
2
3
4
5
6
7
|
mysql
-
uroot
-
proot
-
S
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
mysql
.
sock
show
variables
like
'%datadir%'
;
+
--
--
--
--
--
--
--
-
+
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
+
|
Variable_name
|
Value
|
+
--
--
--
--
--
--
--
-
+
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
+
|
datadir
|
/
u01
/
backup
/
2016
-
04
-
02_20
-
58
-
16
/
|
+
--
--
--
--
--
--
--
-
+
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
+
|
上面展示的信息说明能使用了,并且是刚刚恢复的数据目录。
这时候只要让开发切换到3307端口使用数据库就好了。
当然如果你想要恢复某个表的数据你也可以从改3307实例dump出数据。或者在之前就使用exp方法导入恢复数据。
其实理解了多实例是个怎么回事自然就知道这中方法是如何的。