首页 > 数据库 >percona-xtrabackup物理备份mysql

percona-xtrabackup物理备份mysql

时间:2022-12-19 18:45:48浏览次数:39  
标签:backup 备份 percona xtrabackup mysql root localhost

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

安装xtrabackup


[root@xiaochen ~]# yum -y install percona-xtrabackup-24
[root@xiaochen ~]# rpm -ql percona-xtrabackup-24 |grep bin
/usr/bin/innobackupex 支持myisam、innodb
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup

xtrabackup 能备份innodb库;innobackupex能备份别的表,但是不支持增量备份
准备需要备份的库和表
mysql> create database xtradb;
mysql> use xtradb
mysql> create table sam(id int,name char(10)) engine=myisam;
mysql> insert into sam values(1,'alice');

mysql> create table inno(id int,name char(10));
mysql> insert into inno values(1,'jack');

注意:mysql 需要对备份目录有rwx的权限
[root@localhost backup]# chown mysql.mysql /backup/
如果不使用root帐号需要对相应帐号授予相应权限
mysql> create user 'xtra'@'localhost' identified by '123';
mysql> grant reload,lock tables,replication client on *.* to xtra;

reload和lock tables权限为了执行flush tables with read lock的操作
replication client权限是为了获取bin log日志的位置

root帐号默认具备相应权限
mysql> select * from mysql.user\G

备份恢复实例:


==完整备份==


[root@localhost ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=localhost --socket=/tmp/mysql.sock /backup/

[root@localhost ~]# innobackupex --databases='zhsq_shunyi' --user=root --password=123 /home/backup/

[root@localhost ~]# ls /backup/2016-12-01_17-33-29/

xtrabackup相关的文件的作用:
(1)xtrabackup_checkpoints——备份类型(如完全或者增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息
每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN,LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info——mysql 服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志时间的位置。
(3)xtrabackup_info——xtrabackup工具在备份时记录的使用工具及数据库信息
(4)backup-my.cnf——备份命令用到的配置选项信息
(5)xtrabackup_logfile——xtrabackup记录innodb事务日志的信息,二进制文件,不能直接看

==增量备份==


模拟数据库发生变化
mysql> insert into inno values(2,'shrek');
mysql> insert into inno values(3,'seker');
mysql> insert into inno values(4,'zorro');

[root@localhost ~]# cat /backup/2016-12-01_17-33-29/xtrabackup_binlog_info
master.000002 1359
增量备份二进制日志
[root@localhost 2016-12-01_17-33-29]# mysqlbinlog --start-position=1359 /backup/master.000002 > /backup/2016-12-01_17-33-29/`date +%F`.sql
[root@localhost 2016-12-01_17-33-29]# vim /backup/2016-12-01_17-33-29/`date +%F`.sql

==模拟数据全部丢失==


[root@mysql ~]# rm -rf /mydata/data/*
[root@mysql ~]# rm -rf /backup/master.*
[root@localhost ~]# killall -9 mysqld

==准备完全备份==


在备份完成后数据尚且不能用于恢复操作,因为备份的数据中可能包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态,使用的日志就是它本身的日志xtrabackup_logfile。
[root@localhost ~]# innobackupex --apply-log /backup/2016-12-01_17-33-29/

在实现“准备”的过程中,innobackupex 通常还可以使用--use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成的速度

==恢复完全备份==


innobackupex命令的--copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器datadir目录中来执行恢复过程。innobackupex通过/etc/my.cnf来获取datadir相关信息,但是它不会覆盖掉data中已存在的文件,所以data目录必须为空
[root@localhost ~]# cat /etc/my.cnf
[mysqld]
log_bin=/backup/master
log_bin_index=/backup/master
datadir=/mydata/data
innodb_file_per_table=1

[root@localhost ~]# rm -rf /usr/local/mysql/data/*
[root@localhost ~]# innobackupex --copy-back /backup/2016-12-01_17-33-29/
[root@localhost ~]# chown -R mysql.mysql /usr/local/mysql/data/
[root@localhost ~]# service mysqld start

==还原增量备份==


为了防止还原时产生大量的二进制日志,在还原时可以临时关闭二进制日志后再还原

mysql> set sql_log_bin=0;
mysql> source /backup/2016.../2016-12-01.sql
mysql> select * from inno;


标签:backup,备份,percona,xtrabackup,mysql,root,localhost
From: https://www.cnblogs.com/xgsh/p/16992831.html

相关文章

  • 搭建LAMP并使用mysql的phpMyadmin图形化管理工具
    #1.环境为centos7系统#2.安装httpd服务yum-yinstallhttp#安装HTTP服务systemctlstarthttpd#启动HTTP服务systemctlenablehttpd#开机启动HTTP服务firewall-c......
  • mysql 奇淫技巧
    1.统计同一张表的多个值啥意思?比如,一张人员表,要同时统计出男女人数,正常来说,我们是要两句sql,但是有没有办法,一句sql直接统计出来呢?有的!!例:SELECTcount(sex='男'OR......
  • MySQL 中 NULL 导致唯一键失效
    最近遇到一个问题,我为一张表中创建了一个唯一键,并且键中字段为NULL,最终导致了唯一约束失效。这里做下分析:首先新建一张表,包含work_no,name,age三个字段:DROPTABLEIFE......
  • mysql服务器查询慢原因分析方法
    ​​MySQL​​​​数据库​​在查询的时候会出现查询结果很慢,超过1秒,项目中需要找出执行慢的sql进行优化,应该怎么找呢,mysql数据库提供了一个很好的方法,如下: mysql5.0以上......
  • 【mysql-01】开放远程连接权限遇到的问题
    环境电脑本机ip:192.xxx.xxx.xxx虚拟机A的ip:192.168.132.100虚拟机B的ip:192.168.132.101虚拟机A上的mysql用户权限情况:如图,在虚拟机A上的mysql开放了本地电脑ip的......
  • MySQL 8.0 还能为你自动创建主键?!
    MySQL8.0.31版本引入了一个参数​​sql_generate_invisible_primary_key​​​,开启这个参数,会在建表时,检查表中是否有主键,如果没有主键,则会自动创建。该参数非常实用,减少了......
  • 数据库文件导入报错"MySQL server has gone away"
    今天mysql从一个mysql库中导入另一个mariadb库中是总是报:ERROR2006(HY000)atline176infile:'xxx.sql':MySQLserverhasgoneaway但我是在当前服务器上导入的......
  • mysql查询当天所有数据sql语句
    mysql查询当天的所有信息:select*fromtestwhereyear(regdate)=year(now())andmonth(regdate)=month(now())andday(regdate)=day(now())这个有一些繁琐,还有简单的写......
  • MySQL用户管理
    1.查看用户及用户权限mysql中的用户信息和权限等都存储在一个名为mysql的数据库中。其中主要用到的是user、db、tables_priv、columns_priv、procs_priv这五张表,最重要的......
  • docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662上面在搭建起来前后端分离版的项目后。......