网上关于这方面的知识还是比较多的,不过比较零散。其中比较好的文章链接查看,

http://www.linuxidc.com/Linux/2012-10/71919p2.htm

用XtraBackup实现MySQL的主从复制快速部署【主不锁表】

http://www.360doc.com/content/12/0321/14/834950_196286503.shtml

mysql热备工具xtrabackup

xtrabackup有两个主要的工具:xtrabackup、innobackupex
 (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表   (2)innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项,如slave-info可以记录备份恢复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。

1,安装xtrabackup

[root@bs-db2 data]# wget 'http://www.percona.com/redir/downloads/XtraBackup/LATEST/RPM/rhel6/x86_64/percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm'

[root@bs-db2 data]# rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm
Preparing...                ########################################### [100%]
  1:percona-xtrabackup     ########################################### [100%]

innobackupex是一个perl脚本封装,如果安装提示缺少perl库可以搜索安装

[root@bs-db2 data]# yum install perl-DBD-MySQL
[root@bs-db2 data]# yum install perl-Time-HiRes

其他的搜索安装即可。

在linux shell中查看是否有

[root@bs-db2 data]# xtrabackup
xtrabackup     xtrabackup_55  xtrabackup_56

[root@bs-db2 data]# innobackupex
innobackupex        innobackupex-1.5.1

如果没有 可以尝试重新登录。其他情况欢迎留言。

2,备份

首先注意一点:确保在my.cnf中存在[mysqld]并且在[mysqld]后面存在 datadir = ....

这里的参数datadir为mysql源码编译安装存放数据的目录。如我的mysql编译安装在/opt/mysql

这里的datadir=/opt/mysql/data

备份指令
[root@bs-db2 data]# innobackupex --defaults-file=/etc/my.cnf   --user=root --password=Abcd1234 --stream=tar ./ |gzip >mysql_back.tar.gz

其中参数--stream=tar

备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。  
在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。

注意备份完成后 innobackupex 提示解压时要加上i参数

3,还原

[root@bs-db2 data]# scp mysql_back.tar.gz root@192.168.11.41:/opt/mysql/inno

复制备份文件到slave上

[root@bs-db2 inno]# pwd
/opt/mysql/inno

[root@bs-db2 inno]# ll
total 1481752
-rw-r--r-- 1 root root 1517306755 Dec 12 10:40 mysql_back.tar.gz

[root@bs-db2 inno]# tar zxvfi mysql_back.tar.gz
./backup-my.cnf
ibdata1

.

.

.

mysql/ndb_binlog_index.frm
mysql/proc.MYI
mysql/help_relation.MYD
mysql/user.MYD
mysql/servers.MYI
mysql/ndb_binlog_index.MYI
xtrabackup_logfile
xtrabackup_checkpoints
./xtrabackup_binary

[root@bs-db2 inno]innobackupex --defaults-file=/etc/my.cnf   --user=root --password=Abcd1234 --apply-log /opt/mysql/inno/

--apply-log

对xtrabackup的--prepare参数的封装

(--prepare  
实施对备份文件进行恢复前的准备(生成InnoDB log file)xtrabackup指令)
--copy-back  
做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p

IMPORTANT: Please check that the apply-log run completes successfully.
          At the end of a successful apply-log run innobackupex
          prints "completed OK!".

131212 12:20:01  innobackupex: Starting ibbackup with command: xtrabackup_55  --defaults-file="/etc/my.cnf"  --defaults-group="mysqld" --prepare --target-dir=/opt/mysql/inno --tmpdir=/tmp

.

.

.

[notice (again)]
 If you use binary log and don't use any hack of group commit,
 the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 32661, file name ./mysql-bin.000026

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
131212 12:20:07  InnoDB: Starting shutdown...
131212 12:20:12  InnoDB: Shutdown completed; log sequence number 11667029516
131212 12:20:12  innobackupex: completed OK!

注意此文件

[root@bs-db2 inno]# more xtrabackup_binlog_info
mysql-bin.000026        32661

记录了master的备份时状态,一会儿slave同步的时候设置为master_log_file 和master_log_pos

[root@bs-db2 inno]# innobackupex --defaults-file=/etc/my.cnf   --user=root --password=Abcd1234 --copy-back /opt/mysql/inno/

其中/opt/mysql/inno/为备份出来的文件位置。

[root@bs-db2 data]# chown  mysql.mysql * -R 修改数据文件的权限

[root@bs-db2 data]# /etc/init.d/mysql restart

3,同步

配置主从

#master

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id       = 1


#slave

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id       = 2

更多配置参考度娘。

登入mysql shell中

mysql> change master to master_host='192.168.11.43',
   -> master_port=3333,
   -> master_user='slave1',
   -> master_password='Abcd1234',
   -> master_log_file='mysql-bin.000026',
   -> master_log_pos=32661;
Query OK, 0 rows affected (0.05 sec)

这里的log_file和log_pos通过mysql数据目录下的xtrabackup_binlog_pos_innodb文件获得

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 192.168.11.43
                 Master_User: slave1
                 Master_Port: 3333
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000026
         Read_Master_Log_Pos: 32852
              Relay_Log_File: bs-db2-relay-bin.000002
               Relay_Log_Pos: 444
       Relay_Master_Log_File: mysql-bin.000026
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes

同步ok

如遇其他问题欢迎留言,共同探讨。


转载于:https://blog.51cto.com/monkeyzhu/1339737

mysql innodb备份恢复和主从复制 xtrabackup工具的使用相关推荐

  1. 2.5.1 MySQL数据库备份恢复基础讲解

    MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...

  2. MySQL的备份恢复

    mysql的备份恢复 知识要点 1.备份方式 2.mysqldump 3.如何进行备份恢复 4.xtrabackup 5.物理备份原理 6.如何进行物理备份 备份的目的 做灾难恢复:对损坏的数据进 ...

  3. mysql备份数据库语句6_13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复...

    扩展 : SQL语句教程 什么是事务?事务的特性有哪些? 根据binlog恢复指定时间段的数据 mysql字符集调整 使用xtrabackup备份innodb引擎的数据库  innobackupex  ...

  4. mysql用户管理,常用sql语句,mysql数据库备份恢复

    2019独角兽企业重金招聘Python工程师标准>>> mysql用户管理 grant all on . to 'user1' identified by 'passwd'; gra ...

  5. 13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复

    扩展 : SQL语句教程 http://www.runoob.com/sql/sql-tutorial.html 什么是事务?事务的特性有哪些? http://blog.csdn.net/yenang ...

  6. 52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)

    MySQL创建用户以及授权 默认用户是root用户,不可能所有人员都用root用户,创建用户防止误删除,因为mysql里边有多个库每个库里有很多表,所以需要给单独的用户做一些授权我只需要它对某一个数据 ...

  7. mysql的备份恢复原理_MySQL备份恢复-mysqldump原理

    +++++++++++++++++++++++++++++++++++++++++++ 标题:mysqldump对MySQL数据库备份恢复原理 时间:2019年2月23日 内容:mysqldump工具 ...

  8. MySQL用户管理、常用SQL语句、MySQL数据库备份恢复

    mysql用户管理 1.创建一个普通用户并授权 [root@gary-tao ~]# mysql -uroot -p'szyino-123' Warning: Using a password on ...

  9. 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复

    mysql用户管理 1.创建一个普通用户并授权 [root@gary-tao ~]# mysql -uroot -p'szyino-123' Warning: Using a password on ...

  10. mysql 恢复数据库乱码了_再谈MySQL数据库备份恢复和乱码问题

    在我转到wordpress之后第一个考虑的是它的数据库备份恢复问题,因为写bloger都知道,自己的blog记录的都是自己需要的宝贵的资料和文字,如果因为各种未知因素导致数据库崩溃或者空间商出了问题, ...

最新文章

  1. JConsole的使用
  2. oracle 取日期 加天,oracle日期,获取年月日等函数、日期函数、时区
  3. c#中文件的写入与读取
  4. Android Context 详解
  5. mysql远程连接oracle数据库服务器配置_远程访问oracle数据库
  6. 前端学习(1156):let var const的区别
  7. Linux给Java程序设置端口_扫描服务端口的Java程序
  8. SqlServer2008镜像证书过期处理
  9. Android开发四大组件
  10. LeetCode 28. Implement strStr()
  11. 2014年6月5日 深圳 IBM 安全解决方案会议通知
  12. Idea系列文章2-依赖包的引入
  13. c++卡常技巧-164
  14. QQ互联开发者信息认证
  15. nltk.stem 词干提取(stemming)
  16. 记录nginx获取的真实ip多了 的问题
  17. 软件开发不是一门艺术
  18. target=_blank和target=_black
  19. 阿里巴巴的“双11”高并发秒杀终极版教程(Java语言设计)
  20. 05.python学习系列——画图库turtle(啥是小猪佩奇)

热门文章

  1. SqlTransaction事务和Response.Redirect
  2. 谁偷偷删了你的微信?别慌!一篇Python学习教程帮你都揪出来
  3. Linux_access the file or directory which start with -
  4. JavaAPI之Runtime类以及bat文件开启应用程序
  5. Java 类与对象的初始化
  6. Jmeter学习(一)
  7. Struts2整合Spring方法及原理
  8. 推荐几个字节跳动、微众银行、蚂蚁金服技术大佬的公号
  9. 地震预警,生死十秒,我们能做些什么?
  10. 案例:回归分析-R实现