一、XtraBackup介绍

1、备份工具

xtrabackup:是一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,占用磁盘空间小,能够非常快速地

                          备份与恢复mysql数据库,(备份时不影响数据读写)

官方下载地址为http://www.percona.com/software/percona-xtrabackup

mysqldump:备份是逻辑备份,备份出来的文件是sql语句,但是当备份MySQL数据超过10G时,用mysqldump来导出备份就比较慢了

2、备份原理

 

3、xtrabackup包含两个主要的工具

①xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表;
②innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁,还有就是myisam不支持增量备份

innobackupex备份和恢复的工作原理

二、XtraBackup安装部署

1、环境

①db

[root@db ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db ~]# uname -r
2.6.-.el6.x86_64
[root@db ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db ~]# getenforce
Disabled
[root@db ~]# hostname -I
172.19.5.54 172.16.1.54

②db01

[root@db01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db01 ~]# uname -r
2.6.-.el6.x86_64
[root@db01 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db01 ~]# getenforce
Disabled
[root@db01 ~]# hostname -I
172.19.5.55 172.16.1.55

2、安装XtraBackup

cd /server/tools/
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm
yum localinstall percona-xtrabackup--2.4.-.el6.x86_64.rpm -y

3、db服务器模拟插入数据

create database oldboy;#创建oldboy库
use oldboy;
create table test( id int() not null,name char() not null);#在oldboy库中创建test表
insert into test values(,"oldboy");#test表中插入数据
insert into test values(,"oldgirl");
insert into test values(,"inca");
insert into test values(,"zuma");
insert into test values(,"kaka");
insert into test values(,"老男孩");

查看test表中内容

mysql> select * from test;
+----+-----------+
| id | name |
+----+-----------+
| | oldboy |
| | oldgirl |
| | inca |
| | zuma |
| | kaka |
| | 老男孩 |
+----+-----------+
rows in set (0.00 sec)

4、备份数据

①db操作

mkdir /backup -p && cd /backup
innobackupex --defaults-file="/etc/my.cnf" --user=root --password='' --socket=/application/mysql/tmp/mysql.sock /backup/
#备份完成会出现如下内容

……
xtrabackup: Transaction log of lsn () to () was copied.
:40:30 completed OK!

②查看备份的内容

[root@db backup]# ll /backup/--09_11--/
total
-rw-r----- root root -- : backup-my.cnf
-rw-r----- root root -- : ibdata1
-rw-r----- root root -- : ib_logfile0
-rw-r----- root root -- : ib_logfile1
-rw-r----- root root -- : ibtmp1
drwxr-x--- root root -- : mysql
drwxr-x--- root root -- : oldboy
drwxr-x--- root root -- : performance_schema
-rw-r----- root root -- : xtrabackup_binlog_info
-rw-r--r-- root root -- : xtrabackup_binlog_pos_innodb
-rw-r----- root root -- : xtrabackup_checkpoints
-rw-r----- root root -- : xtrabackup_info
-rw-r----- root root -- : xtrabackup_logfile

③预处理数据

innobackupex --defaults-file="/etc/my.cnf" --user=root --password='' --socket=/application/mysql/tmp/mysql.sock --apply-log --use-memory=1G /backup/--09_11--/

④模拟删除oldboy库,恢复全备

drop database oldboy;

⑤为了保持数据一致性,停库恢复

[root@db ~]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
rm -fr /application/mysql/data/*
innobackupex --defaults-file="/etc/my.cnf" --user=root --password='123456' --socket=/application/mysql/tmp/mysql.sock --move-back /backup/2018-01-09_11-57-49/

⑥恢复全备成功后,重新授权数据目录,启动MySQL

chown -R mysql.mysql /application/mysql/data/
[root@db mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!
#登录数据库查看恢复的数据

mysql> select * from oldboy.test;
+----+-----------+
| id | name |
+----+-----------+
| | oldboy |
| | oldgirl |
| | inca |
| | zuma |
| | kaka |
| | 老男孩 |
+----+-----------+
rows in set (0.00 sec)

三、主从复制部署

 1、授权从库连接用户

grant replication slave on *.* to 'rep'@'172.19.5.%' identified by '';

2、分发全备数据到从库db01

scp -rp --09_14--/ 172.19.5.55:/backup/

3、从库预处理

innobackupex --defaults-file="/etc/my.cnf" --user=root --password='' --socket=/application/mysql/tmp/mysql.sock --apply-log --use-memory=1G /backup/--09_10--/

4、停从库,恢复数据

[root@db01 data]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
rm -fr /application/mysql/data/*
innobackupex --defaults-file="/etc/my.cnf" --user=root --password='123456' --socket=/application/mysql/tmp/mysql.sock --copy-back /backup/2018-01-09_14-58-50/

5、查看master位置点

[root@db01 --09_14--]# cat /backup/--09_14--/xtrabackup_binlog_info
mysql-bin.

6、启动从库db01,设置主从复制

chown -R mysql.mysql /application/mysql/
/etc/init.d/mysqld start
#登录数据库
CHANGE MASTER TO
MASTER_HOST='172.19.5.54',
MASTER_PORT=,
MASTER_USER='rep',
MASTER_PASSWORD='',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=;

开启主从同步功能

mysql> start slave;
Query OK, rows affected (0.00 sec) mysql> show slave status\G
*************************** . row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.19.5.54
Master_User: rep
Master_Port:
Connect_Retry:
Master_Log_File: mysql-bin.
Read_Master_Log_Pos:
Relay_Log_File: db01-relay-bin.
Relay_Log_Pos:
Relay_Master_Log_File: mysql-bin.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:
Last_Error:
Skip_Counter:
Exec_Master_Log_Pos:
Relay_Log_Space:
Until_Condition: None
Until_Log_File:
Until_Log_Pos:
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:

四、主从复制架构扩展

1、主从延迟复制

stop slave;
change master to master_delay = N(600秒);
start slave;

应用场景

①误删除恢复

②测试

③历史查询

2、半同步复制

①master配置

install plugin rpl_semi_sync_master soname 'semisync_master.so';
set global rpl_semi_sync_master_enabled = ;
set global rpl_semi_sync_master_timeout = ;

②slave配置

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled = ;
set global rpl_semi_sync_master_timeout = ;

③查看半同步是否开启

stop slave io_thread;
start slave io_thread;#重启IO线程
show global status like 'rpl_sem%';#查看半同步状态

linux运维、架构之路-xtrabackup的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  3. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  4. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  5. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

  6. Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...

  7. 从零起步做到Linux运维经理, 你必须管好的23个细节

    “不想成为将军的士兵,不是好士兵”-拿破仑 如何成为运维经理? 一般来说,运维经理大概有两种出身:一种是从底层最基础的维护做起,通过出色的维护工作,让公司领导对这个人非常认可,同时对Linux运维工作 ...

  8. linux运维工程师面试题收集

    面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...

  9. 从零起步做到Linux运维经理,你必须管好的23个细节

    不想成为将军的士兵,不是好士兵-拿破仑 如何成为运维经理?成为运维经理需要什么样的能力?我想很多运维工程师都会有这样的思考和问题. 如何成为运维经理.一般来说,运维经理大概有两种出身,一种是从底层最基 ...

  10. 马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

    马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文 ...

随机推荐

  1. jdk的keytool生成jks和获取jks的信息,公匙

    1.生成jks.执行命令:keytool -genkeypair -alias mytest -keyalg RSA -keypass mypass -keystore mytest.jks -sto ...

  2. tomcat启动失败的三种方法

    Tomcat启动失败的解决办法 1. 重复映射 用eclipse开发时,用Eclipse开发,新建了的servlet会有一个url-pattern声明: 这样就不需要再在web.xml中添加映射,如果 ...

  3. Quartz-第三篇 quartz-misfire 错失,补偿执行

    1.问题:使用pauseJob()后,再使用resumeJob(). Job如果中间时间足够短,默认会将之前错失的次数执行回来.这个问题的原因是执行调度策略的问题,quartz框架默认会将错失的执行次 ...

  4. TortoiseGit不用每次输入用户名和密码的方法

    TortoiseGit每次同步代码时,都会让输入用户名和密码,虽然安全,但是自己用有点麻烦. 怎么解决呢?废话不多说,直接上图: 1.设置—编辑本地.git/config 2.在本地.git/conf ...

  5. 异步Promise及Async/Await可能最完整入门攻略

    此文只介绍Async/Await与Promise基础知识与实际用到注意的问题,将通过很多代码实例进行说明,两个实例代码是setDelay和setDelaySecond. tips:本文系原创转自我的博 ...

  6. redis的线程模型 与 压力测试

    当客户端与ServerSocket产生连接时,会产生一个 AE_REABLE / AE_WRITABL 事件, 多个Socket可能并发产生不同的事件,IO多路复用程序会监听这些Socket,按照顺序 ...

  7. sublime3跳转函数

    点击Preferences->Browse Packages进入Packages目录,然后打开User目录,查看User目录里面有没有Default (Windows).sublime-mous ...

  8. JSP中九大内置对象及其作用

    jsp中有九大内置对象分别为:request,response,session,application,out,pageContext,page,config,exception. request:请 ...

  9. 利用localStorage实现浏览器中多个标签页之间的通信

    原理: localStorage是浏览器存储数据的容器,而且它是多页面共享的,利用localStorage多页面共享的特性,可以实现多个标签页的通信. 比如: 一个标签页发送消息(将发送的消息设置到l ...

  10. NSPredicate的使用,超级强大

    NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...]; Format: (1)比较运算符>,<,==, ...