1.1. 前言
之前有几位朋友刚刚接触MySQL备份工具xtrabackup,想将使用这个工具使用在自己的生产环境上。他们使用这用具恢复数据的使用,总是按官网的,在恢复的最后都会执行–copy-back。然后之前目录的数据就必须得覆盖了。
那其实明白多实例的,应该知道其实只要apply-log完,然后在开启新的实例数据目录就能使用了。
1.2. 演示
这里我们将数据备份在 /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方法导入恢复数据。
1.3. 总结
其实理解了多实例是个怎么回事自然就知道这中方法是如何的。
文章转载来自:ttlsa.com