xtrabackup简介

 新葡亰计算机网络     |      2019-12-12

mysql的备份方式
 
 
1.mysqldump
效率比较低,备份和还原的速度都很慢,任何数据插入和更新操作都会被挂起
 
2.mysqlhotcopy
mysqlhotcopy 是专门针对myisam 数据表进行备份,备份的过程中,任何数据插入和更新操作都会被挂起
 
3.准备一台从服务器,专门做备份(master-slave方式)
 
4.xtrabackup 是 percona 的一个开源项目,可热备份innodb ,XtraDB,MyISAM(会锁表)
 
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁
 
相比之下 xtrabackup 备份比较靠谱
 
下载 xtrabackup-1.6-245.rhel5.x86_64.rpm
安装 rpm -ivh  xtrabackup-1.6-245.rhel5.x86_64.rpm
 
备份(xtrabackup只备份数据文件,并不备份数据表结构(.frm))
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/bak/
恢复(执行两次) 
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/bak/
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/bak/
 
二、 增量备份
 
对比innobackupex和xtrabackup,innobackupex操作起来更方便,但是innobackupex会有短暂的锁表.xtrabackup备份还有另一个重要特性:增量备份.  

再次提醒,xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)。

1.mysqldump 效率比较低,备份和还原的速度都很慢,任何数据插入和更新操作都会被挂起 2.mysqlhotcopy mysqlhotcopy 是专门针对myi...

恢复全量备份:

  1. 全量备份
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/bak/  
  2. 增量备份
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/bak/ --incremental-basedir=/bak/increm/
     
    在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份之后被修改过的page,所以增量备份一般只暂用较少的空间。  
  3. 增量备份恢复
    分别对全量、增量备份各做一次prepare操作。
    xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/bak/
    xtrabackup --prepare --target-dir=/bak/ --incremental-dir=/bak/increm/
     
    /bak/下的数据文件就可以直接放到你的MySQL数据目录下,恢复数据了。
     
    一般的备份 比如不会换全新的环境 用xtrabackup 就可以了
     
    在不停生产的情况下备份数据给slave
     
    首先确保两边的/etc/my.cnf 文件里边都指定了datadir
     
    接着备份数据:
    innobackupex-1.5.1   --defaults-file=/etc/my.cnf --stream=tar  --user=root --password=**** --port=3306 --slave-info /bak | gzip>/bak/bak_mysql.tar.gz
     
    将bak_mysql.tar.gz cp 到另一台机器上
    scp  /bak/bak_mysql.tar.gz  [email protected]:/home/bak_mysql.tar.gz
     
    解压bak_mysql.tar.gz到/bak
    tar -ixvf mysqlbak.tar(一定要加i 参数  我也不知道为什么)
     
    恢复先 --apply-log  再 --copy-back
    innobackupex-1.5.1 --defaults-file=/etc/my.cnf  --user=root  --password=XXXX --port=3306 --apply-log /bak
     
    --copy-back这里容易报错
    (innobackupex-1.5.1: Copying directory '/bak/tech_soft_drp_ywmy'
    innobackupex-1.5.1: Copying directory '/bak/mysql'
    mkdir: 无法创建目录 “arb/mysql/mysql”: 文件已存在
    innobackupex-1.5.1: Error: Failed to create directory 'arb/mysql/mysql' : 没有那个文件或目录 at /usr/bin/innobackupex-1.5.1 line 336.)
    我也不知道咋整。好像是官方1bug 见
     
    我看了看/bak目录  决定把mysql  test 等自带的一些库直接rm 了。执行已下命令成功
     
    innobackupex-1.5.1  --defaults-file=/etc/my.cnf  --user=root  --password=XXXX --port=3306  --copy-back /bak
     
    重启数据库服务又有问题
    (110719 19:30:16 mysqld_safe Starting mysqld daemon with databases from arb/mysql
    110719 19:30:16 [Note] Plugin 'FEDERATED' is disabled.
    110719 19:30:16 InnoDB: The InnoDB memory heap is disabled
    110719 19:30:16 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    110719 19:30:16 InnoDB: Compressed tables use zlib 1.2.3
    110719 19:30:16 InnoDB: Using Linux native AIO
    110719 19:30:16 InnoDB: Initializing buffer pool, size = 2.0G
    110719 19:30:16 InnoDB: Completed initialization of buffer pool
    110719 19:30:16  InnoDB: Operating system error number 13 in a file operation.
    InnoDB: The error means mysqld does not have the access rights to
    InnoDB: the directory.
    InnoDB: File name ./ib_logfile0
    InnoDB: File operation call: 'open'.
    InnoDB: Cannot continue operation.
    110719 19:30:16 mysqld_safe mysqld from pid file arb/mysql/r410.pid ended)
     
     
    不知道啥情况。网上搜搜好像是权限问题 直接将mysql 目录 chmod 777 -R mysql 重启服务好了
     
    菩萨保佑 问题好了
     
    将my.cnf 配置成server-id=2  主从配置在这里不多提了
    CHANGE MASTER TO MASTER_HOST='xxxx',MASTER_USER='xx',MASTER_PASSWORD='xxx',MASTER_LOG_FILE='mysql-bin.000047',MASTER_LOG_POS=43446639
     
    MASTER_LOG_FILE这个值去/bak 下面的 xtrabackup_binlog_info 找
     
    大功告成
     
    省了以前通宵用mysqldump 来同步数据再做主从同步
     
    这东东是个神器

按如上的介绍,由于操作Myisam时需要加读锁,这会堵塞线上服务的写操作,而Innodb没有这样的限制,所以数据库中Innodb表类型所占的比例越大,则越有利。实际应用中一般是直接使用innobackupex方法,它主要有三种操作方式,按手册中的介绍:

cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/

           [--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-

安装参照:

准备还原

这里使用了管道|将innobackupex-1.5.1作为gzip的标准输入。恢复,只需要使用tar -izxvf 解压对应的文件后,操作完全同普通备份。

innobackupex: completed OK!

 

           [--defaults-file=MY.CNF]

Usage:

                                                        Percona Support for MySQL

xtrabackup_checkpoints — 存放备份的起始位置和结束位置。

# ls

增量备份恢复:

chown -R mysql:mysql mysql_data/

1.普通备份:

cd /data

           [--ibbackup=IBBACKUP-BINARY] BACKUP-DIR

#cd /data/back_data/2/

           [--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]

innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR

Benefit Silver
(Per Server)
Gold
(Unlimited)
Platinum
(Unlimited)
Annual Price $1,500/server From $15,000 From $30,000
Number of Servers Covered Per-Server Unlimited Unlimited
Number of Support Incidents Unlimited Unlimited Unlimited
Response Time SLA 60 Minutes 30 Minutes 30 Minutes
Named Support Contact Persons 5 10 20
Email, Web, & Chat Support
Phone Support
Login Support
24×7 Support
Fixes For Verified Bugs  
Hot Bug Fixes    
Onsite System Audit   Option
Covers Old Server Versions    
Covers Non-Standard Platforms     Option
Covers Custom Code     Option
 

chown -R mysql:mysql mysql_data/

make

innobackupex [--defaults-file=/etc/my.cnf] --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306]   /data/back_data/    2>/data/back_data/1.log

备份后的文件:

使用tar –izxvf 解压对应的文件后,操作完全同普通备份。

———————————————————————————————————————

# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back   /data/back_data/2/

我们需要分别对全量、增量备份各做一次prepare操作。

第一个命令行是热备份mysql数据库。

1)xtrabackup 只能备份InnoDB和XtraDB两种数据表,支持在线热备份,可以在不加锁的情况下备份Innodb数据表,不过此工具不能操作Myisam引擎表

……

#tar ixvf 2.tar

……

xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37--incremental-

一、Xtrabackup简介及安装

  1. 增量备份

innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/ 2>/data/back_data/2.log   1>/data/back_data/2.tar

Xtrabackup------MySQL DBA的必备工具

xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5

  1. 全量备份

cd /data

make install

这样,/data/back_data/下的数据文件就可以直接放到你的MySQL数据目录下,恢复数据了。

——————————————————————————————————

恢复增量备份:

------MySQL DBA的必备工具 注意: 1)文档参照 2)mysql要使用5.1.50版本或以上。 一、Xtrabacku...

 

备份的目录是/data/back_data/,这里的2>/data/back_data/1.log,是将备份过程中的输出信息重定向到1.log

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

3、如此一来,就会在/usr/bin目录里安装上两个有用的工具:xtrabackup、innobackupex

恢复:

注意,xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm)。

# ls

innobackupex  --user=root --copy-back /data/back_data/2010-10-29_15-57-44 # 拷贝文件

2、安装:

innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]

innobackupex: completed OK!

innobackupex  --user=root /data/back_data/ 2>/data/back_data/1.log #会生成一个时间文件夹,这里假如是2010-10-29_15-57-44

2)mysql要使用5.1.50版本或以上。

在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份后被修改过的page,所以增量备份只暂用较少的空间。增量备份可以在增量备份的基础上增量。

           [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]

make

删除数据目录里的所有文件

# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back  /data/back_data/

innobackupex: completed OK!

chown -R mysql:mysql mysql_data/

删除数据目录里的所有文件

cd /data

增量备份:

上一篇:MySQL中的datetime与timestamp比较 下一篇:没有了