关键词:XtraBackup实践,物理备份,xtrabackup备份,innobackupex备份

【1】如何使用?

  【3】系列:innobackupex --help |more

  【4】系列:xtrabackup --help |more

  版本特性:

    2018年5月版本,2.4.11,在2.3.3之前备份会产生死锁,在2.3.3之后就不再死锁。

    如果5.7使用,需要使用2.4.4之后的版本才可以

    xtrabackup只能备份InnoDB和XtraDB两种数据表(但在高版本中2.4.11以及更高的版本中,xtrabackup已经集成了innobackupex,且innobackupex命令只是xtrabackup的一个软链接)

    innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁

  核心总结:

------------------------------完整备份操作-------------------------------------------
【1】全备
  【1.1】备份:innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp --parallel= /mysql/backup/full_1
  【1.2】恢复:
    (1.2.1)prepare阶段,即使用--apply-log参数进行redo和undo达到事务一致性      
      innobackupex --apply-log --user-memory=1G /mysql/backup/full_1
    (1.2.2)停服,备份删除现有数据库目录    
      service mysql stop
      mv /mysql/data/3306/data /mysql/data/3306/data_old
      mkdir /mysql/data/3306/data
      chown -R mysql:mysql /mysql/data/3306/data
     (1.2.3)copy数据文件,需要原来的目录为空(--force-non-empty-directories,这个参数可以覆盖)-- 核心参数 --copy-back

      innobackupex --defaults-file=/mysql/data/3306/my.cnf --copy-back --parallel=2 /mysql/backup/fullbackup_20190708_1
    (1.2.4)修改权限(很重要!!!),启动数据库,验证数据是否恢复

      chown -R mysql:mysql /mysql/data/3306/data
      service mysql start
------------------------------增量备份操作-------------------------------------------

#核心参数 (1)--incremental 增量选项  (2)--incremental-basedir=  基于哪次备份的增量,参数值可以是全备目录,可以是上一层增量备份目录 
#核心参数 (3)--rsync 是用来加速恢复的,最小化flush tables with read lock的阻塞时间,用rsync来拷贝非innodb的文件,有myisam才用。增量也可以用
#【1】完备
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp /mysql/backup/full_1 #【2】构造增量数据1
use test1;
create table test13(id int,str varchar(50));
insert into test13 values(1,'test13_1'),(2,'test13_2');
commit; #【3】开始增量备份1
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/full_1 /mysql/backup/diff_1 #【4】构造增量数据2
use test2;
create table test23(id int,str varchar(50));
insert into test23 values(1,'test23_1'),(2,'test23_2');
commit;
#【5】开始增量备份2(注意,这里的 --incremental--basedir= 的值如果是全备,那么就是差异备份。 如果值是上一次增量备份,那就是基于该目录的增量数据备份)

基于全备的差异备份:
  #innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/full_1 /mysql/backup/diff_2 基于上一次增量的增量备份:
  innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/diff_1 /mysql/backup/diff_2
#【6】构造增量数据3
use test3;
create table test33(id int,str varchar(50));
insert into test33 values(1,'test33_1'),(2,'test33_2');
commit; #【7】开始增量备份3:基于增量备份1的增量备份(也就是把 --incremental-basedir=/mysql/backup/diff_1)
  innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/diff_1 /mysql/backup/diff_3

------------------------------增量还原操作/增量恢复操作-------------------------------------------
#核心参数 --redo-only(只需redo不作undo) ,--apply-log ==>2个整合起来就是 --apply-log-only
【1】测试,先删除一些数据
  drop table test1.test11;
  drop table test2.test23;
  drop table test3.test33; 【2】全备恢复
  innobackupex --apply-log --redo-only /mysql/backup/full_1 【3】增量备份1恢复
  innobackupex --apply-log --redo-only /mysql/backup/full_1 --incremental-dir=/mysql/backup/diff_1 【4】增倍备份2恢复(最后一次增量恢复)
  innobackupex --apply-log /mysql/backup/full_1 --incremental-dir=/mysql/backup/diff_2 【5】合并,准备完全恢复
  innobackupex --apply-log /mysql/backup/full_1 【6】数据文件还原
  (1) service mysql stop
  (2) cd /mysql/data/3306
  (3) mv data data_bak1
  (4) mkdir data
  (5) chown -R mysql:mysql /mysql
  (6) innobackupex --defaults-file=/mysql/data/3306/my.cnf --copy-back --rsync /mysql/backup/full_1
    #--rsync是用来加速恢复的,最小化flush table with read lock的阻塞时间,用rsync来拷贝非innodb数据。
      

【2】基本原理

  参考:mysql备份原理

  

  

      

【3】案例演示与学习(测试演练)

【3.0】测试数据准备  

测试环境:centos6.5,mysql5.7.24

前提条件:xtrabackup2.4.11(如何安装?),mysql开启binlog(这里为了测试特地reset master重置了binlog)

binlog的相关配置如下:

log-bin=/mysql/log//binlog
server-id=
binlog_format= ROW
log_bin_index=/mysql/log//binlog.index
binlog_rows_query_log_events=on
binlog_row_image=FULL

测试数据

create database test1;
create database test2;
create database test3;
commit; use test1;
create table test11(id int,str varchar(50));
create table test12(id int,str varchar(50));
insert into test11 values(1,'test11_1'),(2,'test11_2');
insert into test12 values(1,'test12_1'),(2,'test12_2');
commit; use test2;
create table test21(id int,str varchar(50));
create table test22(id int,str varchar(50));
insert into test21 values(1,'test21_1'),(2,'test21_2');
insert into test22 values(1,'test22_1'),(2,'test22_2');
commit;
use test3;
create table test31(id int,str varchar(50));
create table test32(id int,str varchar(50));
insert into test31 values(1,'test31_1'),(2,'test31_2');
insert into test32 values(1,'test32_1'),(2,'test32_2');
commit;

【3.1】innobackupex备份与恢复

Innobackupex 参数解释:
--defaults-file=[MY.CNF]该选项传递给xtrabackup子进程,从指定文件读取缺省选项
--apply-log 从备份恢复。
--redo-only 该选项强制跳过rollback阶段,只进行redo。这是有必要使用的,如果备份后,要使用增量改变的。
--copy-back 从备份目录拷贝数据和索引文件到datadir目录
--remote-host=HOSTNAME备份到远程主机上,使用ssh
--stream=[tar|cpio(notimplemented)] 指定备份标准输出格式
--tmpdir=DIRECTORY默认与tmpdir相同。使用—remote-host或—stream参数后,传输日志文件将存放在临时目录下
--use-memory=MB选项传递给xtrabackup子进程。恢复使用内存大小
--parallel=NUMBER-OF-THREADS选项传递给xtrabackup子进程,指定数据传输线程总数。默认为1
--throttle=IOS选项传递给xtrabackup子进程,限制IO线程数量
--sleep=MS 选项传递给xtrabackup子进程。每拷贝1MB数据暂停多少MS时间
--compress[=LEVEL]选项传递给xtrabackup子进程。压缩级别在0-.1快速压缩,9最佳压缩,0不压缩。默认为1.
--include=REGEXP选项传递给xtrabackup子进程。使用正则进行匹配
--databases=LIST指定备份数据库
--tables-file=FILE
--uncompress选项传递给xtrabackup子进程。对压缩过的InnoDB数据文件不进行压缩
--export 仅使用于prepare选项。选项传递给xtrabackup子进程。
--user=NAME
--password=WORD
--host=HOST
--port=PORT
--slave-info 备份复制从服务端,主从信息记录在ibbackup_slave_info文件中
--socket=SOCKET
--no-timestamp不在备份根目录下创建以当前时间戳为名称的新的备份目录
--ibbackup=IBBACKUP-BINARYibbackup二进制路径
--no-lock 禁止表级锁。全部是InnoDB引擎表和不关系二进制日志位置下使用
--scpopt=SCP-OPTIONS指定scp参数

innobackupex参数释义

【3.1.1】普通全备(备份库)

--  (1)自动生成日期命名的文件夹
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 /mysql/backup --(2)指定备份目录,操作步骤日志生成,不生成日期名(规范,推荐使用)
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --parallel=2 /mysql/backup/fullbackup_20190708_1 2>fullbackup_20190708_1.log

备份目录里面的信息如图:

   

(1)backup-my.cnf:备份命令用到的配置选项信息;

(2)xtrabackup_binlog_info:记录当前最新的log position(备份开始这一刻的binlog位置)

(3)xtrabackup_checkpoints:存放备份的起始位置begin_lsn和结束位置的end_lsn,增量备份需要这个lsn

(4)xtrabackup_info:备份的相关信息

(5)xtrabackup_logfile:备份的重做日志文件(无法明文查看)

图示:(1)backup-my.cnf:备份命令用到的配置选项信息;

    

(2)xtrabackup_binlog_info:记录当前最新的log position(备份完成那一刻的binlog位置)

    

(3)xtrabackup_checkpoints:存放备份的起始位置begin_lsn和结束位置的end_lsn,增量备份需要这个lsn 

      

(4)xtrabackup_info:备份的相关信息

    

(5)xtrabackup_logfile:备份的重做日志文件(无法明文查看)

  

【3.1.2】根据innobackupex的全备与还原(备份库)

--------------------备份、全备-------------------------
-- (1)自动生成日期命名的文件夹
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 /mysql/backup --(2)指定备份目录,操作步骤日志生成,不生成日期名(规范,推荐使用)
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --parallel=2 /mysql/backup/fullbackup_20190708_1 2>fullbackup_20190708_1.log

-------------------恢复、还原全备------------------------
#【3.1.2.1】实操
#核心参数,--apply-log , --copy-back --user-memory=1G
   #()准备prepare一个完整备份(--apply-log),即恢复     
   #使用--apply-log的作用是应用重做日志(进行redo/undo操作),使数据库文件处于一致状态     
   #执行后,xtrabackup_checkpoints文件由backup_type=full-backuped 变为backup_type=full-prepared
      innobackupex --apply-log --user-memory=1G /mysql/backup/fullbackup_20190708_1
  
  #(2)关闭数据库,并备份删除现有数据库目录及文件
      service mysql stop
      mv /mysql/data/3306/data /mysql/data/3306/data_old
      mkdir /mysql/data/3306/data
      chown -R mysql:mysql /mysql/data/3306/data
  #()copy数据文件,需要原来的目录为空(--force-non-empty-directories,这个参数可以覆盖)-- 核心参数 --copy-back

      innobackupex --defaults-file=/mysql/data/3306/my.cnf --copy-back --parallel=2 /mysql/backup/fullbackup_20190708_1
  #()修改权限(很重要!!!),启动数据库,验证数据是否恢复

      chown -R mysql:mysql /mysql/data//data
      service mysql start
      mysql -uroot -p123456
      show databases;

还原恢复小结:

  (1)文件权限

    xtrabackup以rw模式打开innodb数据文件,用内置的innodb库来打开文件

  (2)复制数据文件

    xtrabackup每次读写1M的数据,1M/16K=64页;如果是redo,每次512K

  (3)备份安全问题

    --throttle  #限制每次的IO操作数据

    值为数字,1,,1,20,单位不是M。20M可能是30M/S

  (4)主从环境下如何备份?从库备份如下:

 加了2个参数 --slave-info      --safe-slave-backup,会记录GTID和binlog changer信息 > xtrabackup_slave_info   

innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp --slave-info --safe-slave-backup --parallel= /mysql/backup/fullbackup_20190708_1 >fullbackup_20190708_1.log

【3.1.3】根据innobackupex备份还原多个数据库(备份库)

#核心参数 --databases="test1 test2 test3 ",注意test3后面有空格!
#【】备份多个数据库
innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp --databases="test1 test2 test3 " --parallel= /mysql/backup/partbackup_1 #【】恢复数据库/还原数据库(该步骤还未实测通过,还会有数据不一致问题
#注意,不要直接还原,容易覆盖现有数据库。为了安全建议先全备一次 #【2.1】prepare阶段
innobackupex --apply-log /mysql/backup/partbackup_1
#【2.2】停服、删除需要恢复数据库的现有目录
service mysql stop
     #注意,下面做删除前可以先拷贝一份,以免出问题
rm -rf /mysql/data//data/test1
rm -rf /mysql/data//data/test2
rm -rf /mysql/data//data/test3
#或者可以sql删除 drop database test1;
#【2.3】copy阶段,部分备份和恢复,不能直接用--copy-back,只能手工复制响应的数据库+ibdata数据字典
cp -r /mysql/backup/partbackup_1/test1 /mysql/data//data
cp -r /mysql/backup/partbackup_1/test2 /mysql/data//data
cp -r /mysql/backup/partbackup_1/test3 /mysql/data//data
#需要删除ibdata*数据字典文件,用备份文件覆盖它
rm -f /mysql/data//data/ibdata*
cp -r /mysql/backup/partbackup_1/ibdata* /mysql/data//data
#【2.4】改权限,启动数据库,验证数据
chown -R mysql:mysql /mysql/data//data
service mysql start mysql
    #验证数据 应该要全部查一次,比如Select * from test1.test11;
 

【3.1.4】根据innobackupex备份还原多个表(备份表)

---------------备份表---------------

#核心参数--database="test1.test11 test2.test21 test3.test31 "
#【】备份多个库下的不同表
innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp --databases="test1.test11 test2.test21 test3.test31 " --parallel= /mysql/backup/tab_backup_1 #核心参数--include="test1.test11,test1.test12"
#[warning]--include选项传递给xtrabackup --tables,对每个库中的每个表逐一匹配,因此会创建所有的库目录,不过是空的目录。[/warning]
#【】备份多个库下的不同表
innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp --include="test1.test11,test1.test12,test2.test21" --parallel= /mysql/backup/tab_backup_2 #核心参数--table-file=/mysql/backup/tablename.txt
[warning]该选项传递给xtrabackup --tables-file,与--table选项不同,只有要备份的表的库才会被创建。[/warning]
#【】备份指定文件中的表
innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp ----table-file=/mysql/backup/tablename.txt --parallel= /mysql/backup/tab_backup_3 #/mysql/backup/tab_backup_1 文件格式如下(注意,文末不要多加行,也不要在行末加空格,否则可能全备)
test1.test11
test2.test22 -------------还原表/恢复表(复制文件方式,容易不一致,不能使用!!!)--------------这里只演示一个【1】 #【1】prepare阶段
  innobackupex --apply-log /mysql/backup/tab_backup_1
#【2】停服,删除对应表目录与文件
    service mysql stop   #建议备份一份再删除
  #mkdir -p /mysql/backup/tempbak
  #cp -r /mysql/data/3306/data/test1 /mysql/backup/tempbak
    rm -f /mysql/data/3306/data/test1/test11.*
    rm -f /mysql/data/3306/data/test2/test21.*
    rm -f /mysql/data/3306/data/test3/test31.*
  #或者可以直接写sql,使用drop table 一一删除。 #【3】copy阶段,还原表,不能直接用--copy-back,只能手工复制表文件+ibdata*数据字典。
  cp -r /mysql/backup/tab_backup_1/test1/* /mysql/data/3306/data/test1/
  cp -r /mysql/backup/tab_backup_1/test2/* /mysql/data/3306/data/test2/
  cp -r /mysql/backup/tab_backup_1/test3/* /mysql/data/3306/data/test3/
  rm -f /mysql/data/3306/data/ibdata*
  cp -r /mysql/backup/tab_backup_1/ibdata* /mysql/data/3306/data/
#【4】改权限,启动数据库,验证数据
  chown -R mysql:mysql /mysql
  service mysql start
  #验证数据 应该要全部查一次,比如Select * from test1.test11;
 
-------------还原表/恢复表(表空间导入方式,推荐)--------------这里只演示一个【1】
【1】prepare阶段
  innobackupex  --apply-log --export /mysql/backup/tab_backup_1
  #此时会对应生成表的.exp和.cfg文件 【2】导入表操作
  【2.1】销毁表空间(假如误操作truncate了可以使用该办法。drop的话,可以去下载mysql utilities,用mysqlfrm解析frm重新创建表后再用该办法)
      #drop table test1.test11;
      alter table test1.test11 discard tablespace;   【2.2】复制文件(copy test1.test11表的ibd、cfg、exp文件)
      cp -r /mysql/backup/tab_backup_1/test1/test11.ibd /mysql/data/3306/data/test1/
      cp -r /mysql/backup/tab_backup_1/test1/test11.cfg /mysql/data/3306/data/test1/
      cp -r /mysql/backup/tab_backup_1/test1/test11.exp /mysql/data/3306/data/test1/
  【2.3】导入表空间
      
    #先授权 
      chown -R mysql:mysql /mysql/data/3306/data
      alter table test1.test11 import tablespace;
 【3】授权、验证数据
  select * from test1.test11;
    

【3.1.5】根据innobackupex增量备份(全库)

------------------------------增量备份操作-------------------------------------------

#核心参数 (1)--incremental 增量选项  (2)--incremental-basedir=  基于哪次备份的增量,参数值可以是全备目录,可以是上一层增量备份目录 
#核心参数 (3)--rsync 是用来加速恢复的,最小化flush tables with read lock的阻塞时间,用rsync来拷贝非innodb的文件,有myisam才用。增量也可以用
#【】完备
innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= --no-timestamp /mysql/backup/full_1 #【】构造增量数据1
use test1;
create table test13(id int,str varchar(50));
insert into test13 values(1,'test13_1'),(2,'test13_2');
commit; #【3】开始增量备份1
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/full_1 /mysql/backup/diff_1 #【4】构造增量数据2
use test2;
create table test23(id int,str varchar(50));
insert into test23 values(1,'test23_1'),(2,'test23_2');
commit;
#【5】开始增量备份2(注意,这里的 --incremental--basedir= 的值如果是全备,那么就是差异备份。 如果值是上一次增量备份,那就是基于该目录的增量数据备份)

基于全备的差异备份:
  #innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/full_1 /mysql/backup/diff_2 基于上一次增量的增量备份:
  innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/diff_1 /mysql/backup/diff_2
#【6】构造增量数据3
use test3;
create table test33(id int,str varchar(50));
insert into test33 values(1,'test33_1'),(2,'test33_2');
commit; #【7】开始增量备份3:基于增量备份1的增量备份(也就是把 --incremental-basedir=/mysql/backup/diff_1)
  innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/mysql/backup/diff_1 /mysql/backup/diff_3

------------------------------增量还原操作/增量恢复操作-------------------------------------------
#核心参数 --redo-only(只需redo不作undo) ,--apply-log ==>2个整合起来就是 --apply-log-only
【1】测试,先删除一些数据
  drop table test1.test11;
  drop table test2.test23;
  drop table test3.test33; 【2】全备恢复
  innobackupex --apply-log --redo-only /mysql/backup/full_1 【3】增量备份1恢复
  innobackupex --apply-log --redo-only /mysql/backup/full_1 --incremental-dir=/mysql/backup/diff_1 【4】增倍备份2恢复(最后一次增量恢复)
  innobackupex --apply-log /mysql/backup/full_1 --incremental-dir=/mysql/backup/diff_2 【5】合并,准备完全恢复
  innobackupex --apply-log /mysql/backup/full_1 【6】数据文件还原
  (1) service mysql stop
  (2) cd /mysql/data/3306
  (3) mv data data_bak1
  (4) mkdir data
  (5) chown -R mysql:mysql /mysql
  (6) innobackupex --defaults-file=/mysql/data/3306/my.cnf --copy-back --rsync /mysql/backup/full_1
    #--rsync是用来加速恢复的,最小化flush table with read lock的阻塞时间,用rsync来拷贝非innodb数据。

【3.1.6】压缩备份

#--compress 压缩选项
  compress[=LEVEL]选项传递给xtrabackup子进程。压缩级别在0-.1快速压缩,9最佳压缩,0不压缩。默认为1.
#--compress-threads= 压缩线程 --------------开始压缩备份------------------------
#【1】压缩备份
innobackupex --defaults-file=/mysql/data//my.cnf --user=root --password= \
--compress --compress-threads= --no-timestamp --parallel= /mysql/backup/compress_1 #【2】关闭数据库、删除数据文件
service mysql stop
cd /mysql/data/3306
rm -rf data_bak
mv data data_bak
mkdir data
chown -R mysql:mysql data #【3】解压备份文件
需要提前下载qpress(下载链接点击 or 直接下载
解压tar -xvf
cp qpress /usr/bin
innobackupex --decompress --user-memory=1G /mysql/backup/compress_1
#【4】prepare阶段
innobackupex --apply-log --user-momory=1G /mysql/backup/compress_1 #【5】copy文件
innobackupex --defaults-file=/mysql/data/3306/my.cnf --copy-back /mysql/backup/compress_1 #【6】授权、起服、核验数据
chown -R mysql:mysql /mysql
service mysql start

【3.1.7】tar打包备份

【】流备份打包
(1):innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --no-timestamp --stream=tar /mysql/backup/tar_1 >/mysql/backup/tar20190716_1.tar

(2):innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=root --password= --no-timestamp --stream=tar /mysql/backup/tar_2 | gzip > /mysql/backup/tar20190716_2.tar.gz

【3.1.8】加密解密的方式备份还原

--待写

 

【4】使用 xtrabackup备份

相关参数

  

 --rebuild-indexes   Rebuild secondary indexes in InnoDB tables after applying #默认为FLASE
--rebuild-threads=# Use this number of threads to rebuild indexes in a --rebuild-indexes. #默认为1

【4.1】xtrabackup的全备

#备份核心参数,--backup 备份必加参数,--no-timestamp --> 变成了 --target-dir=/mysql/backup/full_2
#还原核心参数,--apply-log --> 变成了 --prepare #【】备份
xtrabackup --defaults-file=/mysql/data//my.cnf --user=root --password= --backup --target-dir=/mysql/backup/full_2 #【2】还原
【2.1】停服备份数据
service mysql stop
cd /mysql/data/3306
rm -rf data_bak
mv data data_bak
mkdir data
chown -R mysql:mysql data 【2.2】prepare阶段
xtrabackup --defaults-file=/mysql/data/3306/my.cnf --prepare --user-memory=1G --target-dir=/mysql/backup/full_2 【2.3】copy阶段
#rsync ,(1)-a:归档模式,保持文件原有属性和所有子目录(2)-P:传输进度
#(3)-v 传输时的进度信息 (4)-r 递归 (5)-z传输时压缩 rsync -avrP /mysql/backup/full_2/* --exclude='xtrabackup_*' /mysql/data/3306/data/ 【2.4】授权,启动mysql服务
chown -R mysql:mysql /mysql
service mysql start #【3】主从情况下如何备份:主从模式,主提供服务,从提供备份
#参数:--slave-info --safe-slave-backup,会记录gtid和binlog changer信息>xtrabackup_slave_info 【3.1】从库备份
xtrabackup --defaults-file=/mysql/data/3306/my.cnf --user=root --password=123456 --backup --slave-info --safe-slave-backup --target-dir=/mysql/backup/slave_full_2
【3.2】还原与【2】中还原相同

  

参考文章

  博客园潇湘隐者:https://www.cnblogs.com/kerrycode/p/9236574.html

  博客园:https://www.cnblogs.com/imweihao/p/7290026.html

(4.16)mysql备份还原——物理备份之XtraBackup实践的更多相关文章

  1. (4.15)mysql备份还原——物理备份之XtraBackup的下载与安装

    关键词:mysql物理备份,XtraBackup,XtraBackup安装,XtraBackup下载 实践链接:https://www.cnblogs.com/gered/p/11147193.htm ...

  2. Mysql备份与恢复(1)---物理备份

    数据库对企业来说最重要的莫过于其中的数据,所以做好数据库的备份是一个不可或缺的工作.数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小 ...

  3. 说明Oracle数据库逻辑备份和物理备份的方式。

    说明Oracle数据库逻辑备份和物理备份的方式. 解答:Oracle备份包括逻辑备份和物理备份. 1).逻辑备份 数据库的逻辑备份包含读一个数据库记录集和将记录集写入文件. a.输出(Export)输 ...

  4. ORACLE数据库的备份分为物理备份和逻辑备份两种。

    物理备份是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带.可以使用 Oracle 的恢复管理器(Recovery Manager,RMAN)或操作系统命令进行数据库的物 ...

  5. MYSQL的备份与恢复--物理备份xrabackup

    目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...

  6. (十一)mysql备份之物理备份xtrabackup

    (1)备份介绍 (2)下载安装xtrabackup 官网:https://www.percona.com/downloads/XtraBackup/LATEST/ 我选择yum安装,centos版本7 ...

  7. mysqldump 逻辑备份和物理备份

    逻辑备份 逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现. 工具:mysqldump 特点: 1.可移植性比较强 2.备份和恢复的花费时间长,不适用于大型业务系统 物理 ...

  8. (4.14)mysql备份还原——mysql物理热备工具之ibbackup

    关键词:mysql热备工具,ibbackup,mysql物理备份工具 1. 准备 ibbackup 是 InnoDB 提供的收费工具,它支持在线热备 InnoDB 数据,主要有以下特性: * Onli ...

  9. MySQL 逻辑物理备份测试

    目录 逻辑备份 mysqldump 普通备份 mysqlpump 并行备份 mysqlpump 压缩并行备份 mydumper 并行备份 mydumper 并行压缩备份 小结 物理备份 xtrabac ...

随机推荐

  1. linux下ssh免秘钥登录

    1.检查防火墙是否关闭 (1)切换到root用户 (2)查看防火墙状态 service iptables status 这是没有关闭 (3)设置关闭 service iptables stop 2.检 ...

  2. FZU - 2103 Bin & Jing in wonderland

    FZU - 2103 Bin & Jing in wonderland 题目大意:有n个礼物,每次得到第i个礼物的概率是p[i],一个人一共得到了k个礼物,然后按编号排序后挑选出r个编号最大的 ...

  3. nginx配置跨域问题

    1.跨域指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安全限制. 2.浏览器在执行脚本的时候,都会检查这个脚本属于哪个页面,即检查是否同源,只 ...

  4. docker下MySQL镜像的使用方法

    预习: 使用到的docker命令: docker images   显示本地有的镜像 docker pull +镜像名称   从docker hub上面拉取镜像 docker run    --nam ...

  5. Xshell安装教程及Xshell安装程序集组件时出错的解决方法

    部分小伙伴在安装Xshell的时候可能会遇到这个问题:“Xshell5安装程序集组件{0D7E67F6-1A6A-3A26-AF95-B8E83DDCCC3F}时出错.HRESULT0x80070BC ...

  6. Eureka 服务注册列表显示IP问题研究

    在研究Spring Cloud的过程中,本地搭建好Eureka注册中心之后,发现Eureka服务页面显示的服务是机器名:端口的格式,并不是IP+端口的形式. 如下图: 具体搭建过程我就不再贴代码了,参 ...

  7. 线程系列2--Java线程的互斥技术

    java的多线程互斥主要通过synchronized关键字实现.一个线程就是一个执行线索,多个线程可理解为多个执行线索.进程有独立的内存空间,而进程中的线程则是共享数据对象资源.这样当多个执行线索在C ...

  8. C++入门经典-例7.1-对象之访问类成员

    1:建立一个类CPerson. (1)在person.h文件中代码: class CPerson { public: //数据成员 int m_iIndex; ]; short m_shAge; do ...

  9. Leetcode题目21.合并两个有序链表(简单)

    题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1->1-& ...

  10. tp5无限极分类,限制横向传递(同一体系相互传递)

    1.use fast\Tree; 2. // 判断同线账号(利用当前账号的id查询上下级集合) $alluser = Userinfo::all();  //查询所有用户数据 $tree = Tree ...