ฐานข้อมูล WordPress ประสานระหว่าง dev และ prod


19

มีการถามคำถามก่อนหน้าเกี่ยวกับวิธีซิงโครไนซ์ไฟล์รวมถึงฐานข้อมูลระหว่างการติดตั้ง Wordpress สองครั้ง

สำหรับระดับฐานข้อมูลคำตอบคือโดยทั่วไปจะทิ้งฐานข้อมูลหนึ่งฐานแล้วใส่ลงในเซิร์ฟเวอร์อื่น ปัญหานี้คือคุณท้ายสูญเสียการเปลี่ยนแปลงใด ๆ ที่อาจเกิดขึ้นบนเซิร์ฟเวอร์แยง ตัวอย่างเช่นเมตริกการใช้งานความคิดเห็น ฯลฯ ...

ด้วยสิ่งนี้ในใจฉันเริ่มสงสัยว่ามันจะเป็นไปได้ที่จะขยาย Wordpress ORM เพื่อให้คุณสามารถสร้างเดลตาแล้วฉีดเข้าไปในเว็บไซต์แยง

มีใครลองทำดูดูหรือมีความคิดเห็นหรือความคิดเห็นบ้างไหม?


1
ฉันได้ดูแล้วใช่ แต่ยังไม่ประสบความสำเร็จเท่าไหร่ หากคุณสามารถชี้ไปที่แนวความคิดที่พิสูจน์ด้วยแพลตฟอร์ม CMS อื่นฉันแน่ใจว่าเราสามารถ rejigger สำหรับ WordPress
EAMann

วิธีการเกี่ยวกับการจำลองแบบ?
kovshenin

การจำลองแบบด้วย mysql จะต้องมีการจำลองแบบต้นแบบหลักบางอย่างซึ่งเป็น PITA หากคุณคำนึงถึงความจริงที่ว่าสิ่งนี้อยู่ระหว่าง dev และ prod ดังนั้นการจำลองแบบจะต้องล่าช้าซึ่งน่าจะเกิดขึ้นตลอดเวลา
jonathanserafini

คำตอบ:


11

ความจริงก็คือสิ่งที่เราต้องการคือ: http://www.liquibase.org/

Liquibase เป็นโอเพ่นซอร์ส (Apache 2.0 Licensed), ไลบรารีที่ไม่ขึ้นกับฐานข้อมูลสำหรับการติดตาม, จัดการและใช้การเปลี่ยนแปลงฐานข้อมูล มันถูกสร้างขึ้นบนสมมติฐานง่าย ๆ : การเปลี่ยนแปลงฐานข้อมูลทั้งหมดจะถูกเก็บไว้ในรูปแบบที่มนุษย์สามารถอ่านได้และติดตามได้และตรวจสอบในการควบคุมแหล่งที่มา

อย่างไรก็ตามกระบวนการพัฒนาของเราไม่รองรับ โดยทั่วไปเราจะไม่แก้ไขฐานข้อมูลผ่านสคริปต์ที่ไม่ต่อเนื่องที่เราเขียนเองเราใช้ปลั๊กอินที่เราเปิดใช้งาน เราไม่ได้เขียนสคริปต์ DML เพื่อแก้ไขข้อมูลการค้นหาที่เราตรวจสอบในการควบคุมซอร์สโค้ดเราใช้ UI บนหน้าผู้ดูแลระบบและดังนั้นจึงไม่มีซอร์สโค้ดสำหรับใช้ในการจำลองการเปลี่ยนแปลงนั้นในภายหลังในระหว่างการโยกย้าย

อย่างไรก็ตามเราสามารถเลียนแบบบางส่วนโดยใช้เครื่องมือบางอย่างที่ระบุไว้ในหน้านี้:

/programming//q/225772/149060

ตัวอย่างเช่น liquidbase มีคุณลักษณะต่าง ๆ ที่อาจรวมถึงการเปลี่ยนแปลงข้อมูล เราสามารถส่งออกสคีมาและข้อมูลไปยังสคริปต์ได้ยกเว้นบางตารางที่มีแนวโน้มที่จะรวมข้อมูลทดสอบ (เช่นโพสต์และอื่น ๆ ) จากนั้นนำสคริปต์ไปใช้กับฐานข้อมูลการผลิต

MySQLDiff (พูดถึงคำถาม StackOverflow) ทำ schema diffs และผู้เขียนแนะนำให้mysql_coldiffสำหรับข้อมูลตารางที่ชาญฉลาด diffs - ทั้งสองถูกนำมาใช้ใน Perl ถ้าเครื่องมือ java (liquidbase) ทรัพยากรหนักเกินไปสำหรับเซิร์ฟเวอร์ของคุณ - แม้ว่าจะนำทั้งฐานข้อมูลท้องถิ่น และเรียกใช้เครื่องมือบนพีซีของคุณแก้ปัญหานั้น ...

หากเราต้องการทำอย่างถูกต้องเราควรบันทึก sql ใด ๆ ที่เกี่ยวข้องกับการตั้งค่าตัวเลือกหรือการเปลี่ยนแปลงการกำหนดค่าอื่น ๆ และการเปลี่ยนแปลง schema - และแปลงรหัสบันทึกเป็นสคริปต์การโยกย้ายเพื่อเล่นกับเซิร์ฟเวอร์การผลิตของเรา เล่นสคริปต์การโยกย้ายกับเซิร์ฟเวอร์คัดลอกไฟล์ไซต์ wordpress (ไม่รวมการอัปโหลดหากมี) และเราเป็นทองคำ

ดังนั้นสำหรับฉันแล้ววิธีที่ดีที่สุดก็คือ Migration-builder-plugin ของผู้พัฒนาที่ดักจับ sql ที่เราต้องการเก็บไว้แล้วสร้างสคริปต์การโยกย้ายจากรหัสที่บันทึกไว้แทนที่จะสร้างวิธีผสานฐานข้อมูล ระหว่างการจัดเตรียมและการผลิต ดูเหมือนว่าจะง่ายกว่าในการแก้ปัญหาเช่นกัน

หากเราดูรหัสของเบ็ดตีบของ @bueltge เรียกใช้ปลั๊กอินเพื่อหาแรงบันดาลใจ: https://gist.github.com/1000143 (ขอบคุณ Ron Rennick ผ่าน G + เพื่อชี้ให้ฉันไปในทิศทางของ SAVEQUERIES และ hook shutdown นั่น พาฉันไปหามัน)

- แก้ไขเพื่อให้ได้ผลลัพธ์ SAVEQUERIES แทน 
- ทำงานเฉพาะในขณะที่อยู่ในผู้ดูแลระบบ 
- กรองการเลือกทั้งหมด 
- บันทึกผลลัพธ์ลงในตารางใน hook การปิด 
- เราสามารถเลือกสลับการดักจับผลลัพธ์ตามที่เรากำลังทำอยู่ในขณะนี้  

ตัวอย่างเช่น:

ชื่อการจับภาพ: เปิดใช้งานและกำหนดค่าปลั๊กอิน XYZ

จับสถานะสลับ - เปิด

... ติดตั้งและกำหนดค่าปลั๊กอิน XYZ

สลับสถานะการจับ - ปิด

ส่งออกสคริปต์การย้ายข้อมูลสำหรับ: เปิดใช้งานและกำหนดค่าปลั๊กอิน XYZ

กดปุ่มส่งออก - เพื่อสร้างฟิลด์ข้อความป๊อปอัพด้วย SQL ที่ติดกับตัวกรองซึ่งได้รับการจัดรูปแบบไว้ล่วงหน้าเป็นเชลล์สคริปต์ที่มีการเรียกใช้บรรทัดคำสั่งไปยัง mysql คัดลอกและวางลงในโฟลเดอร์รหัสการโยกย้ายของคุณและเพิ่มไปยังที่เก็บซอร์สโค้ดของคุณ

ความสนใจอย่างระมัดระวังในการสลับเปิดและปิดการจับภาพในขณะที่คุณกำลังทำงานและคุณจะสามารถสร้างสคริปต์การโยกย้ายที่สมบูรณ์แบบเพื่อใช้ฐานข้อมูลการผลิตของคุณไปยังการกำหนดค่าที่เทียบเท่ากับฐานข้อมูลการแสดงละครของคุณ

สิ่งที่ดีกว่าคือคุณจะมีสคริปต์ (หรือชุดเดียวกัน) ที่คุณสามารถทดสอบได้ การถ่ายภาพมีสคริปต์การโยกย้ายที่จำลองได้ทดสอบได้ !!

ฉันตกหลุมรักแล้ว

ใครอีกไหม?


2
เขียนดี ฉันใช้เวลามากกับปัญหานี้เพราะฉันมีลูกค้าที่ต้องการความช่วยเหลือ มันเป็นปัญหาที่ยากมาก แต่เราตัดสินใจว่าการลงไปสู่ระดับของ SQL น่าจะเป็นวิธีการแก้ปัญหา"ต้มน้ำในมหาสมุทรมากเกินไป"ซึ่งหมายความว่าโอกาสในการทำให้งาน 100% ไม่น่าจะเป็นไปได้ ฉันคิดว่าวิธีแก้ปัญหานั้นใช้วิธี"หารและพิชิต"ด้วยรหัสที่ชัดเจนซึ่งเข้าใจโครงสร้างของ WordPress และมีตะขอสำหรับสิ่งอื่น ฉันหวังว่าเราจะสามารถนำเสนอโซลูชั่นที่ทำงานได้ในที่สาธารณะในบางจุดในอนาคต
MikeSchinkel

ดังนั้น .... ใครต้องการจะทำสิ่งนี้?
Dave Kiss

สำหรับใครที่กำลังมองหาดูเหมือนว่าแนวคิดเดียวกันนี้มีให้ในรูปแบบปลั๊กอิน: wordpress.org/plugins/query-recorder
majick

3

ฐานข้อมูลซิงค์เวิร์ดเพรสปลั๊กอินไม่ได้งานที่ดีของการซิงค์ข้อมูลระหว่างสองเซิร์ฟเวอร์

โดยค่าเริ่มต้นมันจะเขียนทับข้อมูลปลายทางทั้งหมด แต่ฉันเพิ่งใช้การปรับปรุงบางอย่างกับปลั๊กอินที่อนุญาตให้คุณซิงค์เฉพาะตารางฐานข้อมูลที่เฉพาะเจาะจง สิ่งนี้สามารถช่วยคุณเก็บความคิดเห็นผู้ใช้และข้อมูลอื่น ๆ ที่คุณไม่ต้องการเขียนทับ นั่นให้ความละเอียดที่คุณต้องการหรือไม่?

ฉันยังไม่ได้เผยแพร่การเปลี่ยนแปลงสู่สาธารณะ แต่หากคุณสนใจสำเนาให้ส่งอีเมลมาที่ simon-at-yump.com.au หากใครพบว่ามีประโยชน์หรือมีคำขอคุณสมบัติเพิ่มเติมแจ้งให้เราทราบและฉันจะเห็นสิ่งที่ฉันสามารถทำได้


UPDATE:ฉันยังพบเพียงWP-Sync-DBปลั๊กอินซึ่งเป็นทางแยกของการค้าWP-โยกย้าย-DB-Proปลั๊กอิน มันไม่ได้เป็นสิ่งที่คล้ายกันมากแม้ว่าอาจจะมีเงามากกว่าฐานข้อมูลการซิงค์


0

มีบริการเชิงพาณิชย์ที่ค่อนข้างใหม่สำหรับงานนี้โดยเฉพาะ มันเรียกว่า RAMP:

http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress


1
: มีข้อ จำกัด ในการให้บริการที่ทำให้มันไม่พอดีกับกรณีการใช้งานของฉัน
marfarma

2
กรณีการใช้งานของฉัน - เพิ่มฟังก์ชั่นในขณะที่การผลิตเพิ่มเนื้อหา อ้างอิง: "รายการต่อไปนี้ไม่ได้รับการสนับสนุนในขณะนี้: การตั้งค่า (การตั้งค่าหลักและปลั๊กอินยกเว้นว่าจะเลือกใช้ RAMP)" 99.99% ของตัวเลือกชุดรูปแบบและปลั๊กอินและการตั้งค่าจะไม่โยกย้าย หากไม่มีการเปลี่ยนแปลงรหัสเกี่ยวกับการผลิตโพสต์ประเภทกำหนดเองจะไม่ย้ายข้อมูล ลืมเกี่ยวกับการเพิ่มตารางที่กำหนดเองและข้อมูลของพวกเขา
marfarma

1
ผลิตภัณฑ์ดังกล่าวมีเนื้อหาการใช้งานที่ถูกต้อง - เนื้อหาชั่วคราวและจากนั้นจึงเผยแพร่สด น่าเสียดายที่นั่นไม่ใช่ปัญหาที่ฉันเกี่ยวข้อง กลับมาที่ OP อีกครั้งมันไม่ชัดเจนว่าจะใช้กรณีใดที่เขาติดต่อด้วย - ดังนั้นมันจึงเป็นทางออกที่สมบูรณ์แบบสำหรับร้านค้าของพวกเขา
marfarma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.