前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Xtrabackup备份MySQL数据库

使用Xtrabackup备份MySQL数据库

作者头像
yuanfan2012
发布2019-09-17 11:11:52
1.8K0
发布2019-09-17 11:11:52
举报
文章被收录于专栏:WalkingCloud

Xtrabackup是 Percona公司开发的一款开源的能够对innodb和xtradb数据库引擎进行数据库热备的工具,支持MySQL、Percona server和MariaDB,是目前较为受欢迎的主流MySQL数据库备份工具

Xtrabackup有如下几大特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快;


XtraBackup 2.4版本官方下载地址

https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/


下面演示使用Xtrabackup对CentOS7系统上的MySQL数据库进行备份

先提前下载CentOS7版本的Xtrabackup RPM安装包

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

1、下面使用mysql初始安装脚本+编辑好的/etc/my.cnf MySQL配置文件进行安装mysql数据库,脚本如下

当然可以参考之前的文章进行MySQL的手动安装——CentOS6下安装MySQL5.7.25二进制版本

编写的脚本比较简单,可以忽略脚本的健壮性

#!/bin/sh

installMySQL_LOG="/root/installMySQL.log"

echo `date` >>$installMySQL_LOG

groupadd mysql >>$installMySQL_LOG 2>&1

useradd -g mysql -s /sbin/nologin mysql >>$installMySQL_LOG 2>&1

tar -zxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

mv /usr/local/mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql

\cp -f ./my.cnf /etc/my.cnf

mkdir -p /usr/local/mysql/data

chown -R mysql:mysql /usr/local/mysql/

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

cd /usr/local/mysql/bin

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ >>$installMySQL_LOG 2>&1

chkconfig --add mysqld >>$installMySQL_LOG 2>&1

chkconfig mysqld on >>$installMySQL_LOG 2>&1

echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile

echo "export PATH">>/etc/profile

source /etc/profile

if [ ! -e /tmp/mysql.sock ];then

ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock >>$installMySQL_LOG 2>&1

fi

service mysqld stop

sed -i '2i skip-grant-tables' /etc/my.cnf

service mysqld start

/usr/local/mysql/bin/mysql -uroot -e"use mysql;update user set authentication_string = password('Admin@2019') where user = 'root';flush privileges;"

sed -i '/skip-grant-tables/d' /etc/my.cnf

/etc/init.d/mysqld restart >>$installMySQL_LOG 2>&1

/usr/local/mysql/bin/mysql --connect-expired-password -uroot -pAdmin@2019 -e"SET PASSWORD = PASSWORD('MySQL@2019');flush privileges;"

my.cnf配置文件内容如下

2、执行./installMySQL.sh 安装MySQL

3、安装完成后,导入测试数据库脚本test.sql

4、使用常用mysql数据库命令查看

5、表中插入几条测试数据

6、接下来安装Xtrabackup

上传percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm

解决包依赖问题,采用yum localinstall -y percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm 进行安装xtrabackup RPM包

7、接下来使用xtrabackup进行一次数据库的全量备份

创建数据库备份文件存放目录并使用xtrabackup的命令innobackupex进行全量备份

mkdir /backup

innobackupex --defaults-file=/etc/my.cnf --user=root --password=MySQL@2019 --socket=/tmp/mysql.sock /backup

待全库全量备份完成后,可以在/backup目录下以日期时间命名的数据备份文件

8、下面模拟数据库损坏,并使用xtrabackup进行恢复

假设删掉数据库的数据目录

rm -rf /usr/local/mysql/data/

9、准备(prepare)一个完全备份

innobackupex --apply-log /backup/2019-09-14_23-00-01/

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。"准备"的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态

10、还原全量备份

innobackupex --copy-back 从完全备份目录中恢复数据

innobackupex --copy-back /backup/2019-09-14_23-00-01/

cd /usr/local/mysql/data/可以看到还原回来的数据库数据文件

chown -R mysql.mysql /usr/local/mysql/data/ 修改属主属组为mysql.mysql

重启mysqld服务后登录数据库验证数据库是否完全还原回来

可以看到数据库全量备份还原成功

以上是Xtrabackup全量备份操作,下次介绍一下利用Xtrabackup进行增量备份

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档