1、mysqldump备份方式为逻辑备份。最大的缺陷是备份和恢复速度慢。对于50G的数据库来说,这个速度还可以接受,但是如果数据库很大的话,就不太适合用mysqdump备份了。.这时候就需要一个好用高效的工具,xtraback就是其中之一。所谓的免费版innodbhotbackupxtraback具有以下特点:备份过程快速可靠。备份过程不会中断正在进行的交易,可以基于压缩等功能节省磁盘空间和流量自动实现快速备份检查和恢复速度2.安装xtraback1)下载xtrabackwgethttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4。4-Linux-x86_64.tar.gz2)解压[root@master~]#tarzxfpercona-xtrabackup-2.4.4-Linux-x86_64.tar.gz3)进入解压目录,将bin下所有程序复制到/usr/bin下[root@master~]#cdpercona-xtrabackup-2.4.4-Linux-x86_64/[root@masterpercona-xtrabackup-2.4.4-Linux-x86_64]#cpbin/*/usr/bin/xtraback用于热备innodb,xtradb表数据的工具,支持在线热备份,可以不加锁备份innodb数据表,但是这个工具不能操作myisam引擎表4)安装相关插件yuminstallperl-DBIperl-DBD-MySQLperl-Time-HiResperl-IO-Socket-SSLperl-TermReadKey.x86_64perl-Digest-MD5–y5)下载percona-toolkit并安装wgethttps://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm[root@master~]#rpm-ivhpercona-toolkit-2.2.19-1.noarch.rpmwarning:percona-toolkit-2.2.19-1.noarch.rpm:HeaderV4DSA/SHA1Signature,keyIDcd2efd2a:NOKEYPreparing...#################################[100%]正在更新/安装...1:percona-toolkit-2.2.19-1##################################[100%]3.备份方案一:xtrabackup全量备份+binlog增量备份(需要开启bin-log日志)创建备份目录[root@master~]#mkdir-p/opt/mysqlbackup/{full,inc}首先我们创建一个测试库,在测试库中创建一张tb1表,在tb1表中插入三行数据,如下:插入数据后,我们执行全量备份如下:[root@master~]#innobackupex--user=root--password=pwd123/opt/mysqlbackup/full/上面的全量备份路径在我们刚刚创建的mysqlbackup目录下出现如下提示,证明备份成功。备份后的文件如下:至此,全量备份完全成功,再插入几条数据到mysql的某个数据库中,再进行增量备份。对全量备份后的数据库变化进行二进制日志增量备份:备份时查看完整的Binlog日志位置(position):上面是我们全量备份完成后的位置,所以如果我们现在插入数据,就是从这个位置开始的。我们从这个位置调用增量备份,现在我们在tb1表中插入的数据如下:增量备份二进制文件:[root@master~]#mysqlbinlog--start-position=1279/usr/local/mysql/data/mysql-bin.000001>/opt/mysqlbackup/inc/`date+%F`.sql备份完成后,我们模拟数据库损坏和误删操作,如下[root@master~]#rm-rf/usr/local/mysql/data/*恢复数据库,首先恢复我们的全量备份,也就是tom1/2/3的数据如下:[root@master~]#innobackupex--copy-back/opt/mysqlbackup/full/2017-11-21_11-47-42/当数据恢复到DATADIR目录后出现如下提示证明恢复成功,需要确保owner和group所有数据文件的用户都是正确的,比如mysql,否则需要在启动mysqld之前修改数据文件的属主和属组。例如:#chown-Rmysql:mysql/usr/local/mysql/data/重启mysql服务,查看是否恢复成功。上面说明全量备份已经恢复成功,因为我们在全量备份的时候插入了3行数据,那么接下来我们恢复增量备份如下:为了防止在全量备份的时候产生大量的二进制日志恢复,可以在恢复的时候暂时关闭二进制日志,然后再恢复:然后我们验证是否恢复成功!至此,我们都恢复成功了。上面通过binlog+xtrabackup工具备份感觉有点麻烦。如果觉得麻烦,请看——下面的方案二。2、xtrabackup全量备份+xtrabacup增量备份测试环境准备创建测试数据库,建表录入几行数据。以上操作解释:创建一个测试库,在测试库中创建一个xx表,在xx表中创建一个xx表插入tom1和tom2的数据。接下来进行全量备份如下:[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--user=root--password='pwd123'--popt=3306--backup--target-dir=/opt/mysqlbackup/full/full_incre_$(date+%Y%m%d_%H%M%S)上面黑色部分是存放位置。出现以下说明备份成功。这个时候,我们再次插入数据,进行增量备份。最后一次增量备份如下:[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--user=root--password='pwd123'--popt=3306--backup--target-dir=/opt/mysqlbackup/inc/inc_incre_$(date+%Y%m%d_%H%M%S)--incremental-basedir=/opt/mysqlbackup/full/full_incre_20171121_123051/如果出现如下,备份成功了!上面的备份路径为:/opt/mysqlbackup/inc/我们可以查看备份文件,然后再往xx表中插入数据,进行第二次增量备份。第二次增量备份如下:[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--user=root--password='pwd123'--popt=3306--backup--target-dir=/opt/mysqlbackup/inc/inc_incre_$(date+%Y%m%d_%H%M%S)--incremental-basedir=/opt/mysqlbackup/inc/inc_incre_20171121_124604/出现如下提示证明备份成功。为了达到效果,我删除了xx表,开始恢复。全量备份如下:[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--prepare--user=root--password="pwd123"--apply-log-only--target-dir=/opt/mysqlbackup/full/full_incre_20171121_1230512.恢复第一个增量(tom3)[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--prepare--user=root--password="pwd123"--apply-log-only--target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051--incremental-dir=/opt/mysqlbackup/inc/inc_incre_20171121_124604/三、恢复第二增量[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--prepare--user=root--password="pwd123"--apply-log-only--target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051--incremental-dir=/opt/mysqlbackup/inc/inc_incre_20171121_125202恢复整个库[root@master~]#xtrabackup--defaultes-file=/etc/my.cnf--prepare--user=root--password="pwd123"--target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051停止mysql数据库-启动rsync数据文件[root@master~]#systemctlstopmysqld[root@master~]#cd/opt/mysqlbackup/full/full_incre_20171121_123051/[root@masterfull_incre_20171121_-rvt--exclude'xtrabackup_checkpoints'--exclude'xtrabackup_logfile'.//usr/local/mysql/data/Grantmysqlaccess[root@master~]#chown-Rmysql:mysql/usr/local/mysql/data/启动mysql服务到检查是否恢复是成功的。1024程序员节快乐希望能帮到你,再见~
