一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

innobackupex来备份和恢复MySQL数据库的例子

时间:2015-09-22 编辑:简简单单 来源:一聚教程网

背景介绍:

在一些技术群里面,看到仍然有一些运维在用mysqldump这样的命令来备份MySQL,于是感觉有必要介绍一下innobackupex。
现在,绝大多数使用MySQL的场景中,都用到了Master-Slave这样的架构。相对于mysqldump而言,使用innobackupex备份有以下好处:
1. 以数据文件为备份对象,文件级别备份,速度快,尤其适合需要对所有数据进行备份的场景;
2. 热备份,不会对现有的数据库访问造成任何影响;
3. 记录binlog以及replication相关信息,在创建和恢复Slave时非常有用;

以下是风哥的几点补充:
1.用innobackupex可以做到不停业务在线备份,前提是对innodb引擎,对myisam也会锁表;
2.在备份过程会导致IO很高,建议在一台slave上做备份(我一般用一台slave只做备份用),不建议在主上备份; 3.innobackupex可以用增量与全量备份方式配合;

具体用例:

环境介绍

架构:Master-Slave
MySQL端口:3308
配置文件:/etc/my_3308.cnf
备份目录:/mysql-backup/3308
MySQL数据目录:/opt/mysql_3308/data
服务脚本:/etc/init.d/mysql_3308
在Master上备份

# innobackupex --defaults-file=/etc/my_3308.cnf /mysql-backup/3308 --user=backup-user --password=backup-user --no-lock
在Slave上备份

# innobackupex --defaults-file=/etc/my_3308.cnf /mysql-backup/3308 --user=backup-user --password=backup-user --no-lock --slave-info  --safe-slave-backup
在Master上恢复

# /etc/init.d/mysql_3308 stop

# mv /opt/mysql_3308/data /opt/mysql_3308/data_broken
# mkdir /opt/mysql_3308/data

# innobackupex --apply-log /mysql-backup/2015-01-12_08-00-10
# innobackupex --copy-back /mysql-backup/2015-01-12_08-00-10 --defaults-file=/etc/my_3308.cnf

# chown -R mysql:mysql /opt/mysql_3308/data

# /etc/init.d/mysql_3308 start
在Slave上恢复

# /etc/init.d/mysql_3308 stop

# mv /opt/mysql_3308/data /opt/mysql_3308/data_broken
# mkdir /opt/mysql_3308/data

# innobackupex --apply-log /mysql-backup/2015-01-12_08-00-10
# innobackupex --copy-back /mysql-backup/2015-01-12_08-00-10 --defaults-file=/etc/my_3308.cnf

# chown -R mysql:mysql /opt/mysql_3308/data

# /etc/init.d/mysql_3308 start

# cd /opt/mysql_3308/data
# cat xtrabackup_binlog_pos_innodb
./bin-log-mysqld.000222      222333

# mysql_3308 -uroot -p

mysql> change master to
master_host='master_host',
master_port=3308,
master_user='master_user',
master_password='master_password',
master_log_file='bin-log-mysqld.000222',
master_log_pos=222333;

mysql> start slave;

热门栏目