ทำให้ใช้งานได้จริง
ฐานข้อมูล — ต่อให้เรียบร้อยแล้ว
คำสั่งเดียว แอปของคุณก็มี Postgres พร้อม connection string อยู่ใน environment แล้ว สิ่งที่ควรเข้าใจคือส่วนที่อยู่ข้างใต้ อะไรที่ใช้ร่วมกับบัญชีอื่น อะไรที่เป็นของคุณคนเดียว และตัวเลขหนึ่งตัวที่เปลี่ยนทีหลังไม่ได้
1. ต่อเข้าไป
แอปจะรีสตาร์ทพร้อมค่า DATABASE_URL ไลบรารีอะไรก็ตามที่คุยกับ Postgres ได้ อ่านค่านี้แล้วเชื่อมต่อได้เลย ไม่มี client เฉพาะของเอราวัณ
2. สิ่งที่ได้จริง
แพ็กเกจ | อยู่ที่ไหน | ขนาด |
|---|---|---|
Free | เครื่องที่ใช้ร่วมกัน | 100 MB |
Hobby | เครื่องที่ใช้ร่วมกัน | 500 MB |
Pro | เครื่องของคุณเอง | 1 GB |
Max | เครื่องของคุณเอง | 2 GB |
บนเครื่องที่ใช้ร่วมกัน ฐานข้อมูลก็ยังเป็นของคุณอยู่ดี — เป็นฐานข้อมูลและ role สำหรับล็อกอิน ที่สร้างให้แอปของคุณโดยเฉพาะ พร้อมถอนสิทธิ์ CONNECT ออกจากคนอื่นทั้งหมด เพราะ Postgres ให้สิทธิ์นั้นกับทุกฐานข้อมูลใหม่โดยอัตโนมัติ ซึ่งจะทำให้บัญชีใดก็ได้เปิดฐานข้อมูลของบัญชีอื่นได้ด้วยการเดาชื่อ จึงต้องถอนออกอย่างตั้งใจ และ role นั้นก็ไม่ใช่ superuser — superuser อ่านได้ทั้งเครื่อง และสั่ง shell ได้ผ่าน COPY … FROM PROGRAM
ตั้งแต่ Pro ขึ้นไป เครื่องเป็นของคุณเต็มตัว และการเลื่อนแพ็กเกจคือการคัดลอกข้อมูลจริง ระบบสร้างปลายทาง คัดลอกข้อมูล เทียบจำนวนตารางและจำนวนแถว แล้วจึงชี้แอปไปที่ใหม่และทำลายของเดิม อะไรที่ล้มก่อนขั้นสุดท้ายจะทิ้งคุณไว้บนฐานข้อมูลที่ไม่มีใครไปแตะ
3. ตัวเลขที่เปลี่ยนทีหลังไม่ได้
ขอน้อยกว่าที่แพ็กเกจให้ก็ได้ — แพ็กเกจคือเพดาน ไม่ใช่โควตาที่ต้องใช้ให้หมด สิ่งที่ทำไม่ได้คือเปลี่ยนทีหลัง เพราะชั้นเก็บข้อมูลข้างใต้ปรับขนาด volume ที่มีอยู่แล้วไม่ได้ ขนาดจึงเป็นข้อเท็จจริงของดิสก์ ไม่ใช่ของแพ็กเกจที่คุณอยู่วันนี้ การขอขนาดใหม่กับ add-on เดิมจะถูกปฏิเสธ พร้อมบอกวิธีที่ทำได้จริง
ขั้นต่ำคือ 1 GB และนั่นเป็นของ Postgres เอง — ค่า max_wal_size ของมันคือ 1 GB ดังนั้น volume ที่เล็กกว่านั้นอาจเต็มไปด้วย write-ahead log ก่อนจะได้เก็บข้อมูลของคุณสักแถว
4. ถอดออก และบรรทัดที่พามันกลับมา
คำสั่งนี้ถอด add-on ออก แต่ถ้าโปรเจกต์ของคุณมี erawan.yaml ที่เขียน addons: [postgres] ไว้ การนำขึ้นออนไลน์ครั้งถัดไปจะสร้างตัวใหม่ขึ้นมา — เพราะบรรทัดนั้นไม่ใช่บันทึกว่าคุณเคยทำอะไร แต่คือรุ่นนั้นกำลังบอกว่าต้องการอะไรก่อนโปรเซสแรกจะเริ่ม ต้องลบบรรทัดออกจาก manifest ด้วย ไม่อย่างนั้นการถอดจะอยู่ได้ถึงแค่การนำขึ้นออนไลน์ครั้งหน้า และไม่มีข้อความไหนบอกคุณว่ามันไม่ติด
การประกาศแบบเดียวกันนี้คือเหตุผลที่แอปซึ่งต้องใช้ฐานข้อมูลไม่ต้องพังก่อน — ถ้าไม่มีมัน ลำดับจะกลายเป็น นำขึ้นออนไลน์ ดูมันล้มเพราะไม่มี DATABASE_URL แล้วค่อยสร้าง แล้วรอรีสตาร์ท และระบบจะไม่แตะถ้า add-on มีอยู่แล้ว เพราะการสร้างรหัสผ่านใบที่สองจะทำให้ฐานข้อมูลถือค่าหนึ่ง ส่วนแอปถือค่าอีกค่าหนึ่ง
5. ย้ายข้อมูลเข้ามา
ไฟล์ pg_dump ที่บีบอัดด้วย gzip จะถูกกู้คืนเข้าฐานข้อมูลของแอป นี่คือทางจากเครื่องของคุณ จากผู้ให้บริการอื่น หรือจากแอปเวอร์ชันที่คุณรันอยู่ก่อนหน้านี้