- A+
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. 总结
其实理解了多实例是个怎么回事自然就知道这中方法是如何的。
昵称:HH
QQ:275258836
ttlsa群交流沟通(QQ群②:6690706 QQ群③:168085569 QQ群④:415230207(新) 微信公众号:ttlsacom)
感觉本文内容不错,读后有收获?

微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~