Skip to content

ब्लॉकचेन से ब्लॉक को फिर से पढ़ना

⚠️ केवल उन्नत उपयोगकर्ताओं के लिए। सभी क्रियाएं आपके अपने जोखिम पर की जाती हैं। डेटाबेस में गलत परिवर्तन से लेनदेन का नुकसान या दोहराव हो सकता है। आगे बढ़ने से पहले सुनिश्चित करें कि आप प्रत्येक चरण को समझते हैं।

समस्या

इथीरियम नेटवर्क में ब्लॉक पुनर्गठन के कारण, ब्लॉकचेन पर पुष्टि की गई लेनदेन सिस्टम में गायब हो सकती है। ऐसा तब होता है जब प्रोसेसिंग ने अस्थायी (त्यागी गई) चेन शाखा के ब्लॉक को संसाधित किया हो और मुख्य चेन के संबंधित ब्लॉक को छोड़ दिया हो। सही स्थिति पुनर्स्थापित करने के लिए, आपको आवश्यक ब्लॉक को फिर से पढ़ने को मैन्युअल रूप से ट्रिगर करना होगा।

समाधान

1. डेटाबेस बैकअप बनाएं

bash
sudo -u postgres pg_dump dv-processing > /tmp/dv-processing_backup_$(date +%Y%m%d_%H%M%S).sql

सत्यापित करें कि फ़ाइल बनाई गई है और खाली नहीं है:

bash
ls -lh /tmp/dv-processing_backup_*.sql

2. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग रोकें

bash
sudo systemctl stop dv-processing

3. (मुख्य टर्मिनल में) डेटाबेस उपयोगकर्ता में स्विच करें

bash
sudo su
sudo su - postgres

4. (मुख्य टर्मिनल में) psql शुरू करें

bash
psql

या

bash
/home/dv/embedded/usr/local/pgsql/bin/psql -p 5433

5. (मुख्य टर्मिनल में) dv-processing डेटाबेस से कनेक्ट करें

sql
\c dv-processing

6. (मुख्य टर्मिनल में) वर्तमान पार्सिंग स्थिति पढ़ें

sql
select number from processed_blocks where blockchain = 'bsc';

!महत्वपूर्ण — परिणाम याद रखें:

  number
----------
 81923203
(1 row)

7. (मुख्य टर्मिनल में) मान को आपके लेनदेन के ब्लॉक -1 पर अपडेट करें

लेनदेन 0xffe238ba2c1e028a8ec1c467cef53fa59112e2ccc922dc64345817f9da0f4e71 — ब्लॉक 81921203 के उदाहरण के लिए:

sql
update processed_blocks set number = 81921203 where blockchain = 'bsc';

8. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग शुरू करें

bash
sudo systemctl start dv-processing

9. (मुख्य टर्मिनल में) कुछ मिनट बाद जांचें कि ब्लॉक आगे बढ़े हैं

मान 81921203 से कई दसियों या सैकड़ों तक बढ़ना चाहिए — यह ब्लॉक के सफल पुनर्पाठन को दर्शाता है।

sql
select number from processed_blocks where blockchain = 'bsc';

10. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग रोकें

bash
sudo systemctl stop dv-processing

11. (मुख्य टर्मिनल में) ब्लॉक मान को चरण 6 में नोट किए गए मान पर पुनर्स्थापित करें

sql
update processed_blocks set number = 81923203 where blockchain = 'bsc';

12. (!महत्वपूर्ण — अलग टर्मिनल में) प्रोसेसिंग शुरू करें

bash
sudo systemctl start dv-processing

इसके बाद, लेनदेन के पकड़े जाने की संभावना अधिक है।