Xtrabackup备份MySQL

一、安装Xtrabackup

1
2
3
4
# wget --no-check-certificate http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
# rpm -ivh percona-release-0.1-4.noarch.rpm
# yum list | grep percona
# yum -y install percona-xtrabackup-24


二、安装MySQL


1.安装MySQL

1
2
3
# yum -y install http://repo.mysql.com//mysql57-community-release-el7-9.noarch.rpm
# yum list |grep mysql-community
# yum -y install mysql mysql-server mysql-devel


2.更改时间戳设置

1
2
3
4
# cat /var/log/mysqld.log |grep "timestamp"
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
# vi /etc/my.cnf
explicit_defaults_for_timestamp=true  ##显示指定默认值为timestamp类型的字段


3.启动MySQL

1
2
# systemctl start mysqld
# systemctl status mysqld


4.配置MySQL密码

1
2
3
# mysql 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


a.新版本MySQL安装完成后会生成临时的初始密码

1
2
# grep 'temporary password' /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: qhAnfco2o)HB


修改MySQL密码

注意:MySQL 5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。


MySQL官网MySQL 5.7密码策略详细说明:

http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy


b.修改密码策略

1
2
3
4
5
# vi /etc/my.cnf
validate_password_policy = LOW              ##密码长度不少于8位即可
# systemctl restart mysqld
# mysql -u root -p
mysql> set password for 'root'@'localhost'=password('12345678');


c.官方数据库示例

1
2
3
4
5
6
7
8
9
10
11
# wget http://downloads.mysql.com/docs/sakila-db.tar.gz
# tar -zxvf sakila-db.tar.gz 
sakila-db/
sakila-db/sakila-data.sql
sakila-db/sakila-schema.sql
sakila-db/sakila.mwb
[root@localhost ~]# pwd
/root
# mysql -u root -p
mysql> source /root/sakila-db/sakila-schema.sql   ##还原数据库结构
mysql> source /root/sakila-db/sakila-data.sql    ##将数据写入数据库


三、innobackupex常用命令

--backup      默认选项

--defaults-file  指定要备份的mysql实例的my.cnf文件,必须为第一个选项

--port          端口

--socket  连接套字节的位置,默认为/var/lib/mysql/mysql.sock

--host          主机

--no-timestamp  指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹

--target-dir  指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹

--use-memory     指定备份所用内存大小,默认为100M,与--apply-log同用

--apply-log      从备份恢复

--apply-log-only 在恢复时,停止恢复进程不进行LSN,只使用log

--copy-back      复制备份文件

--incremental    建立增量备份

--incremental-basedir=DIRECTORY

指定一个全库备份的目录作为增量备份的基础数据库

--incremental-dir=DIRECTORY

指定增量备份与全库备份合并建立一个新的全备目录

--prepare        从backup恢复

--compress       压缩选项


四、xtrabackup备份后的主要文件

(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;


每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。


(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。


(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。


(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件。


(5)backup-my.cnf —— 备份命令用到的配置选项信息。


五、Innobackupex备份


1.创建全备

1
2
3
# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=12345678 /backup/
......
completed OK!


2.应用全备日志

1
2
3
# innobackupex --apply-log /backup/2017-04-03_12-45-44/
......
completed OK!


3.查看备份状态

1
2
3
4
5
6
7
# cat /backup/2017-04-03_12-45-44/xtrabackup_checkpoints 
backup_type = full-prepared           ##全备
from_lsn = 0                       ##备份开始点
to_lsn = 9692219                   ##备份结束点
last_lsn = 9692228
compact = 0
recover_binlog_info = 0


4.查看二进制日志事件信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# cat /backup/2017-04-03_12-45-44/xtrabackup_info 
uuid = 694e5590-1828-11e7-81d2-000c291bd2a1
name = 
tool_name = innobackupex
tool_command = --defaults-file=/etc/my.cnf --user=root --password=... /backup/
tool_version = 2.4.6
ibbackup_version = 2.4.6
server_version = 5.7.17
start_time = 2017-04-03 21:34:09
end_time = 2017-04-03 21:34:13
lock_time = 0
binlog_pos = 
innodb_from_lsn = 0
innodb_to_lsn = 9692219
partial = N
incremental = N
format file
compact = N
compressed = N
encrypted = N


5.进行全备恢复


a.删除数据库、停止并破坏MySQL

1
2
3
4
5
6
7
# mysql -u root -p
mysql> show databases;
mysql> drop database sakila;
Query OK, 30 rows affected (0.59 sec)
# systemctl stop mysqld
# cp -R /var/lib/mysql /root
# rm -rf /var/lib/mysql


b.恢复全备

1
2
3
4
5
6
7
# innobackupex --copy-back /backup/2017-04-03_21-34-08/
......
completed OK!
# chown -R mysql.mysql /var/lib/mysql
# systemctl start mysqld
# mysql -u root -p
mysql> show databases;


注:如无法启动SQL,可能是SELINUX的问题

1
2
# vim /etc/selinux/config
SELINUX=disabled


六、Innobackupex增量备份


1.创建数据库和表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# mysql -u root -p
mysql> create database abc;
mysql> use abc;
mysql> create table plus (id int(10),name varchar(20),phone char(11),birth date);
mysql> show tables;
mysql> insert into plus values(1,'tom',12345678901,'2001-01-01');
mysql> insert into plus values(2,'jack',12345678911,'2011-11-11');
mysql> select * from plus;
+------+------+-------------+------------+
id   | name | phone       | birth      |
+------+------+-------------+------------+
|    1 | tom  | 12345678901 | 2001-01-01 |
|    2 | jack | 12345678911 | 2011-11-11 |
+------+------+-------------+------------+
2 rows in set (0.00 sec)


2.基于全备进行增量备份

1
2
3
4
5
6
7
8
9
10
# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=12345678 --incremental --incremental-basedir=/backup/2017-04-03_21-34-08/ /backup/001/
......
completed OK!
# cat /backup/001/2017-04-03_21-41-27/xtrabackup_checkpoints 
backup_type = incremental            ##增量备份
from_lsn = 9692219                  ##备份开始点
to_lsn = 9699700                    ##备份结束点
last_lsn = 9699709
compact = 0
recover_binlog_info = 0


3.应用全备日志

1
2
3
# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=12345678 --apply-log-only /backup/2017-04-03_21-34-08/
......
completed OK!


4.应用第一次增量备份日志

1
2
3
# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=12345678 --apply-log-only /backup/2017-04-03_21-34-08/ --incremental-dir=/backup/001/
......
completed OK!


5.基于全备进行第一次增量备份恢复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# systemctl stop mysqld
# rm -rf /var/lib/mysql
# innobackupex --copy-back /backup/2017-04-03_21-34-08/2017-04-03_21-44-08/
......
completed OK!
# chown -R mysql.mysql /var/lib/mysql
# systemctl start mysqld
# mysql -u root -p
mysql> show databases;
mysql> use abc;
mysql> select * from plus;
+------+------+-------------+------------+
id   | name | phone       | birth      |
+------+------+-------------+------------+
|    1 | tom  | 12345678901 | 2001-01-01 |
|    2 | jack | 12345678911 | 2011-11-11 |
+------+------+-------------+------------+
2 rows in set (0.00 sec)


6.基于第一次增量备份进行备份


a.向表中添加数据

1
2
3
4
# mysql -u root -p
mysql> use abc;
mysql> insert into plus values(3,'rose',12345678912,'2012-12-12');
mysql> insert into plus values(4,'jordan',12345678923,'2012-12-23');


b.应用第二次增量备份日志

1
2
3
# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=12345678 --apply-log-only /backup/2017-04-03_21-34-08/ --incremental-dir=/backup/002/
......
completed OK!


c.查看备份状态

1
2
3
4
5
6
7
# cat /backup/002/2017-04-03_21-48-54/xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 9699700
to_lsn = 9696137
last_lsn = 9696146
compact = 0
recover_binlog_info = 0


d.基于全备份和第一次增量备份,恢复第二次增量备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# systemctl stop mysqld
# rm -rf /var/lib/mysql
# innobackupex --copy-back /backup/2017-04-03_21-34-08/2017-04-03_21-50-11/
......
completed OK!
# chown -R mysql.mysql /var/lib/mysql
# systemctl start mysqld
# mysql -u root -p
mysql> show databases;
mysql> use abc;
mysql> select * from plus;
+------+--------+-------------+------------+
id   | name   | phone       | birth      |
+------+--------+-------------+------------+
|    1 | tom    | 12345678901 | 2001-01-01 |
|    2 | jack   | 12345678911 | 2011-11-11 |
|    3 | rose   | 12345678912 | 2012-12-12 |
|    4 | jordan | 12345678923 | 2012-12-23 |
+------+--------+-------------+------------+
4 rows in set (0.00 sec)


七、Xtrabackup备份

1.创建全备

1
2
3
# xtrabackup --defaults-file=/etc/my.cnf --user=root --password=12345678 --backup --target-dir=/backup/full
......
completed OK!


2.应用全备日志

1
2
3
# xtrabackup --defaults-file=/etc/my.cnf --prepare --user=root --password=12345678 --apply-log-only --target-dir=/backup/full
......
completed OK!


3.查看备份状态

1
2
3
4
5
6
7
# cat /backup/full/xtrabackup_checkpoints 
backup_type = log-applied
from_lsn = 0
to_lsn = 9692712
last_lsn = 9692721
compact = 0
recover_binlog_info = 0


4.恢复备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# systemctl stop mysqld
# rm -rf /var/lib/mysql
# cd /backup/full/
# rsync -rvt --exclude 'xtrabackup_checkpoints' --exclude 'xtrabackup_logfile' ./ /var/lib/mysql
sent 151722380 bytes  received 6476 bytes  15971458.53 bytes/sec
total size is 151681109  speedup is 1.00
# chown -R mysql.mysql /var/lib/mysql
# systemctl start mysqld
# mysql -u root -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| abc                |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
+--------------------+
6 rows in set (0.09 sec)


八、Xtrabackup增量备份


1.第一次增量备份

1
2
3
4
5
6
# mysql -u root -p
mysql> create database ball;
mysql> use ball;
mysql> create table superstar (id int(5),name varchar(20),number int(2),city varchar(20),team varchar(10));
mysql> insert into superstar values(1,'Jordan',23,'Chicago','Bulls');
mysql> insert into superstar values(2,'Yao',11,'Houston','Rockets');


2.应用第一次增量备份日志

1
2
3
# xtrabackup --defaults-file=/etc/my.cnf --user=root --password=12345678 --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full
......
completed OK!


3.查看备份状态

1
2
3
4
5
6
7
# cat /backup/inc1/xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 9692712
to_lsn = 9763373
last_lsn = 9763382
compact = 0
recover_binlog_info = 0


4.第二次增量备份

1
2
3
4
# mysql -u root -p
mysql> use ball;
mysql> insert into superstar values(3,'Russell',6,'Boston','Celtics');
mysql> insert into superstar values(4,'Pierce',34,'Boston','Celtics');


5.应用第二次增量备份日志

1
# xtrabackup --defaults-file=/etc/my.cnf --user=root --password=12345678 --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1/


6.查看备份状态

1
2
3
4
5
6
7
# cat /backup/inc2/xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 9763373
to_lsn = 9766964
last_lsn = 9766973
compact = 0
recover_binlog_info = 0


7.准备第一次增量备份

1
2
3
# xtrabackup --defaults-file=/etc/my.cnf  --user=root --password=12345678 --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1
......
completed OK!


8.准备第二次增量备份

1
2
3
# xtrabackup --defaults-file=/etc/my.cnf  --user=root --password=12345678 --prepare --target-dir=/backup/full --incremental-dir=/backup/inc2
......
completed OK!


9.合并恢复备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# systemctl stop mysqld
# rm -rf /var/lib/mysql
# xtrabackup --defaults-file=/etc/my.cnf  --user=root --password=12345678 --copy-back --target-dir=/backup/full
......
completed OK!
# chown -R mysql.mysql /var/lib/mysql
# systemctl start mysqld
# mysql -u root -p
mysql> use ball;
mysql> select * from superstar;
+------+---------+--------+---------+---------+
id   | name    | number | city    | team    |
+------+---------+--------+---------+---------+
|    1 | Jordan  |     23 | Chicago | Bulls   |
|    2 | Yao     |     11 | Houston | Rockets |
|    3 | Russell |      6 | Boston  | Celtics |
|    4 | Pierce  |     34 | Boston  | Celtics |
+------+---------+--------+---------+---------+
4 rows in set (0.00 sec)


注:官方文档地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html


本文转自  结束的伤感  51CTO博客,原文链接:http://blog.51cto.com/wangzhijian/1916112


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Can't create directory 'E:\Repositories\***\db\transactions\138-41.txn':

遇到这种问题应该是迁移SVN库时丢失了文件夹引起的,直接在服务器上找到对应项目的db文件夹,手动创建“transactions”目录和“txn-protorevs”目录即可正常提交。

[它山之石] 一件事情,假设你不能说清楚,十有八九你就做不好

记得有一次开会。我的头儿说了标题所写的这句话,自己深以为然。 有过较多解决这个问题的经历的人可能会有这种感觉,非常多时候,面对一个问题。我们即使没有全然将之想清 楚。也可以基于已有的经验给出一个可以work的解决方式,当然这样的情况下…

【MATLAB统计分析与应用100例】案例013:matlab读取Excel数据,调用nlinfit函数作一元非线性回归

1. 一元线性回归分析效果预览 2. matlab完整实现代码 %读取数据,绘制散点图** HeadData = xlsread(examp08_02.xls); %从Excel文

C语言试题五十三之将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

发布功能完成02《ivx低代码签到系统制作》

制作iVX 低代码项目需要进入在线IDE:https://editor.ivx.cn/ 一、发布功能思考、数据库、服务创建 上一节我们制作了后台的页面,那么此时我们应该需要制作发布功能了,那么在制作之前,我们应该思考一下如何制作这个签到内容发布的…

力扣(leetcode)第26题删除有序数组中的重复项(Python)

26.删除有序数组的重复项 题目链接:26.删除有序数组的重复项 给你一个非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 …

WPF 实现简易北京地铁效果图

本文经原作者授权以原创方式二次分享,欢迎转载、分享。原文作者:眾尋原文地址: https://www.cnblogs.com/ZXdeveloper/p/8600785.html前言这个是百度地图上北京地铁的地址,我们先看下百度上面的效果图;我要实现的内容比…

C#学习笔记-Windows窗体自定义初始位置

根据屏幕大小定义初始位置: (这个不是难,但是最近常常忘记,记着方便查看。) 1 //获取当前屏幕的长和宽2 int ScreenX Screen.PrimaryScreen.Bounds.Width;3 int ScreenY Screen…

[转] java.nio.ByteBuffer中flip、rewind、clear方法的区别

转载 对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限。position:代表对缓冲区进行读写时,当前…

【MATLAB统计分析与应用100例】案例014:matlab读取Excel数据,调用stepwise函数作交互式逐步回归分析

文章目录 1. 交互式逐步回归分析结果预览2. 完整matlab代码1. 交互式逐步回归分析结果预览 2. 完整matlab代码 % 从Excel文件examp08_03.xls中读取数值型数据 xydata = xlsread(examp08_03.xls); y = xydata<

MsSql 自定义分数段,按分数段统计考试人次

--分数段分布 DECLARE levels VARCHAR(100) 10,20,30,40,50,60,70,80,90,100; --自定义分数段 DECLARE paperId VARCHAR(100)0000000000001019--试卷编号 WITH tbTemp AS (--处理分数段SELECT L.levelFROM (SELECT [value] CONVERT(XML, <v> REPLACE(levels, ,, &l…

C语言试题五十四之求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

opencv---颜色空间转化并实现物体跟踪

一、图像处理的基本操作 因为这是第一篇写opencv的笔记&#xff0c;故先讲讲在python下写opencv的基本操作。总共总结了三点如下&#xff1a; 开头一定要加编码声明:-*- coding: utf-8 -*-python下记得引入opencv模块:import cv2要知道如何读取并展示图片,代码如下:# -*- codin…

签到功能完成03《ivx低代码签到系统制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、签到页制作 上一节完成了签到内容的发布&#xff0c;那我们接下来如何制作一个签到页面并且签到呢&#xff1f; 此时我们先创建一个页面叫做签到二维码页面&#xff1a; 随后直接预览这个页面&am…

System.CommandLine参数Argument

前两篇说到Command和Option&#xff0c;这篇说说Argument。Argument的用法和Option很像&#xff0c;只是他的构造和属性有些差别&#xff0c;再就是在运行输入时有区别&#xff0c;接下来看看实现。一个参数//创建根命令 var rootCommand new RootCommand("这是一个命令行…

php 迭代器

迭代器&#xff08;Iterator&#xff09;模式&#xff0c;又叫做游标&#xff08;Cursor&#xff09;模式。GOF给出的定义为&#xff1a;提供一种方法访问一个容器&#xff08;container&#xff09;对象中各个元素&#xff0c;而又不需暴露该对象的内部细节。 百度百科: http:…

Kotlin和Java混合开发总结(基于Kotlin1.3.0版本)

我本来是不想学习kotlin的&#xff0c;但是现在的形势&#xff0c;很多公司都在使用kotlin开发&#xff0c;可以说学会kotlin也是无奈之举&#xff0c;既然是潮流&#xff0c;谷歌也在大力推广&#xff0c;所以还是只能硬着头皮逼迫自己学一下&#xff0c;也能更快适应公司的需…

GitHub中watch、star、fork的作用

star 的作用是收藏&#xff0c;目的是方便以后查找。watch 的作用是关注&#xff0c;目的是等作者更新的时候&#xff0c;你可以收到通知。fork 的作用是参与&#xff0c;目的是你增加新的内容&#xff0c;然后 Pull Request&#xff0c;把你的修改和主仓库原来的内容合并。最早…

【MATLAB统计分析与应用100例】案例015:matlab读取Excel数据,进行值聚类分析

1. 聚类分析轮廓图 2. matlab完整代码 %*****计算例9.1的距离矩阵 x = [1, 2, 6, 8, 11];

C语言试题五十五之m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 m个人的成…