菜鸟学Linux 第080篇笔记 mysql备份 xtrabackup

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:

菜鸟学Linux 第080篇笔记 mysql备份 xtrabackup




内容总览

percona-xtrabackup 备份软件安装

使用软件备份数据库

备份二进制日志文件

增量备份数据库

还原数据库

还原二进制日志文件操作

使用该软件进行单表备份(未验证,非本人所写)







二进制日志相关的几个选项

innodb_support_xa={TRUE|FALSE}

默认为开启

sync_binlog=0表示不同步

备份时设定为1






percona

ibbackup: InnoDB online physical backup (商业软件)

full

incremental

MyISAM: warm backup, full


$5000



mysqldump (对大数据库来说,备份和恢复时间较长)


LVM -->  mylvmbackup(perl scripts)

几乎热备,,但还是会停一点点



percona:

xtrabackup (开源)

xtradb: innodb的增强版 (推荐使用此引擎)

innodb



www.percona.com 下载rpm安装包



1.安装xtrabackup

# rpm -ivh percona-xtrabackup-2.0.0-417.rhel5.i386.rpm



2. 实现完全备份Mysql 数据库

# innobackupex --help  帮助信息

--user=Mysql-username



完全备份

(注意备份前 my.cnf 配置里必须已经配置了 datadir=/path/file 数据目录)

# innobackupex --user=root --password=mysql /backup/



备份的文件解析

数据库文件夹

backup-my.cnf   备份命令用到的配置选项信息


ibdatal  表空间


xtrabackup_binlog_info  二进制日志文件名 和位置


xtrabackup_binary   备份使用的什么工具执行的


xtrabackup_logfile   数据


xtrabackup_checkpoints  备份信息(根据此来做增量备份)




3. 还原

准备工作

# innobackupex --apply-log /backup/2017-01-13_20-02-44/


mysql> FLUSH LOGS;


# cp mysql-bin.000010 /root/


模拟数据损坏

# service mysqld stop


# rm -rf /mydata/data/*


还原数据库

# innobackupex --copy-back /backup/2017-01-13_20-02-44/


# chown -R mysql.mysql /mydata/data/*


# service mysqld start


即时点还原

# mysqlbinlog mysql-bin.000001 > /tmp/binary-log.sql


mysql> SET sql_log_bin=0;


mysql> SOURCE /tmp/binary-log.sql


mysql> SET sql_log_bin=1;

(完全备份恢复完成)



4.增量备份

增量备份要基于完全备份,注意如果当完全备份恢复一次后,

需要再对其做完全备份,因为之前的完全备份已经对当前恢复的数据库无效

切记切记


完全备份(假设我之前没有做过完全备份这是第一次)

# innobackupex --user=root --password=mysql /backup


增量备份

# innobackupex --user=root --password=mysql --incremental 

/backup/ --incremental-basedir=/backup/2017-01-13_20-58-02/

(此为一条命令)


如第二次增量备份的话就要使用第一次增量备份的路径

即 --incremental-basedir=第一次的增量备份路径



5. 还原 完全备份+增量备份 

准备完全备份

# innobackupex --apply-log --redo-only /backup/2017-01-13_20-58-02/


准备增量备份

# innobackupex --apply-log --redo-only /backup/2017-01-13_20-58-02/

 --incremental-dir=/backup/2017-01-13_21-06-29/

(此为一条 命令  注意这里使用的是 --incremental-dir 不要混了)



模拟mysql数据库损坏

# service mysqld stop 

# rm -rf /mydata/data/*



还原备份

# innobackupex --copy-back /backup/2017-01-13_20-58-02/

(指定时要指的是完全备份目录)


# service mysqld start


如果还有二进制日志还原 上边已经有了,,这里不再重述

注意还原二进制日志时,一定要把二进制日志记录给关闭

要不然你还原的操作都被记录到新的数据库里边了而这个没有什么用

你懂得,,

此时增量备份和完全备份恢复完成




重点:

注意这里未详细讲解二进制日志备份,这个是非常重要的,在恢复到即时点数据库时

因为生产环境中二进制日志文件和数据文件理应分开的,不会放在同一个硬盘上

还有备份二进制文件时要先将mysql服务器停掉再进行备份


还原二进制日志文件之前要临时停掉二进制日志记录功能

SET sql_log_bin=0;





此下边章节非个人所写 也未验证

6、导入或导出单张表


默认情况下,InnoDB表不能通过直接复制表文件的方式在mysql服务器之间进行移植,即便使用了innodb_file_per_table选项。而使用Xtrabackup工具可以实现此种功能,不过,此时需要“导出”表的mysql服务器启用了innodb_file_per_table选项(严格来说,是要“导出”的表在其创建之前,mysql服务器就启用了innodb_file_per_table选项),并且“导入”表的服务器同时启用了innodb_file_per_table和innodb_expand_import选项。


(1)“导出”表

导出表是在备份的prepare阶段进行的,因此,一旦完全备份完成,就可以在prepare过程中通过--export选项将某表导出了:

# innobackupex --apply-log --export /path/to/backup


此命令会为每个innodb表的表空间创建一个以.exp结尾的文件,这些以.exp结尾的文件则可以用于导入至其它服务器。


(2)“导入”表

要在mysql服务器上导入来自于其它服务器的某innodb表,需要先在当前服务器上创建一个跟原表表结构一致的表,而后才能实现将表导入:

mysql> CREATE TABLE mytable (...)  ENGINE=InnoDB;


然后将此表的表空间删除:

mysql> ALTER TABLE mydatabase.mytable  DISCARD TABLESPACE;


接下来,将来自于“导出”表的服务器的mytable表的mytable.ibd和mytable.exp文件复制到当前服务器的数据目录,然后使用如下命令将其“导入”:

mysql> ALTER TABLE mydatabase.mytable  IMPORT TABLESPACE;

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1891911如需转载请自行联系原作者

Winthcloud
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
521 10
|
9月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
606 17
|
9月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
246 18
|
9月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
551 11
|
9月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
285 10
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
439 158
|
5月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1022 152
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
811 156
|
5月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
411 156