BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: เข้ม ที่ สิงหาคม 15, 2008, 13:56:01 PM
-
ตอนนี้ผมทำ Replication ดังนี้
ช่วงแรกทำ MASTER ----> SLAVE 1, 2 พร้อมกัน
แต่เมื่อวานได้เปลียนใหม่เป็น
MASTER ----> SLAVE 1 -----> SLAVE 2
MASTER ---> SLAVE 1 ทำตลอดเวลา
SLAVE 1 ---> SLAVE 2 ทำตามกำหนดเวลา
วิธีการนำเข้าข้อมูล SLAVE 2 คือ initial import จาก SLAVE 1 ซึ่งเดิมที SLAVE 2 มีข้อมูลอยู่ก่อนแล้วตอนที่ Replicate พร้อมกัน โดยทำ initial import ทับไปเลย
หลังจากขบวนการ Replication อยู่ในสถานะ Active-syn แล้ว เมื่อตรวจสอบข้อมูลในหน้า บันทึกผลวินิจฉัย
เปรียบเทียบกัน ทั้ง 3 เครื่อง ในแต่ละวัน มีบางวันไม่เท่ากันครับ ยิ่งวันนี้ยิ่งไม่เท่ากันเลย ตัว SLAVE 2 จำนวนคนไข้น้อยกว่า ต่างกันประมาณ ครึ่งหนึ่ง มันเกิดอะไรขึ้นครับ ผมทำถูกวิธีหรือป่าว?
-
ขอความกระจ่างจากท่านผู้รู้ด้วยนะคะ
ซึ่งการทำ Replication สามารถทำเป็นทอดๆ เหมือนกับที่พี่ carbopolnph อธิบายไปแล้วได้ใหม
เพราะตอนนี้ SLAVE 2 ข้อมูลต่างจาก server มากๆ พยายามค้นคว้าหลายวิธีแล้ว ทดลองแก้ปัญเองดูแล้วก็ไม่สำเร็จ :'(
-
น่าจะทำได้นะครับ แต่จาก Slave1 -> Slave2 ต้องใช้ระบบ Replication ของ MySQL ครับ
-
ตอนนี้ผมทำ Replication ดังนี้
ช่วงแรกทำ MASTER ----> SLAVE 1, 2 พร้อมกัน
แต่เมื่อวานได้เปลียนใหม่เป็น
MASTER ----> SLAVE 1 -----> SLAVE 2
MASTER ---> SLAVE 1 ทำตลอดเวลา
SLAVE 1 ---> SLAVE 2 ทำตามกำหนดเวลา
วิธีการนำเข้าข้อมูล SLAVE 2 คือ initial import จาก SLAVE 1 ซึ่งเดิมที SLAVE 2 มีข้อมูลอยู่ก่อนแล้วตอนที่ Replicate พร้อมกัน โดยทำ initial import ทับไปเลย
หลังจากขบวนการ Replication อยู่ในสถานะ Active-syn แล้ว เมื่อตรวจสอบข้อมูลในหน้า บันทึกผลวินิจฉัย
เปรียบเทียบกัน ทั้ง 3 เครื่อง ในแต่ละวัน มีบางวันไม่เท่ากันครับ ยิ่งวันนี้ยิ่งไม่เท่ากันเลย ตัว SLAVE 2 จำนวนคนไข้น้อยกว่า ต่างกันประมาณ ครึ่งหนึ่ง มันเกิดอะไรขึ้นครับ ผมทำถูกวิธีหรือป่าว?
ตรวจสอบที่ ตาราง repication_log ครับ ว่า id เท่ากันหรือเปล่า
-
ผมเคยทดสอบโดยการ inital import ไปเครื่อง slave เมื่อเสร็จแล้วก็ run replicate ไป เครื่อง slave
มันมีบางตัว error อยู่ครับและข้อมูลก็ไม่ครบครับ เพราะฉะนั้นจึงเป็นเหตุให้ผมต้อง inital import บ่อยขึ้นครับ
เพื่อป้องกันข้อมูลที่ run replicate ไปไม่ครบครับ
ผมทดสอบโดยตรวจ ตาราง opitemrece ในช่วงเวลาย้อนหลังครับ จำนวนrecord มันไม่เท่ากับของจริงครับ
มีภาพตัวอย่างมาให้ดูครับ
ผมใช้ 3.51.5.14 ครับ แต่จะลองทดสอบไปเรื่อยๆครับ
-
อ้างจาก อาจารย์ doraemon(saiyok) : ตรวจสอบที่ ตาราง repication_log ครับ ว่า id เท่ากันหรือเปล่า
*** ไม่เท่ากันคะ SLAVE 1 = 78532 , SLAVE 2 = 96 :(
สอบถามเพิ่มเติมคะ : เริ่มจะงง! กับระบบ repication แล้วคะ
1.กรณีที่ทำ Replication เครื่องเดียว ถ้ากรณีที่ข้อมูลเครื่อง server โดนมือดีเปลี่ยนแปลงโครงสร้างตาราง ข้อมูลจากเครื่อง Slave ก็จะโดนเปลี่ยนไปด้วย ใช่หรือไม่คะ (เมื่อ server เป็นอะไร นำตัว Slave มาใช้งานก็ไม่ได้ )
2. ในกรณีที่ทำ Replication จากระบบ HOSxP สามารถใส่ Slave 2 เครื่องได้ แต่ถ้ากด Run Agent ข้อมูลจะวิ่งพร้อมกันทันที่ (ทาง รพ.จึงต้องคิดแผน 2 ทำระบบ Replication เหมือนกับคุณcarbopolnph ได้อธิบายไว้เบื้องต้น แล้วก็เกิดปัญหาที่ได้กล่าวไว้แล้ว )
สามารถเลือกได้ใหมคะ ว่า สามารถเลือกตัว Slave ในการ Replication เป็นรายตัว และเป็นช่วงเวลาได้ เพราะ รพ.มีปัญหาเรื่องระบบความปลอดภัยมากๆ
ขอคำตอบ 2 ข้อนี้ด้วยนะคะ
ขอบคุณคะ
-
Syslog-ng เพิ่มระบบตรวจสอบการเข้ามาของทุกคน ตรวจสอบการทำงานของ mysql ด้วย
แต่ผมทดสอบแล้วมันทำให้ระบบทำงานหนักขึ้น
-
คงต้องมานั่งคิดดูอีกครั้งนะครับ ว่าทำไมจึงต้อง setup ระบบ replication
ระบบ Replication ถูกออกแบบมาสำหรับแก้ปัญหาในกรณี Hardware ของเครื่องหลักมีปัญหา หรือช่วยลด workload จากการทำรายงาน แต่ไม่ได้ถูกออกแบบมาสำหรับป้องข้อมูลถูกแก้ไขหรือเปลี่ยนแปลงนะครับ หากต้องการเก็บข้อมูล ณ ช่วงเวลานั้นเอาไว้ น่าจะทำ Full Backup จะดีกว่าหรือเปล่าครับ หรือ Backup / Restore ไว้ในเครื่อง stand by เป็น ระยะๆ ก็น่าจะดีกว่าทำระบบ Cascade replication เช่นกัน
-
ขอบคุณสำหรับคำตอบของอาจารย์คะ เข้าใจถ่องแท้มากๆ แต่เดิมก็เข้าใจเกือบจะประมาณนี้ แต่พอโดนผู้บริหารถามมากๆ ก็เริ่ม งง! คะ
แต่ตอนนี้ทางผู้ดูแลระบบของโรงพยาบาลต้องมานั่งคิดใหม่แล้วคะ ว่าจะทำอย่างไรให้ข้อมูลปลอดภัยที่สุด และถ้าเกิดปัญหาต้องหยุดระบบให้ใช้ระยะเวลาให้น้อยที่สุด ณ ตอนนี้ข้อมูลโรงพยาบาลเริ่มแยะขึ้นทุกวัน Visit เฉลี่ยวันละ 600 - 1200 คน ซึ่งทางผู้ดูแลระบบจะนำข้อเสนอที่อาจารย์เสนอมาประชุมกับผู้บริหารอีกครั้งคะ
ขอขอบคุณทุกๆ คำตอบที่ตอบปัญหาให้กับกระทู้นี้คะ
-
อาจารย์อ็อด แนะนำว่า ให้ไลท์ไฟล์ Backup ใส่แผ่น DVD ฝากเก็บที่ ตู้เซฟโรงพยาบาลครับ
วิธีนี้ แผ่น DVD ต้อง ดีหน่อยครับ ผมทำตามอาจารย์อ็อดแล้ว 1อาทิตย์ไลท์ใส่แผ่น 1แผ่น ส่วน
backup file ทำทุกวัน น่าจะดีกว่าเก็บไว้ในเครื่อง ฝนตก
ฟ้าผ่ามา ถ้าซวย ก็คงวิ่งหมดทั้งวง Lan อย่างงี้กู้ไม่ได้แน่นนอน จบกัน นครนายก ฟ้ายิ่งแรง อิอิ
-
เท่าที่ผมสังเกตุพบว่า เมื่อทำการ intial import แล้ว ข้อมูลจะเหมื่อน Master ทุกอย่าง แต่หลังจาก run agent แล้ว เครื่อง Slave data ที่เพิ่มใหม่เข้าไป ถ้าเป็นภาษาไทย จะเป็นตัวอักษร ??????? เช่นตาราง patient HN ที่เพิ่มใหม่ ชื่อผู้รับบริการจะไม่เป็นภาษาไทย
-
mysql ไม่ได้กำหนด default character set เป็น tis620 ครับ
-
ช่วยตรวจสอบด้วยครับ ใน my.ini slave window 2003 ram 2 GBครับ
[mysqld]
basedir=D:\Program Files\HOSxP\MySQL
datadir=D:\Program Files\HOSxP\MySQL\data
default-character-set=tis620
key_buffer=720M
table_cache=512
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=1M
myisam_sort_buffer_size=128M
max_allowed_packet=32M
default-character-set=tis620
thread_cache = 8
query_cache_size= 32M
thread_concurrency = 8
skip-character-set-client-handshake
skip-locking
skip-name-resolve
big-tables
init_connect = 'SET NAMES tis620'
default-character-set=tis620
max_connections=1000
ulimit -n 30000
innodb_data_file_path=ibdata1:100M:autoextend
innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=512M
innodb_additional_mem_pool_size=20M
innodb_log_file_size=64M
innodb_log_buffer_size=8M
innodb_lock_wait_timeout=50
innodb_thread_concurrency = 0
max_connections=1000
innodb_file_per_table
[mysql]
default-character-set=tis620
[mysqldump]
default-character-set=tis620
max_allowed_packet=16M
allow-keywords
[WinMySQLadmin]
user=sa
password=sa
Server=D:/Program Files/HOSxP/MySQL/bin/mysqld-nt.exe
-
ต้องใช้คำสั่ง show variables ของเครื่อง Server แล้วส่งเข้ามาครับ
-
show variables ตามนี้ครับ อ.ชัยพร
-
character_set_system utf8
-
เพิ่มตรงส่วนใหนครับใน my.ini อ.อ๊อด ช่วยเขียนเพิ่มเติมในบรรทัดใหนของ win.ini ก็ดีนะครับจะได้เข้าใจเร็วขึ้น
หรือขอตัวอย่างไฟล์ my.cnf my.ini ก็ได้ครับ ขอบคุณมากครับ
-
ขอคำแนะนำด้วยครับ อ.ชัยพร
-
variable เป็นของ master หรือ slave ครับ ถ้าเป็นของ slave ก็ไม่มีอะไรผิดปกติครับ ลอง initial import ใหม่ แล้วรอดูว่ามีปัญหาเหมือนเดิมหรือไม่นะครับ
-
variable เป็นของ slave ครับ intial import ก็เป็นเหมือนเดิมครับ
-
ช่วยส่ง ผลลัพท์ของคำสั่ง show create table patient เข้ามาด้วยครับ