一键式WordPress应用程序上具有Percona XtraBackup的热备份

目录

  • 介绍
  • 先决条件
  • 步骤1:创建一个非root用户
  • 步骤2:检查存储引擎
  • 步骤3:创建数据库用户进行备份
  • 步骤4:安装Percona XtraBackup
  • 步骤5:创建备份存储目录
  • 步骤6:创建第一个完整备份
  • 步骤7:创建以下增量备份
  • 步骤8:准备用于还原数据库的备份文件
  • 步骤9:还原数据库
  • 进一步的步骤

介绍

Percona XtraBackup是一个免费的基于MySQL的程序,用于进行热备份。它也是开源的。使用Percona XtraBackup,您可以对正在运行的MySQL,MariaDB或Percona Server数据库进行热备份,而无需停止数据库服务或将其设置为只读。这是许多在线业务的一项关键业务功能。

对于使用InnoDB,XtraDB和HailDB存储引擎的数据库,Percona XtraBackup可以执行非阻塞备份。对于使用MyISAM,合并和存档存储引擎的数据库,Percona XtraBackup还可以通过在备份过程结束时短暂地暂停写入来执行备份。

在本文中,我将向您展示如何安装和使用Percona XtraBackup在基于一键WordPress应用程序的Vultr服务器上执行完整和增量热备份。我们将执行完整备份和两个增量备份,然后将数据库还原到三个备份中每个备份的状态。

先决条件

我假设您已从头开始部署一键式WordPress Vultr服务器实例,并已使用SSH作为根用户登录。

步骤1:创建一个非root用户

为了安全起见,建议的做法是创建另一个具有root权限的用户帐户,然后使用该帐户登录并在系统上执行日常操作。您仍然可以使用该sudo命令执行几乎所有的超级用户命令。

1)创建一个新用户。sysuser用您自己的用户名替换。

useradd sysuser

2)设置新用户的密码。sysuser用您自己的用户名替换。

passwd sysuser

3)向新用户授予root权限。

visudo

查找下面的段落。

## Allow root to run any commands anywhere
root     ALL=(ALL)     ALL

在此段落的正下方添加一行,sysuser并用您自己的用户名替换。

sysuser     ALL=(ALL)     ALL

保存并退出。

:wq

4)切换到您的新用户帐户。

logout

然后,使用新用户的凭据从您的终端窗口登录。

步骤2:检查存储引擎

默认情况下,MySQL根登录名保存在VPS中/root/.my.cnf。使用以下命令在您的终端中显示密码。

sudo cat /root/.my.cnf

使用屏幕上显示的凭据登录到MySQL控制台。

mysql -u root -p

在MySQL Shell中,运行以下命令。

SHOW DATABASES;

屏幕上将显示所有MySQL数据库。名为like wp5273512的数据库是我们要备份的WordPress数据库。在以下命令中,wp5273512用您自己的命令替换:

USE wp5273512;

检查每个表的存储引擎:

SHOW TABLE STATUS\G

您会发现WordPress MySQL数据库中的所有表都使用InnoDB存储引擎,该引擎非常适合通过Percona XtraBackup执行热备份。

对于使用MyISAM存储引擎的任何其他MySQL数据库,我们仍然可以通过短暂暂停写入来使用Percona XtraBackup备份它们。

步骤3:创建数据库用户进行备份

仍在MySQL Shell中,使用以下命令创建专用的数据库用户进行备份。请记住用您自己的用户名xbuser和密码替换数据库用户名和密码xbpasswd

CREATE USER 'xbuser'@'localhost' IDENTIFIED BY 'xbpasswd';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER, CREATE, INSERT, SELECT ON *.* TO 'xbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

上面授予的特权对于完整的Percona XtraBackup功能是必需的。您可以删除其中一些功能,以减少功能并提高安全性。有关更多详细信息,请参见Percona XtraBackup 官方网站

步骤4:安装Percona XtraBackup

您可以很容易地从Percona的RPM存储库安装Percona XtraBackup:

sudo yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
sudo yum install -y percona-xtrabackup

步骤5:创建备份存储目录

首先,您需要将用户添加sysusermysql组中。sysuser用您自己的用户名替换。

sudo gpasswd -a sysuser mysql

创建一个目录来存储完整备份。

sudo mkdir -p /dbbackup/full/

创建另一个目录来存储增量备份。

sudo mkdir -p /dbbackup/inc/

将这些目录的所有者更改为user sysuser和group sysuser

sudo chown -R sysuser:sysuser /dbbackup

注销以使这些更改生效。

logout

然后,sysuser再次登录。

步骤6:创建第一个完整备份

XtraBackup主要由XtraBackup程序和innobackupexperl脚本组成。通常,innobackupex为了方便起见,您可以使用perl脚本执行各种操作过程。

输入以下命令以创建第一个完整备份。请记住用您自己的xbuser数据库用户名,数据库用户密码xbpasswd和完整备份目录/dbbackup/full/替换。

sudo innobackupex --user=xbuser  --password=xbpasswd /dbbackup/full/

正确执行此命令后,您将看到确认消息“ innobackupex:已完成,确定!”。在输出的最后一行。

此完全备份的所有新创建的文件都将存储在带有时间戳的目录下/dbbackup/full/。例如,/dbbackup/full/2015-05-22_05-45-54

步骤7:创建以下增量备份

输入以下命令以创建第一个增量备份。相应地在命令中替换变量。

sudo innobackupex --user=xbuser  --password=xbpasswd --incremental --incremental-basedir=/dbbackup/full/2015-05-22_05-45-54 /dbbackup/inc/

再次,您将看到“ innobackupex:完成,确定!” 命令成功执行时在输出的末尾。备份文件将存储在带有时间戳的目录下/dbbackup/inc/

输入以下命令以创建第二个增量备份。相应地替换命令中的变量。

sudo innobackupex --user=xbuser  --password=xbpasswd --incremental --incremental-basedir=/dbbackup/inc/2015-05-22_05-48-12 /dbbackup/inc/

成功后,您将看到“ innobackupex:完成OK!” 再次留言。/dbbackup/inc/再次检查文件夹以查看备份文件。

步骤8:准备用于还原数据库的备份文件

必须先准备所有数据库备份文件,然后才能将其用于还原数据库。

注意:在执行准备和还原过程之前,最好将整个备份目录的副本(例如/dbbackup/)保留在另一个位置,以防由于错误导致备份文件损坏。

在每个备份目录中,都有一个名为的文件xtrabackup_checkpoints,其中包含备份类型以及开始和结束日志序列号(from_lsnto_lsn)。您可以使用这些数字来阐明数据库还原策略。看下面的例子。

xtrabackup_checkpoints第一次完整备份的文件中,我有:

backup_type = full-backuped
from_lsn = 0
to_lsn = 2932478

xtrabackup_checkpoints第一个增量备份的文件中,我有:

backup_type =incremental
from_lsn = 2932478
to_lsn = 2970177

xtrabackup_checkpoints第二个增量备份的文件中,我有:

backup_type = incremental
from_lsn = 2970177
to_lsn = 3004672

简而言之,您应该以递增的lsn顺序处理每个备份。如果lsn序列不完整或混乱,则可能会丢失数据。

注意:以下命令涉及三个目录,用您自己的目录替换。

要将数据库还原到第一次完全备份的状态,需要使用以下命令准备备份文件:

sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54

要将数据库还原到第一个增量备份的状态,需要使用以下命令准备备份文件:

sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54

要将数据库还原到第二个增量备份的状态,您需要使用以下命令准备备份文件:

sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-51-32
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54

注意事项

对于增量备份,应该--redo-only在除最后一个增量备份之外的所有备份上使用该选项。但是,在最后一次增量备份上使用此选项仍然对数据的一致性无害-只会由于数据库回滚而导致一些延迟。

每个增量方案的最后一个命令是可选的,但建议使用,因为它会加速还原。

准备之后,增量备份文件中记录的更改将附加到已准备的基本完全备份文件中,因此,无论选择完全备份还是增量备份,都应始终使用已准备好的完全备份文件来还原数据库。

步骤9:还原数据库

在还原数据库之前,您需要停止数据库服务。

sudo service mysqld stop

您还需要清空数据库目录。您可以将当前数据库文件移动到另一个位置以防万一。

sudo mkdir /currentdb
sudo mv /var/lib/mysql/* /currentdb

使用准备好的“完全备份”文件还原数据库。

sudo innobackupex --copy-back /dbbackup/full/2015-05-22_05-45-54

由于还原过程将修改数据库目录的所有者,因此您需要将其更改回mysql:mysql使其可以运行。

sudo chown -R mysql:mysql /var/lib/mysql

重新启动数据库服务。

sudo service mysqld start

而已。此时,您可以访问WordPress网站以验证还原过程是否成功。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息