之前有几位朋友刚刚接触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 @ trustauth.cn 2016 – 04 – 02_20 – 58 – 16 ] # pwd / u01 / backup / 2016 – 04 – 02_20 – 58 – 16 [ root @ trustauth.cn 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方法导入恢复数据。
其实理解了多实例是个怎么回事自然就知道这中方法是如何的。
文章转载来自:trustauth.cn