MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程(2)
复制代码 代码如下: # innobackupex --defaults-file=/etc/my.cnf --user=root /home/tank/backup/ 如果报以下错误: 复制代码 代码如下: InnoDB: Error: log file ./ib_logfile0 is of dif
复制代码 代码如下:
# innobackupex --defaults-file=/etc/my.cnf --user=root /home/tank/backup/
如果报以下错误:
复制代码 代码如下:
InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes
InnoDB: than specified in the .cnf file 50331648 bytes!
innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2679.
解决办法:在my.cnf的mysqld中加入以下内容:
复制代码 代码如下:
[mysqld]
innodb_log_file_size = 5M
2、单数据库备份
复制代码 代码如下:
# innobackupex --defaults-file=/etc/my.cnf --user=root --database=backup_test /home/tank/backup/
3、数据库备份并压缩
复制代码 代码如下:
# innobackupex --defaults-file=/etc/my.cnf --user=root --stream=tar /home/tank/backup | gzip > /home/tank/backup/`date +%F_%H-%M-%S`.tar.gz
4、全数据还原
复制代码 代码如下:
# /etc/init.d/mysqld stop //停掉mysql
# mv /var/lib/mysql /var/lib/mysql_bak //数据目录备份
# mkdir -p /var/lib/mysql //重建数据目录
//--apply-log选项的命令是准备在一个备份上启动mysql服务
# innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /home/tank/backup/2014-09-18_16-35-12
//--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置
# innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /home/tank/backup/2014-09-18_16-35-12
# chown -R mysql.mysql /var/lib/mysql //改变文件所属
# /etc/init.d/mysqld stop //启动mysql
四、增量备份与还原
1、创建测试数据库和表
复制代码 代码如下:
create database backup_test; //创建库
CREATE TABLE `backup` ( //创建表
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(20) NOT NULL DEFAULT '' ,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`del` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=myisam DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
2、增量备份
复制代码 代码如下:
mysql> INSERT INTO backup (name) VALUES ('tank'),('tank1'); //插入数据
# innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/home/tank/backup/2014-09-18_16-35-12 --incremental /home/tank/backup/
3、在增量的基础上在进行增量备份
复制代码 代码如下:
mysql> INSERT INTO backup (name) VALUES ('tank2'),('tank3'),('tank4'),('tank5'),('tank6'); //在插入数据
//2014-09-18_18-05-20这个目录,上次增量备份产生的目录
# innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/home/tank/backup/2014-09-18_18-05-20 --incremental /home/tank/backup/
查看增量备份记录文件:
精彩图集
精彩文章