mysql扩展:xtrabackup备份和做主从

使用xtrabackup链接:http://pan.baidu.com/s/1miFpS9M 密码:86dx 链接:http://pan.baidu.com/s/1o7GXBBW 密码:ue2f

xtrabackup 只能备份引擎为innodb的数据

后来innobackeupex 则可以备份mysiam

(使用mysqldump 备份大量数据时会很慢,使用xtrabackup则很快,且把所有数据文件都会备份ls /data/mysql)

备份前保证mysql服务开启

mysql 的数据目录我的放在/data/mysql

一、使用xtrabackup全量备份过程:

1.安装

1.1 安装rpm包(只有下载这个rpm,才能)

rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

1.2 使用yum 下载xtrabackup

yum list |grep xtrabackup (过滤所需的包)

安装: yum install -y percona-xtrabackup

(安装完后使用备份的命令:innobackupex)

2.mysql中创建备份用户:

mysql -uroot -p123456

2.1 GRANT RELOAD,  LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backuser'@'localhost' identified by '123456';

2.2 刷新权限操作(创建完用户时操作)

flush privileges;

(刷新完后退出mysql)

3.备份操作:

3.1 创建备份目录:

mkdir /data/backup

3.2 执行备份命令:

innobackupex --defaults-file=/etc/my.cnf --user=backer --passwork='123456'  /data/backup

(--defaults-file=/etc/my.cnf  这个选项是要放在所有的参数之前,文件路径由每个人设定的配置文件为主,且只有指定它才可以找到datadir

的路径,就是mysql服务的数据目录文件。)

执行命令后报错:

问题原因是它自动的去找它默认的.sock(/var/lib/mysql/mysql.sock)文件。所以在命令中我们要指定我们定义的.sock文件路径。

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456'    -S /tmp/mysql.sock   /data/backup

(/tmp/mysql.sock是我在配置文件my.cnf中定义的)

3.3查看备份文件:

cd /data/backup/

ls

du -sh *

原文件和备份文件对比:

(备份出来的文件不能直接复制至mysql的数据文件直接使用。因为备份文件是有自带格式的。)

4.数据恢复

4.1 停止mysql服务:

/etc/init.d/mysqld  stop

4.2删除mysql数据库文件(datadir的路径文件)

删除原数据:(为了安全还是先把原数据目录文件复制移动)

mv /data/mysql /data/mysql.bak

mkdir /data/mysql

chown -R mysql:mysql /data/mysql    //指定属主和属组,因为原来文件的属主和属组都是mysql

(不/data/mysql/下的所有文件的属主和属组修改成mysql,则在启动服务时无法启动,出现下图的错误:(chown -R  ,-R是针对目录,作用是级联更改)

)

4.3恢复数据:

(1)相当初始化步骤:

innobackupex --use-memory=512M --apply-log

2018-05-13_11-05-07

(

--use-memory= 这个选项是为了加快备份速度的,分配大小主要看我们机器内容的大小而定,--apply-log 指定具体备份数据文件,因为我们备份的数据文件是以时间点命名的。)

(2)真正备份命令:

innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/

2018-05-13_11-05-07

(--copy-back 指定备份文件路径,备份目录为全量备份)

(ibdatal是绝对不能删除的,真正存储数据的文件)

恢复完数据后,数据的属主和数组要修改为mysql 否则启动不了服务。

chown -R /data/mysql

一般业务操作:先备份后做主从,备份尽量在凌晨操作.

!!!!以上这种操作的备份方式是全量备份执行过程!!

二、增量备份

启动mysql服务:且同用上面操作的mysql备份用户。

1.创建备份目录:mkdir /data/backup/

2.先全量备份:

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock /data/backup

3.模拟增量备份:

3.1 创建 一个数据库,并导入数据:

mysql -uroot -p123456 -e "create database dbbackup"

mysqldump -uroot -p123456 zrlog >/tmp/zrlog.sql

mysql -uroot -p123456 dbbackup < /tmp/zrlog.sql

3.2 增量备份:

3.2.1 第一次增量备份

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/全量备份文件(2018-05-13_15-09-13)

(要注意的是--incremental和--incremental-basedir,--incremental-basedir后面加的是全量备份文件的路径)

执行命令后在/data/backup/生成一个文件,大小为新创数据库内容大小:

3.2.1 第二次增量备份

创建 一个数据库,并导入数据:

mysql -uroot -p123456 -e "create database dbbackup2"

mysql -uroot -p123456 dbbackup2 < /tmp/zrlog.sql

备份命令:(和第一次增量备份的命令基本一样,但是最后备份目录是基于第一次增量备份目录之上的)

innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/第一次增量备份目录

此时就有了一个全量备份文件和两个增量备份文件:

4.数据恢复

4.1 停止mysql服务:/etc/init.d/mysqld stop

4.2 删除mysql 原数据

rm -rf /data/mysql/*

4.3 数据恢复加载初始化(类似初始化过程)

4.3.1 先全备初始:

innobackupex --apply-log --redo-only /data/backup/全量备份目录

(innobackupex --apply-log --redo-only /data/backup/2018-05-13_15-09-13 >/tmp1.log 2> /tmp/1.log)

注意:比仅仅全量备份初始化多了 --redo-only 选项,>/tmp1.log 2> /tmp/1.log是把输出放置一个文件(正确或错误输出)

4.3.2 第一次增量备份初始:

innobackupex --apply-log --redo-only /data/backup/全量备份目录  --incremental-dir=/data/backup/第一次增量备份目录

4.3.2 第二次增量备份初始:

innobackupex --apply-log  /data/backup/全量备份目录  --incremental-dir=/data/backup/第二次增量备份目录

(这一步的时候不需要--redo-only选项)

4.3.3 执行应用操作:

innobackupex --apply-log  /data/backup/全量备份目录

4.4 真正备份命令:

innobackupex --copy-back /data/backup/全量备份文件

(执行完命令后可以发现我们增量的数据量文件)

最后执行一下 chown -R mysql:mysql /data/mysql 修改属主和数组,否则启动不了mysql服务。

注意:

1.在进行增量备份的时候,第一次增量备份应基于全量备份之上,第二次基于第一增量备份之上,依次类推。

2.当我们增量备份都是在增加数据没有删除数据的情况下,我们恢复数据时可以直接初始化全量备份和最后一次增量备份即可。最后执行innobackupex --apply-log  /data/backup/全量备份目录和innobackupex --copy-back /data/backup/全量备份文件

一般企业mysql的架构用的是哪一种呢?

主从

innobackex 要求数据库版本在5.6以上

使用 Xtrabackup 在线对MySQL做主从复制

http://seanlook.com/2015/12/14/mysql-replicas/  参考

1.主库操作:

1.1 创建复制账号:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_ali'@'192.168.5.%' IDENTIFIED BY 'slave_ali_pass';

mysql> FLUSH PRIVILEGES;

1.2 赋予备份用户权限:

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkppass';

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';

mysql> FLUSH PRIVILEGES;

1.3.全量备份

innobackupex --defaults-file=/opt/mysql/my.cnf --host=localhost --port=3306 --user=bkpuser --password=${BKP_PASS} /data/backup/mysql

把全量备份目录复制到(做从库)的目录,rsync

2.全量备份(从库上操作)

在恢复的数据库服务器(从库)上:

2.1 恢复准备

$ innobackupex --use-memory=16G --apply-log 全量备份文件

2.2 确认数据库是关闭的,并且datadir,目录下为空

$ innobackupex --defaults-file=/opt/mysql/my.cnf --use-memory=16G --copy-back  全量备份文件

2.3数据执行copy-back完成数据恢复后

修改数据文件的属性:

chown -R mysql.mysql /opt/mysql_data

3.启动从库

3.1 启动数据库,注意看日志

/opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/my.cnf &

提示:如果你不确定这个库是谁的从库,保守起见加上--skip-slave-start启动,兴许能防止数据不一致。

3.2change master

登录数据库:

$ mysql -uslave_ali -p'slave_ali_pass' -S /opt/mysql_data/mysql.sock

mysql> change master to master_host=MASTER_HOST, master_port=3306,

master_user='slave_ali',master_password='slave_ali_pass', master_log_file='mysql-bin.000135', master_log_pos=262484673;

上面的 master_log_file 和 master_log_pos 即是输出的值,也可以在新的数据目录下xtrabackup_binlog_info找到信息。

3.3验证同步延迟

从库执行 show slave status\G

原文地址:http://blog.51cto.com/13589255/2117737

时间: 2024-11-10 11:03:42

mysql扩展:xtrabackup备份和做主从的相关文章

MySQL之Xtrabackup备份恢复数据库-简介

一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup 是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup 有两个主要的工具:xtrabackup.innobackupex xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表. innobackupex是参考了InnoDB Hotbackup的innoback脚

MySQL的xtrabackup备份

################################################################################## ######   ######恢复数据库的时候,需要将备份的日志应用备份的文件中去,让后才能进行恢复 ######备份:innobackupex --user=root --password=banma --defaults-file=/etc/my.cnf  --database=testinnodb  /tmp/data/ ##

Mysql使用xtrabackup备份失败处理

在生产环境中使用的是xtrabackup,对mysql进行备份,每天0点开始备份,周日是全量备份,其他时间是基于周日做的增量备份,通过脚本实现,每天备份完成后会发送短信,突然有一天,备份全部失败,手动执行也无法备份,报错的日志如下: /usr/bin/xtrabackup version 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 97330f7) incremental backup from 70857650

mysql之Xtrabackup备份及增量备份

Xtrabackup 是由percona提供的mysql数据库备份工具,是一个开源的工具,能够对innodb和xtradb数据库进行热备和增量备份,对于MyISAM, 仅支持到温备,对MyISAM使用增量备份时,其实是完全备份.Xtrabackup使用简单,功能强大. 官方地址:http://www.percona.com/software/percona-xtrabackup/ 安装: percona-toolkit-2.2.17-1.noarch.rpm percona-xtrabackup

Mysql中-Xtrabackup备份和恢复应用

关于Xtrabackup(又或innobackupex)的介绍,详细参考官方文档 Xtrabackup安装指南 文件准备 [[email protected] ~]# cd percona-xtrabackup/ [[email protected] percona-xtrabackup]# ls libev-4.15-1.el6.rf.x86_64.rpm percona-release-0.1-4.noarch.rpm percona-xtrabackup-24-2.4.4-1.el7.x8

mysql使用xtrabackup备份

05: 实时增量备份 、 XtraBackup 备份 、 总结和答疑 、 MySQL 主从同步

day05 增量备份一.启用binlog日志 实现 实时增量备份二.使用第3方软件提供的命令做增量备份 +++++++++++++++++++++++++++++++++一.启用binlog日志 实现 实时增量备份1.1 binlog日志介绍:二进制日志, 是MySQL数据库服务日志文件中的一种,记录执行的除查询之外的sql命令.默认没有启用. 查询的sql命令 : show desc select 1.2 启用binlog日志?vim /etc/my.cnf[mysqld]server_id=

Percona Xtrabackup备份mysql (完整备份与增量备份)

Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM 的备份同样需要加表锁).XtraBackup支持所有的Percona Server.MySQL.MariaDB和Drizzle. XtraBackup优势 : 1.无需停止数据库进行InnoDB热备 2.增量备份MySQL 3.流压缩到传输到其它服务器 4.能比较容易地创建主从同步 5.备份MySQL时不会增大服务器

Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份 同样需要加表锁).XtraBackup支持所有的Percona Server.MySQL.MariaDB和Drizzle. XtraBackup优势 : 1.无需停止数据库进行InnoDB热备 2.增量备份MySQL 3.流