ब्लॉकचेन से ब्लॉक को फिर से पढ़ना
⚠️ केवल उन्नत उपयोगकर्ताओं के लिए। सभी क्रियाएं आपके अपने जोखिम पर की जाती हैं। डेटाबेस में गलत परिवर्तन से लेनदेन का नुकसान या दोहराव हो सकता है। आगे बढ़ने से पहले सुनिश्चित करें कि आप प्रत्येक चरण को समझते हैं।
समस्या
इथीरियम नेटवर्क में ब्लॉक पुनर्गठन के कारण, ब्लॉकचेन पर पुष्टि की गई लेनदेन सिस्टम में गायब हो सकती है। ऐसा तब होता है जब प्रोसेसिंग ने अस्थायी (त्यागी गई) चेन शाखा के ब्लॉक को संसाधित किया हो और मुख्य चेन के संबंधित ब्लॉक को छोड़ दिया हो। सही स्थिति पुनर्स्थापित करने के लिए, आपको आवश्यक ब्लॉक को फिर से पढ़ने को मैन्युअल रूप से ट्रिगर करना होगा।
समाधान
1. डेटाबेस बैकअप बनाएं
sudo -u postgres pg_dump dv-processing > /tmp/dv-processing_backup_$(date +%Y%m%d_%H%M%S).sqlसत्यापित करें कि फ़ाइल बनाई गई है और खाली नहीं है:
ls -lh /tmp/dv-processing_backup_*.sql2. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग रोकें
sudo systemctl stop dv-processing3. (मुख्य टर्मिनल में) डेटाबेस उपयोगकर्ता में स्विच करें
sudo su
sudo su - postgres4. (मुख्य टर्मिनल में) psql शुरू करें
psqlया
/home/dv/embedded/usr/local/pgsql/bin/psql -p 54335. (मुख्य टर्मिनल में) dv-processing डेटाबेस से कनेक्ट करें
\c dv-processing6. (मुख्य टर्मिनल में) वर्तमान पार्सिंग स्थिति पढ़ें
select number from processed_blocks where blockchain = 'bsc';!महत्वपूर्ण — परिणाम याद रखें:
number ---------- 81923203 (1 row)
7. (मुख्य टर्मिनल में) मान को आपके लेनदेन के ब्लॉक -1 पर अपडेट करें
लेनदेन 0xffe238ba2c1e028a8ec1c467cef53fa59112e2ccc922dc64345817f9da0f4e71 — ब्लॉक 81921203 के उदाहरण के लिए:
update processed_blocks set number = 81921203 where blockchain = 'bsc';8. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग शुरू करें
sudo systemctl start dv-processing9. (मुख्य टर्मिनल में) कुछ मिनट बाद जांचें कि ब्लॉक आगे बढ़े हैं
मान 81921203 से कई दसियों या सैकड़ों तक बढ़ना चाहिए — यह ब्लॉक के सफल पुनर्पाठन को दर्शाता है।
select number from processed_blocks where blockchain = 'bsc';10. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग रोकें
sudo systemctl stop dv-processing11. (मुख्य टर्मिनल में) ब्लॉक मान को चरण 6 में नोट किए गए मान पर पुनर्स्थापित करें
update processed_blocks set number = 81923203 where blockchain = 'bsc';12. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग शुरू करें
sudo systemctl start dv-processingइसके बाद, लेनदेन के पकड़े जाने की संभावना अधिक है।