首页 > 代码库 > 通过innobackupex实现对MySQL的完整备份与还原

通过innobackupex实现对MySQL的完整备份与还原

备份

新建一个用于存放备份的目录

mkdir /backup

执行以下命令:

innobackupex --password=test /backup/

执行完后你会看到“completed OK!”的字样。

备注:

test是我的MySQL的root用户的密码。

完整的命令应该是这样的:

innobackupex --defaults-file=/etc/my.cnf --user=root --password=test /backup/

因为我使用的配置文件是默认的/etc/my.cnf,而且我是直接使用MySQL的root用户备份的,所以我省略了--defaults-file参数和--user参数。

执行命令前请先检查MySQL的配置文件,查看[mysqld]下是否指定了datadir,如果没有请自行添加,否则执行命令后会报错。

默认情况下,系统会自动在备份目录下新建一个以当前时间命名的目录(格式:yyyy-mm-dd_HH-MM-SS),如果你希望自定义目录的名称,就请在命令的末尾加上--no-timesmtap参数,加上这个参数后,系统就不会自动新建目录了,所以我们要事先在备份目录下新建一个目录用来存放备份,比如/backup/full。

还原

为了看到实验效果,读者可以对数据库进行增删改,然后再还原。

停止MySQL服务

service mysqld stop

清空MySQL的数据目录

rm -rf /mysql/*

备注:在生产环境中,如果有足够的空间,建议采用重命名的方式进行备份。

回滚日志

innobackupex --apply-log /backup/2016-09-20_12-33-47/

备注:2016-09-20_12-33-47是我之前备份的目录,请读者根据自己的实际情况进行修改。

还原

innobackupex --copy-back /backup/2016-09-20_12-33-47/

执行完后你会看到“completed OK!”的字样。

修改数据目录的属主和属组

chown -R mysql.mysql /mysql/

启动MySQL服务

service mysqld start

此时登录MySQL,可以看到已经恢复到我们备份前的样子了。

通过innobackupex实现对MySQL的完整备份与还原