一键式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

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。