create account

温故而知新:使用mysqldump备份WordPress MySQL数据库 by oflyhigh

View this thread on: hive.blogpeakd.comecency.com
· @oflyhigh ·
$100.17
温故而知新:使用mysqldump备份WordPress MySQL数据库
最近打算升级一台服务器,上边部署有一个wordpress站点,升级跨度挺大,而且站点上的wp程序又好久没有更新,怕升级后wp与系统不兼容,所以在这之前需要备份一下站点。

![image.png](https://images.hive.blog/DQmPQVkwTyjuqZgb9w6QZ7MiGRFwLS73NiNcZZiujsfsSDj/image.png)
(图源 :[pixabay](https://pixabay.com/photos/lightbulb-idea-creativity-base-3104355/))

站点有两部分主要数据,分别是站点上的程序文件(*.php一堆)、图片等,以及站点的MySQL数据库。

文件我们使用tar直接打包即可,那么数据库该如何备份呢?我没记错的话,WP后台就有备份功能,但是好久没有登录后台,现在用户名密码早就忘干净了,就算是想起来,现在后台还能用不能用也两说呢。

# 备份语句

那么剩下方法大概就只能是直接备份数据库啦,使用的工具就是`mysqldump`,一款我十多年前几乎每天都在用的工具,现在咋用都忘得差不多啦。

不过好在这个工具用起来很简单,直接使用如下语句即可:
> `sudo mysqldump -u root -p --default-character-set=utf8 database_name   > dump.sql`

(注:为了让中文被正确处理,加入`--default-character-set=utf8`参数,注意是`utf8`而不是`utf-8`)

其中`database_name`为我们要备份的数据库名,如果不清楚数据库名,可以使用mysql命令行客户端链接,并使用`SHOW DATABASES;`指令查询。

在我的服务器上,操作如下:
>` sudo mysql -u root -p`

登录后,执行`SHOW DATABASES;`指令,显示结果如下:
```
mysql>  SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpressdb        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
```

其中,`wordpressdb`就是我们的数据库啦,另外几个都是系统相关的数据库,我们不用去理会。

# 关于权限

这里额外插播一点信息,原本MySQL是可以在Linux的普通用户下连接MYSQL root用户的(亦即不使用`sudo`即可完成上述操作),但是这次试了一下竟然不可以用。

而且更诡异的是,使用了`sudo`(亦即root权限后),`mysql`或者`mysqldump`竟然可以使用任意密码登录到MySQL的`root`用户(亦即原本设置的密码都无效了)。

我粗略地了解了一下,可能是MySQL中验证插件的变化:
```
mysql> use mysql
Database changed
mysql> select host, user, plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| localhost | root             | auth_socket           |
| localhost | mysql.session    | mysql_native_password |
| localhost | mysql.sys        | mysql_native_password |
| localhost | debian-sys-maint | mysql_native_password |
| localhost | sitexxxx_wpuser  | mysql_native_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
```
(通过这个可以看到` root`对应的验证插件为`auth_socket`)

虽然我没太理解这个`auth_socket`工作机制,也可以将`root`的`plugin`修改为`mysql_native_password`,并重新设置密码。但是貌似用`sudo`也没啥不好的,所以就这么将就用吧(毕竟这台VPS只有我自己用)。

# 备份与恢复

至此,我们做好了备份前的学习准备,然后执行上文提到的备份语句:
>`sudo mysqldump -u root -p --default-character-set=utf8 database_name > dump.sql`

就会将对应的数据库(注意修改其中的数据库名称)DUMP到一个SQL文件中,查看这个sql文件,我们会发现其中有类似这样的创建数据表语句:
![image.png](https://images.hive.blog/DQmcWnzAZsZrDeCbFgAfza8CpfxafuXJihokTjDACCZ3Q81/image.png)

以及类似这样的`INSERT INTO `wp_posts` VALUES `等数据插入语句。

也就是说我们备份的没有问题,将上述文件使用`tar`打包,再用`scp`下载到本地或者上传到其它服务器,我们就完成了数据库的备份。

同理,打包站点`www`目录下的文件,并下载到本地或上传到其它服务器,我们就完成了网页内容的备份。

恢复也是十分简单,对于网页备份,下载网页备份被解压到相应目录。

对于数据库备份,下载数据库备份被解压,然后执行如下指令即可:
>`sudo mysql -u root -ppassword database_name < dump.sql`

是不是很简单呀?

# 接下来做什么

做好备份以后,我们就可以放心地升级服务器了,理论上,有直接升级成功的可能(那样我们就无需去手工恢复站点文件以及数据库内容啦)。

一旦升级失败,我就得将服务器系统恢复至原来的低版本系统,然后再手工恢复站点文件以及数据库备份,唉,想想就很累。我这苦命的人啊!

什么,万一这过程中有啥疏漏怎么办?其实云服务提供商那边我还购买了VPS的备份服务,可以从主机商那边恢复。(不过以前弄过一次,他们的服务有BUG,我差点累死)。

什么,万一升级失败、我的备份也有疏漏,主机商的备份也恢复失败可咋办?万一那种情况真的发生,O哥只能认命了,爱咋咋地呗,反正其实这个网站也没几个人用。

死猪不怕开水烫,就是我啦!

# 相关链接
* [mysqldump — A Database Backup Program](https://dev.mysql.com/doc/refman/8.3/en/mysqldump.html)
* [Dumping Data in SQL Format with mysqldump](https://dev.mysql.com/doc/refman/8.3/en/mysqldump-sql-format.html)
* [Reloading SQL-Format Backups](https://dev.mysql.com/doc/refman/8.3/en/reloading-sql-format-dumps.html)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 166 others
properties (23)
authoroflyhigh
permlinkmysqldump-wordpress-mysql
categoryhive-105017
json_metadata{"tags":["cn","life","blog","mysql","study"],"image":["https://images.hive.blog/DQmPQVkwTyjuqZgb9w6QZ7MiGRFwLS73NiNcZZiujsfsSDj/image.png","https://images.hive.blog/DQmcWnzAZsZrDeCbFgAfza8CpfxafuXJihokTjDACCZ3Q81/image.png"],"links":["https://pixabay.com/photos/lightbulb-idea-creativity-base-3104355/"],"app":"hiveblog/0.1","format":"markdown"}
created2024-03-22 10:44:48
last_update2024-03-22 10:44:48
depth0
children8
last_payout2024-03-29 10:44:48
cashout_time1969-12-31 23:59:59
total_payout_value50.108 HBD
curator_payout_value50.061 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length3,389
author_reputation6,389,818,718,504,340
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,244,724
net_rshares182,508,180,009,501
author_curate_reward""
vote details (230)
@gameexp ·
!LOL
properties (22)
authorgameexp
permlinkre-oflyhigh-sash8p
categoryhive-105017
json_metadata{"tags":["hive-105017"],"app":"peakd/2024.3.5"}
created2024-03-23 07:10:00
last_update2024-03-23 07:10:00
depth1
children1
last_payout2024-03-30 07:10:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length4
author_reputation56,187,353,770,012
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,265,164
net_rshares0
@lolzbot ·
<div class='pull-right'><center><img src="https://lolztoken.com/lolz.png"><br><a href="https://lolztoken.com">lolztoken.com</a></p><br><br><br><br></center></div><p><center><strong>What do you call a hippo who says something and does the complete opposite?<br>A hippocrite</strong><br><sub>Credit: <a href="https://peakd.com/@reddit">reddit</a></sub><br>@oflyhigh, I sent you an <a href="https://lolztoken.com">$LOLZ</a> on behalf of gameexp<br><br>(8/10)<br>Farm <strong><a href='https://lolztoken.com'>LOLZ tokens</a></strong> when you <strong><a href='https://peakd.com/hive-155986/@lolztoken/earn-10percent-apr-on-hive-power-delegations-to-the-lolz-project'>Delegate Hive</a> or <a href='https://peakd.com/hive-155986/@lolztoken/introducing-lolz-defi-now-you'>Hive Tokens</a>.</strong><br>Click to delegate: <a href='https://hivesigner.com/sign/delegateVestingShares?delegator=&delegatee=lolzbot&vesting_shares=10%20HP'>10</a> - <a href='https://hivesigner.com/sign/delegateVestingShares?delegator=&delegatee=lolzbot&vesting_shares=20%20HP'>20</a> - <a href='https://hivesigner.com/sign/delegateVestingShares?delegator=&delegatee=lolzbot&vesting_shares=50%20HP'>50</a> - <a href='https://hivesigner.com/sign/delegateVestingShares?delegator=&delegatee=lolzbot&vesting_shares=100%20HP'>100</a> HP</center></p>
properties (22)
authorlolzbot
permlinkre-re-oflyhigh-sash8p-20240323t071313z
categoryhive-105017
json_metadata"{"app": "beem/0.24.19"}"
created2024-03-23 07:13:30
last_update2024-03-23 07:13:30
depth2
children0
last_payout2024-03-30 07:13:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,311
author_reputation196,103,718,388,237
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,265,200
net_rshares0
@love5200 ·
虽然我对此一窍不通,半夜看到O神的文章,我决定还是留下足迹🤣🤣证明我还没睡~!~
properties (22)
authorlove5200
permlinkre-oflyhigh-2024323t35739818z
categoryhive-105017
json_metadata{"tags":["cn","life","blog","mysql","study"],"app":"ecency/3.1.1-vision","format":"markdown+html"}
created2024-03-22 19:57:39
last_update2024-03-22 19:57:39
depth1
children0
last_payout2024-03-29 19:57:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length40
author_reputation543,673,138,751,934
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,256,119
net_rshares0
@lovelingling ·
O哥这篇文章能发出来,我猜大概率一切顺利。😂😂😂

我想起一句话,人生不是为自己挖坑就是在为自己挖坑的路上。哈哈哈
properties (22)
authorlovelingling
permlinkre-oflyhigh-2024322t19115440z
categoryhive-105017
json_metadata{"type":"comment","tags":["hive-105017","cn","life","blog","mysql","study"],"app":"ecency/3.0.46-mobile","format":"markdown+html"}
created2024-03-22 11:11:06
last_update2024-03-22 11:11:06
depth1
children2
last_payout2024-03-29 11:11:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length57
author_reputation732,820,811,982,840
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,245,235
net_rshares0
@oflyhigh ·
不为无益之事,何以遣有涯之生
properties (22)
authoroflyhigh
permlinksar3e9
categoryhive-105017
json_metadata{"app":"hiveblog/0.1"}
created2024-03-22 13:13:24
last_update2024-03-22 13:13:24
depth2
children1
last_payout2024-03-29 13:13:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length14
author_reputation6,389,818,718,504,340
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,247,721
net_rshares0
@lovelingling ·
O哥所言甚是,我们做的绝大多数事情都是无聊之事,做的越多正可说明我们越快乐。😂
properties (22)
authorlovelingling
permlinkre-oflyhigh-2024323t7812175z
categoryhive-105017
json_metadata{"type":"comment","tags":["ecency"],"app":"ecency/3.0.46-mobile","format":"markdown+html"}
created2024-03-22 23:08:12
last_update2024-03-22 23:08:12
depth3
children0
last_payout2024-03-29 23:08:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length39
author_reputation732,820,811,982,840
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,259,589
net_rshares0
@marygong77777 ·
👍👍
properties (22)
authormarygong77777
permlinkre-oflyhigh-2024323t7426830z
categoryhive-105017
json_metadata{"type":"comment","tags":["hive-105017","cn","life","blog","mysql","study"],"app":"ecency/3.0.46-mobile","format":"markdown+html"}
created2024-03-22 23:04:27
last_update2024-03-22 23:04:27
depth1
children0
last_payout2024-03-29 23:04:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2
author_reputation414,203,223,893,277
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,259,541
net_rshares0
@xiaoyaodidi ·
技术哥上线 无与匹敌😁
properties (22)
authorxiaoyaodidi
permlinkre-oflyhigh-2024322t12163612z
categoryhive-105017
json_metadata{"type":"comment","tags":["hive-105017","cn","life","blog","mysql","study"],"app":"ecency/3.0.46-mobile","format":"markdown+html"}
created2024-03-22 11:16:00
last_update2024-03-22 11:16:00
depth1
children0
last_payout2024-03-29 11:16:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length11
author_reputation420,725,591,905,600
root_title"温故而知新:使用mysqldump备份WordPress MySQL数据库"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,245,311
net_rshares0