[U]ข้อมูลพื้นฐาน[/U]
center(master0) - master1 = replicate db1
center(master0) - master2 = replicate db2
center(master0) - master3 = replicate db3
.
.
.
center(master0) - master10 = replicate db10
[U]ข้อมูล network[/U]
center(master0) = lease line
center(master1-10) = adsl
[U]คำถาม[/U]
1.การออกแบบของผมถูกต้องหรือไม่ครับ ถ้าไม่ถูก แก้ไขอย่างไร
2.มีวิธีการ set อย่างไรครับ ผมเห็นในเว็บมีแนะนำทำแบบ circle(หมุนกันเป็น master) แต่กรณีนี้ไม่ตรงกับลักษณะทางกายภาพการทำงานของผม
3.ผมลองทำ
center(master0) - master1 = replicate db1
center(master0) - master2 = replicate db2
center(master0) replicate ข้อมูลเฉพาะ db1 เท่านั้นต้องทำยังไงดีครับ
หากใครช่วยได้จะเป็นความรู้ที่มีพระคุณต่อประเทศชาติอย่างมาก
ขอบคุณครับ
icez
June 18, 2013, 9:41pm
2
หมายความว่าที่ center จะมี database ทั้งหมดอยู่ ถูกมัย้ครับ
ถ้าใช่ งั้นก็เซต replicate ตามปกติ
แล้วเซต replicate-do-db=db1 ใน my.cnf ที่เครื่อง master1,
replicate-do-db=db2 ใน my.cnf ที่เครื่อง master2,
…
ประมาณนี้แหละครับ
เดี๋ยวนะ เห็นบอกว่า master-master หมายความว่า ทั้งคู่มีการอ่านเขียนพร้อมๆ กัน โดยที่ทั้งสิบที่ จะ sync กลับมาที่ center ตัวเดียวใช่หรือเปล่าครับ?
ผมไม่แน่ใจว่า mysql galera จะทำได้หรือเปล่า
ว่าแต่จำเป็นต้อง master-master จริงๆ เหรอครับ? ช้า และได้คิดเรื่องวิธีการจัดการในกรณีที่ data conflict ไว้หรือยังครับ?
icez:
หมายความว่าที่ center จะมี database ทั้งหมดอยู่ ถูกมัย้ครับ
ถ้าใช่ งั้นก็เซต replicate ตามปกติ
แล้วเซต replicate-do-db=db1 ใน my.cnf ที่เครื่อง master1,
replicate-do-db=db2 ใน my.cnf ที่เครื่อง master2,
…
ประมาณนี้แหละครับ
ผมลองทำดูแล้วครับ จึงเกิดคำถามข้อ 3 ครับ
DinoNet:
เดี๋ยวนะ เห็นบอกว่า master-master หมายความว่า ทั้งคู่มีการอ่านเขียนพร้อมๆ กัน โดยที่ทั้งสิบที่ จะ sync กลับมาที่ center ตัวเดียวใช่หรือเปล่าครับ?
ผมไม่แน่ใจว่า mysql galera จะทำได้หรือเปล่า
ว่าแต่จำเป็นต้อง master-master จริงๆ เหรอครับ? ช้า และได้คิดเรื่องวิธีการจัดการในกรณีที่ data conflict ไว้หรือยังครับ?
ถ้าหาก center เป็น slave , slave เป็น slave ได้เพียง master เดียวหรือเปล่าครับ?(พอได้ศึกษามาบ้าง) และไม่สามารถ write ไปยัง master ได้
แต่ ภายในเครื่องเดียวกันสารมารถเป็นได้ทั้ง master-slave (ลองทำแล้ว) ปัญหาของข้อนี้ก็คือ master-slave มีมากกว่า 1 คู่มันเลยรวน หึหึ
2.ลักษณะทางกายภาพด้าน internet มีปัจจัยต่อการออกแบบระบบแบบนี้ เพราะ เครื่องที่เป็น master อยู่ต่างสถานที่กันทั้งสิ้น และเชื่อมต่อด้ววย adsl แต่ center เป็น lease line
ถ้าหากลองเคย config ในค่า config จะมี ให้บอกว่า master ip อะไร ซึ่ง (master เป็น adsl นี่แหละคทอปัญหาครับ)
หรือท่านอื่นมีแนวทางอื่นเสนไหมครับ
ขอบคุณครับ
จากข้อสอง ผมสรุปได้หรือเปล่าว่า การ Write data จะทำจาก remote site แล้วอยากได้ solution ที่ sync data กลับมาหาส่วนกลางอัตโนมัติ โดยที่ไม่มีการ Write Data ที่เครื่อง center เลย อารมณ์ประมาณ Backup ตลอดเวลา ไว้ตรงกลางประมาณนั้น
ท่าน [B]DinoNet[/B] เข้าใจความต้องการของผมถูกต้องแล้วครับ
ที่อยากได้ center ไม่จำเป็นต้อง write ข้อมูลตลอดเวลาหรือไม่ก็ได้ แต่ขอ sync data มารวมกันที่ center เพื่อประมวลผลทางสถิติ ก็พอ
แต่ปัญหาเกิดขึ้นที่ center เพราะ config ของ center(master0) ->ต้องบอกว่า master1(ที่หน้างาน master ip อะไร)(ลองใน vmware ยังไม่ work เลย) , และ
config ของ master1 ต้องบอกว่า center(master0) ip อะไรไม่มีปัญหา เพราะเป็น lease line อยู่แล้ว
ผมตอบตรงคำถามไหมครับ
ต่อให้ no-ip สามารถทำงานได้ solution นี้ก็ยังไม่ work ครับ เพราะปัญหาเรื่อง Link ADSL ที่ remote site อาจจะ down ได้ ซึ่งทำให้ต้อง resync ใหม่
ถ้าเอาวิธียากๆ ก็อาจต้องเขียน tools เอง based on MQ หรือ ไม่ก็ดูพวก paper เกี่ยวกับเรื่อง disconnected database synchronization แทน
ถ้าเอาง่ายขึ้นมาหน่อย ก็ลองดูตัวนี้ แต่ผมไม่แน่ใจว่าจะ work หรือเปล่านะครับ http://www.symmetricds.org/ ยังไม่เคยลองเหมือนกัน
แต่ถ้าไม่ต้องการ real-time ผมว่าเขียน script mysqldump แล้ว FTP/SCP มาไว้ส่วนกลางไม่ง่ายกว่าเหรอครับ? (กรณี Data ไม่ใหญ่มาก) หรือจะทำ rsync โดยให้ remote site เป็นคน try จนกว่าจะ success น่าจะดูง่ายกว่านะครับ
ลองอ่าน paper นี้ดูครับ http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.6498
ปล. ผมไม่แน่ใจ scope ของงานนะครับว่าใหญ่มากน้อยขนาดไหน แต่ถ้าเดินถูกทาง จะยากช่วง design & development แต่หลังจากนั้นแทบไม่ต้องทำอะไรมาก monitor อย่างเดียว ไม่ต้องแตะต้องระบบ ไม่ต้อง manual override มากเกินความจำเป็น
DinoNet:
ต่อให้ no-ip สามารถทำงานได้ solution นี้ก็ยังไม่ work ครับ เพราะปัญหาเรื่อง Link ADSL ที่ remote site อาจจะ down ได้ ซึ่งทำให้ต้อง resync ใหม่
ถ้าเอาวิธียากๆ ก็อาจต้องเขียน tools เอง based on MQ หรือ ไม่ก็ดูพวก paper เกี่ยวกับเรื่อง disconnected database synchronization แทน
ถ้าเอาง่ายขึ้นมาหน่อย ก็ลองดูตัวนี้ แต่ผมไม่แน่ใจว่าจะ work หรือเปล่านะครับ http://www.symmetricds.org/ ยังไม่เคยลองเหมือนกัน
แต่ถ้าไม่ต้องการ real-time ผมว่าเขียน script mysqldump แล้ว FTP/SCP มาไว้ส่วนกลางไม่ง่ายกว่าเหรอครับ? (กรณี Data ไม่ใหญ่มาก) หรือจะทำ rsync โดยให้ remote site เป็นคน try จนกว่าจะ success น่าจะดูง่ายกว่านะครับ
ลองอ่าน paper นี้ดูครับ CiteSeerX
ปล. ผมไม่แน่ใจ scope ของงานนะครับว่าใหญ่มากน้อยขนาดไหน แต่ถ้าเดินถูกทาง จะยากช่วง design & development แต่หลังจากนั้นแทบไม่ต้องทำอะไรมาก monitor อย่างเดียว ไม่ต้องแตะต้องระบบ ไม่ต้อง manual override มากเกินความจำเป็น
ขอบคุณท่าน DinoNet มากครับมองเห็นได้หลายแนวทางทีเดียว
ขนาดข้อมูล 500-700 MB (ณ.ตอนนี้ อนาคตมีโอกาศเพิ่มตลอด)
#ผมคิดว่าคำตอบของผมน่าจะเริ่มจากง่ายไปก่อน->ทำ rsync โดยให้ remote site เป็นคน try จนกว่าจะ success
ขอบคุณมากๆครับ ประเทศชาติมีคนเก่งมาช่วยแก้ปัญหาแล้ว…:beautifu2:
icez
June 18, 2013, 11:44pm
9
mysql replicate ถ้า connection หลุดมัน resume จากจุดที่หลุดได้นะคัรบ แต่ขา upload จะเร้วพอรึเลป่าหว่า - -’
ICOM
June 19, 2013, 9:13am
10
นอกประเด้น
ขอโทษน่ะครับ ท่าน จขกท. จะถามคำถาม ก็ถามเถอะครับ ไม่ต้องเอาประเทศชาติมาอ้างถึงหรอกครับ
multi-master กับ master-slave ทำงานต่างกันสิ้นเชิง
เท่าที่อ่านดูคงไม่ใช่ master-slave เพราะต้อง sync กลับมาด้วย ก็ไปดู multi-master ซึ่ง multi-master แล้วกระจาย master ย่อย หลายๆ ตัว แล้วทุกอันยังต้อง sync กลับมา master0 ด้วยนั้น ไม่น่าจะทำได้ครับ โดยเฉพาะอย่างยิ่ง mult-master 2 ตัว ทำไม่ได้ครับ เพราะจะเกิดกรณี split brain เมื่อ adsl หลุด
ถ้าผมเข้าใจไม่ผิด หากต้องการข้อมูลชุดเดียวกันทั้งหมด ต้องทำ multi-master วงเดียว แยกไปตามสาขาต่างๆ ครับ และสาขาต่างๆ ต้องเชื่อมถึงกันได้หมดด้วย