หมวดหมู่

บันทึกการทำ Replicate บน Debian

วันที่ 17 ส.ค. 54 + 00:00.00 , กลุ่ม MySQL , ป้าย debian, mysql, replicate

1. สร้าง User ของ MySql ที่ฝั่ง Master

ขั้นแรกสุด สร้าง User ของ MySQL เพื่อใช้สำหรับการ Replicate ก่อน
กากๆ อย่างผม ขอแนะนำให้ใช้ phpMyAdmin ในการสร้างครับ ง่ายดี

ขั้นตอนการสร้าง ไม่มีอะไรพิเศษ เพราะดันมีเมนู สร้างมาให้ต่างหากเลย ตามรูปครับ



ขอแนะนำว่า ให้ Fix IP ของเครื่อง Slave ลงไปด้วยเลย ตอนกำหนดโฮส จะได้ปลอดภัยขึ้นอีกระดับหนึ่ง


2. การ Config ค่า my.cnf ฝั่ง Master

server-id = 111
log_bin = mysql-bin
expire_logs_days = 10
max_binlog_size	 = 100M
binlog_ignore_db = mysql, .....

วางไว้หลัง [mysqld] นะจ๊ะ

อธิบาย ตัวแปลสำคัญๆ มีแค่

  • server-id ... เป็นหมายเลข ของ server ซึ่งเรากำหนดเอง เลขอะไรก็ได้ แต่ปกติผม จะใช้ หมายเลข IP (ชุดที่ 4) ของเครื่อง ไปเลย ง่ายดี
  • binlog_ignore_db ... ฐานข้อมูลที่ ไม่ต้องการ จะทำ replicate
  • ส่วนอันอื่นๆ ก็ ไม่มีอะไรพิเศษ ตั้งตามๆ default เอา เอาไว้ มันไม่เวริค ค่อยไป ไล่ดูว่า ต้องปรับค่าอะไร


3. การ Config ค่า my.cnf ฝั่ง Slave

server-id = 222
master-host = 8.8.8.111
master-user = replication
master-password = replication
master-connect-retry = 30
relay-log=relay-bin
relay-log-space-limit=1024M
slave-skip-errors=all


วางไว้หลัง [mysqld] เหมือนกัน

อธิบาย ตัวแปลสำคัญๆ มีแค่

  • master-host, master-user, master-password ... ข้อมูลสำหรับการเชื่อมต่อ ไปที่ เครื่อง master
  • master-connect-retry ... เวลาเชื่อมต่อเครื่อง master ไม่ได้ จะให้ลองอีกกี่ครั้ง ถึงจะม้วนเสื่อกลับบ้านนอน



4. คำสั่ง scp ดึงข้อมูลจากอีกเครื่อง

คำสั่ง scp ที่มัน อรรถประโยชน์จริงๆ เดี๋ยวว่าจะเขียน วิธ๊ใช้คำสั่งนี้ แบบต่างๆ อีกที

ขั้นแรก เริ่มจาก stop mysql ทั้ง 2 ฝั่ง ก่อน (เพื่อไม่ให้ข้อมูลมันเพิ่มระหว่างกำหลัง copy)

จากนั้น ใช้คำสั่งแบบนี้ ที่เครื่อง slave

scp -r root@8.8.8.111:/var/lib/mysql/\{database1,database2 ... ,databaseN\} /var/lib/mysql


แล้ว มันจะถาม password root มาให้เรากรอก
(ถ้าครั้งแรก มันจะถามเรื่องการยอมรับ สิทธิ์ อะไรซักอย่างก่อน เหมือนต่อเรา ssh เข้า server ครั้งแรก)

กรอก password เสร็จ กด enter ถ้าไม่มีอะไรผิดพลาด ระบบ ก็จะเริ่ม copy ข้อมูล จากอีกเครื่อง มายัดใส่เครื่องเราทันที

เมื่อ copy เสร็จ อย่าลืมใช้คำสั่ง

chown -R mysql: /var/lib/mysql/database1
chown -R mysql: /var/lib/mysql/database2
...
chown -R mysql: /var/lib/mysql/databaseN


ด้วยเพื่อให้ MySQL ใช้งานได้


5. สั่งให้เริ่มทำ Replicate

ผมอ่านตามเว็บอื่นๆ มันจะมีคำสั่ง start slave อะไรไม่รู้ด้วย ผมก็งงๆ

เพราะ พอสั่ง start mysql server ทั้งคู่ ปุ๊บ มันก็เริ่ม replicate mysql ทันที (แถมข้อมูล ก็ตรงกันดีด้วย)
ก็เลย งงๆ ว่า ลืมข้ามขั้นตอนอะไรรึป่าว แต่ยังไง ก็ใช้งานได้ ตามที่ต้องการแล้วล่ะ

พอ start mysql เสร็จ ระหว่างนี้ คนยังเข้าใช้งานไม่เยอะ ขอแนะนำให้ mysqlcheck ด้วย ทั้ง 2 เครื่องเลย ด้วยคำสั่งนี้

mysqlcheck --silent --auto-repair --all-databases -uroot -p


เพื่อความแน่นอนของข้อมูลอันมีค่าของเรา


ปล. ผมมือใหม่นะ มีเหตุการณ์ ทำให้ต้องมาทำเอง
avatar
Synchronize ใครกันล่ะหว่า ?

ไม่สามารถแสดงความคิดเห็นได้ จำเป็นต้อง เข้าระบบสมาชิก ก่อน หรือ สมัครสมาชิกใหม่

ขับเคลื่อนโดย un-no Engine 2.2.0 © ลิขสิทธ์โดย บริษัท อันโน คอร์ปอเรชั่น จำกัด [ แผนที่เว็บไซต์ ]

แก้ไขล่าสุด: 2011-10-12 18:22:02, หมายเลขเซสชั่น: cf3a2tnfe1k0gp6be6mi9mjjf5, ใช้เวลาสร้าง: 0.018542051 วินาที (force)