本文将介绍,不用插件如何备份和恢复wordpress网站的数据库,本教程默认你使用的是linux VPS主机,本文讲述的方法不适用于虚拟主机。
不用插件备份wordpress数据库
我们都知道,wordpress如果安装过多的插件,将使网站的访问速度变慢。其实,对于安装在Linux VPS上的wordpress网站来说,我们可以使用Linux和Mysql命令来备份和恢复wordpress网站的数据库。
备份wordpress数据库
以下命令行既适用于MySQL也适用于MariaDB,我们可以通过输入以下命令,来检测我们使用的是MySQL还是MariaDB:
mysql --version
输出如下:
mysql Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
如上所示,我正在使用的是MariaDB。另一个检测的方法是,我们可以通过以下命令行登录数据库:
sudo mysql -u root
登录后,你将看到如下的信息:
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 102 Server version: 10.3.22-MariaDB-0ubuntu0.19.10.1-log Ubuntu 19.10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
可以看到,我正在使用的是MariaDB 10.3.22,如果你正在使用的是MySQL,那么展示的内容可能如下所示:
8.0.7-MySQL Community Server (GPL)
下面我们来开始备份数据库。
使用“sudo mysql -u root -p”命令登录MySQL后,我们可以执行下面的命令,来查看已经建立的所有数据库。
show databases;
输出如下:
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | wordpress | +--------------------+
一般情况下,我们能看到有4个数据库,前三个为infomation_schema, mysql, performance_schema ,第四个是我们为wordpress站点建立的数据库,也是我们唯一需要备份的数据库。下面输入“exit”命令退出MySQL服务器。
exit;
下面我们使用mysqldump工具来备份wordpress数据库。
sudo mysqldump -u root wordpress > wordpress.sql
上面的命令将在当前目录,备份名为“wordpress”的数据库到wordpress.sql文件。备份文件的名称可以随意的自定义,比如“mysite.SQL”。如果在执行上述命令行时,提示如下的错误:
mysqldump: Error: Binlogging on server not active
那么我们需要通过编辑/etc/mysql/my.cnf 或者 /etc/my.cnf 文件来配置启用二进制日志记录。
sudo nano /etc/mysql/my.cnf
或者
sudo nano /etc/my.cnf
将下面的内容,添加到[mysqld]区块的下方。
log-bin=mysql-bin
类似于:
[mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking log-bin=mysql-bin #
保存并关闭该文件,然后重新启动MySQL:
sudo systemctl restart mysql
或者
sudo systemctl restart mariadb
现在我们就可以使用 mysqldump 命令,把wordpress数据库备份成一个后缀为sql的文件。为了减少占用空间,我们也可以直接把数据库被分成一个压缩包。
sudo mysqldump -u root wordpress | gzip > wordpress.sql.gz
备份wordpress根目录下的所有文件
一般情况下wordpress网站的根目录可能为/var/www/html/ 或者 /usr/share/nginx/html/,这取决于你配置的具体文件目录在哪里。使用下面的命令来进行备份:
sudo tar -cpvzf filename.tar.gz /var/www/html/
上面的命令包含5个参数,分别为:
- -c 创建一个归档文件;
- -p 保留已归档文件的相应权限设置;
- -v 显示详细信息;
- -z 使用gzip压缩归档文件;
- -f 代表文件。
执行上述命令后,/var/www/html/文件夹下的所有文件都会被归档和压缩。
原服务器上恢复wordpress数据库和所有文件
通过上述的内容,我们就学会了如何不用插件,备份wordpress的数据库和所有文件。接下来,我们将介绍,如何恢复我们的备份。
恢复wordpress数据库
通过执行下面的命令,将数据库进行恢复。
sudo mysql -u root wordpress < wordpress.sql
你可以登录MySQL服务器查看wordpress数据库是否导入成功。
恢复wordpress文件
执行下面的命令,将备份的压缩包解压:
tar -xzvf filename.tar.gz
将解压后的所有文件,复制到网站的根目录下:
sudo cp var/www/html/* /var/www/html/ -R
通过邮件备份文件
如果想把数据库备份文件和wordpress网站的备份文件发送到自己的邮箱,我们可以按照下面的教程来操作。
首先,我们需要安装 heirloom mailx ,它支持使用外部的SMTP服务器(例如Gmail)来发送带附件的邮件。我们下面将介绍如何把数据库备份文件和wordpress网站备份文件以附件的形式用Gmail发送到你的邮箱。
安装Heirloom Mailx
如果是CentOS/RHEL系统,执行下面的命令:
sudo yum install -y mailx
Fedora系统,执行下面的命令:
sudo dnf install -y mailx
Debian/Ubuntu系统,执行下面的命令:
sudo apt-get install -y heirloom-mailx
把Gmail作为外部SMTP发送邮件
编辑 mailrc 文件,CentOS/RHEL/Fedora系统,执行下面的命令:
sudo vi /etc/mail.rc
Debian/Ubuntu系统,执行下面的命令:
vi ~/.mail.rc
将下面的内容复制到文件里:
set smtp-use-starttls set ssl-verify=ignore set smtp=smtp://smtp.gmail.com:587 set smtp-auth=login set smtp-auth-user=user-account@gmail.com set smtp-auth-password=user-password set from="user-account@gmail.com(Your_Name)"
将文中绿色的字符内容替换为你自己的Gmail邮件信息,保存并关闭。下面我们可以使用下面的命令来发送邮件了:
echo "website backed up" | mail -v -a backup.sql -a filename.tar.gz -s "wordpress backed up" recipient@domain.com
上述命令行的参数讲解:
- -v 详情,将展示与Gmail的连接状态;
- -a 表示附件,我们可以使用多个-a 参数把多个附件添加到邮件;
- -s 表示邮件主题;
- recipient@domain.com,是我们用于接收的邮件地址。我们也可以使用发送邮件的EMAIL作为接收邮件的EMAIL,我们还可以发送给多个接收邮件的EMAIL。
CentOS/RHEL/Fedora系统,我们还需要增加下面的内容到 mail.rc 文件。
set nss-config-dir=/home/<username>/.certs/
保存并关闭,接下来就可以使用Gmail来发送邮件了。
绕过Gmail附件大小限制
Gmail限制附件的大小不能超过25M,如果我们的压缩文件大于25M,我们就需要把它拆分成多个压缩包来分别发送。
拆分压缩包,我们使用下面的命令来拆分压缩包:
split -b 5M -d filename.tar.gz <prefix>
上面命令的意思是,把“filename.tar.gz”压缩包,拆分成5M的子压缩包。<prefix>是添加在子压缩包上的名称。
split -b 5M -d linuxbabe.tar.gz wordpress
我们将获得下面的文件:
-rw-rw-r-- 1 user user 15M Nov 21 01:57 linuxbabe.tar.gz -rw-rw-r-- 1 user user 5.0M Nov 21 13:46 wordpress00 -rw-rw-r-- 1 user user 5.0M Nov 21 13:46 wordpress01 -rw-rw-r-- 1 user user 4.5M Nov 21 13:46 wordpress02
linuxbabe.tar.gz文件被拆分成3个文件,如果我们的wordpress网站压缩包有40M,那么可以执行下面的命令:
split -b 25M -d filename.tar.gz wordpress
通过执行上述命令,我们获得了两个子压缩包,一个是25M,另一个是15M。
合并压缩包
要在服务器上恢复该文件,我们就要将两个子压缩包合并,通过执行以下 命令合并:
cat wordpress00 wordpress01 > wordpress.tar.gz
自动化操作
上面的所有操作都可以自动化的执行,我们通过安装cron来安装预定的时间进行操作,通过下面的命令安装cron:
Debian/Ubuntu系统:
sudo apt-get install cron
CentOS/RHEL系统:
sudo yum install crontabs
Fedora server系统:
sudo dnf install crontabs
如果使用了systemd,安装后需要重新启动。
sudo systemd start crond
设置为系统启动自启动:
sudo systemd enable crond
设定备份任务
执行以下的命令:
crontab -e
打开cron表,增加一个每天4点备份数据库的任务,把下面的内容复制到文件里:
0 4 * * * mysqldump -u root -pyourpassword --all-databases --master-data | gzip > backup.sql.gz
0 4 * * *的意思是每天凌晨4:00,yourpassword替换成你自己数据库的root用户的密码。
接下来,设置一个备份Wordpress根目录文件的任务,把下面的内容复制到文件里:
5 4 * * * tar -cpzf filename.tar.gz /var/www/html/
如果你的Wordpress根目录不是 /var/www/html/,可以根据实际情况更改。5 4 * * *的意思是每天4:05进行备份,下面的内容是把备份内容作为附件发送到邮箱。
10 4 * * * echo "website backed up" | mail -a backup.sql.gz -a filename.tar.gz -s "wordpress backed up" recipient@domain.com
以上的命令,每天4:10分,把我们的数据库备份文件发送到我们的邮箱。上面的这三个任务间隔5分钟,如果想设置成完成一个后立即执行下一个任务,那么我们可以如下设置:
0 4 * * * mysqldump -u root -pyourpassword --all-databases --master-data | gzip > backup.sql.gz && tar -cpzf filename.tar.gz /var/www/html/ && echo "website backed up" | mail -a backup.sql.gz -a filename.tar.gz -s "wordpress backed up" recipient@domain.com
&&符号的意思是前一个任务成功完成后,立即执行下一个任务。
如果想在发送邮件后立即从服务器上删除备份文件,可以把如下内容增加到文件里:
15 4 * * * rm backup.sql.gz filename.tar.gz
如果希望每个小时执行一次,
0 * * * *
如果想每两个小时执行一次,
0 */2 * * *
WordPress站点迁移
如果是在原服务器上执行上述的任务,那么我们就已经完成了备份和恢复任务。但是如果想把站点迁移到一个新的服务器上,那么我们还要继续下面的任务。
准备工作
- 首先,在新服务器上安装LAMP或者LEMP环境;
- 第二,复制Apache或者Nginx的配置文件,以及复制SSL证书文件到新的服务器上,然后测试每个站点的运行是否正常,然后重启Apache;
- 在新服务器上,创建一个空的MySQL/MariaDB数据库,注意按下面的步骤进行操作。
编辑备份的Wordpress根目录下的配置文件:
sudo nano /var/www/html/wp-config.php
在配置文件wp-config.php上,我们可以看到之前网站上的数据库名称、用户名及密码:
/** The name of the database for WordPress */ define('DB_NAME', 'database-name'); /** MySQL database username */ define('DB_USER', 'database-username'); /** MySQL database password */ define('DB_PASSWORD', 'user-password');
登录MySQL服务器:
sudo mysql -u root
创建数据库:
create database database-name;
授予用户Wordpress数据库的所有权限:
grant all privileges on database-name.* to database-username@localhost identified by 'user-password';
刷新使授权生效;
flush privileges;
退出MySQL服务器:
exit;
把备份的数据库文件导入新的服务器,以恢复网站数据:
sudo mysql -u root wordpress < wordpress.sql
现在我们就已经成功的把Wordpress网站迁移到了一个新的服务器上,重新配置一下域名的解析信息,网站就可以正常访问了。
删除VPS前的注意事项
在删除不用的VPS之前,我们需要做好以下工作,这些将防止你删除掉尚未迁移的软件和数据。
- 执行
sudo certbot certificates,查看VPS上的
Let’s Encrypt TLS证书; - 执行
sudo netstat -lnptu,查看服务器上正在运行的服务;
- 执行
sudo ncdu /查看服务器硬盘的使用情况。要执行该命令需要安装ncdu,sudo apt install ncdu;
- 执行
sudo crontab -l,来查看VPS服务器上是否有任何的定时任务;
- 查看home目录下是否有什么重要文件。
总结
通过上述文章内容,我们没有使用任何的插件,就完成了Wordpress网站的备份和恢复任务。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/wordpress/backup-restore-wordpress-without-plugin/