Discoruse 备份恢复有个比较重要的问题就是检查附件表的数量。
可能在恢复成功后有数据差异,这回导致一些内容的附件不显示。
尽管这些附件已经在 S3 的存储了。
插入附件
在上传一个附件之前,先看看数量:
discourse=# select count(*) from uploads;
count
-------
10342
(1 row)
随后我们再次运行查看:
discourse=# select count(*) from uploads;
count
-------
10343
(1 row)
discourse=#
表数据会添加 1。
查看数据。
id | user_id | original_filename | filesize | width | height | url | created_at | updated_at | sha1 | origin | retain_hours | extension | thumbnail_width | thumbnail_height | etag | secure | access_control_post_id | original_sha1 | verification_status | animated | security_last_changed_at | security_last_changed_reason | dominant_color
-------+---------+-------------------------+----------+-------+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+----------------------------+------------------------------------------+--------+--------------+-----------+-----------------+------------------+----------------------------------+--------+------------------------+---------------+---------------------+----------+--------------------------+------------------------------+----------------
18292 | 193 | 2025-03-12_10-38-16.jpg | 20757 | 451 | 204 | //com-isharkfly-discourse.s3.dualstack.us-east-2.amazonaws.com/com-isharkfly-www/discourse-uploads/original/3X/8/b/8b86522f6275fdbcf6df9fdb293db2538059e5c8.jpeg | 2025-03-12 14:38:49.22769 | 2025-03-12 14:38:49.596361 | 8b86522f6275fdbcf6df9fdb293db2538059e5c8 | | | jpeg | 451 | 204 | 49b0e657d22f36414bfc5246f2c35d5f | f | | | 1 | f | | | 050505
(1 row)
同时表: upload_references 也会添加一条记录。
discourse=# select * from upload_references order by id desc limit 1;
id | upload_id | target_type | target_id | created_at | updated_at
--------+-----------+-------------+-----------+----------------------------+----------------------------
199980 | 18292 | Draft | 13776 | 2025-03-12 14:38:51.750305 | 2025-03-12 14:38:51.750329
(1 row)
discourse=#
当主题的内容发布后,数据将会从 Draft 修改成 post。
但 ID 会改变,应该是 draft 的版本不同原因。
其中对应的 Id 为 Posts Id。