BMS-HOSxP Community

HOSxP => MySQL => ข้อความที่เริ่มโดย: manoi ที่ กุมภาพันธ์ 08, 2007, 06:49:00 AM

หัวข้อ: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: manoi ที่ กุมภาพันธ์ 08, 2007, 06:49:00 AM
ในการใช้งาน MySQL สามารถเปิดใช้งานระบบ replication ที่มีใน MySQL ได้ โดยทำตามขั้นตอนดังนี้ครับ

1. ติดตั้ง MySQL ลงในเครื่่องที่จะทำหน้าที่เป็น Slave
2. เปิด configuration file ของ mysql มาแก้ไข หากใช้ linux จะอยู่ที่ /etc/my.cnf หรือหากใช้ Windows จะอยู่ที่ c:\windows\my.ini
3 ในเครื่องที่ทำหน้าที่เป็น Master ให้เพิ่ม ตรง section [mysqld] ดังนี้ครับ


server-id=1
log-bin
sync_binlog=1
innodb_safe_binlog


และที่สำคัญต้อง grant สิทธิให้ sa ด้วยคำสั่ง
grant all on *.* to sa@'%' identified by 'sa' with grant option

4. ในเครื่องที่ทำหน้าที่เป็น Slave ให้เพิ่ม ตรง section [mysqld] ดังนี้ครับ (สมมติว่าเครื่อง server มี IP Address เป็น 192.168.0.1 นะครับ)


server-id=2
master-host=192.168.0.1
master-user=sa
master-password=sa
replicate-do-db=hos
log-warnings
slave-skip-errors=all


5. ทำการ Re-Start mysql ทั้ง master และ slave

6. ที่เครื่อง slave ใช้คำสั่ง
mysql> load data from master
เพื่อทำนำเข้าข้อมูลจากเครื่อง master ไปยัง slave

หาไม่สำเร็จให้เปิด Log file ของ MySQL มาดู ทั้งใน Master และ slave
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: monchai ที่ กุมภาพันธ์ 23, 2007, 03:04:00 AM
ทำตามอาจารย์ทุกขั้นตอนแล้ว  test ไม่ผ่าน
server ip 192.168.0.5
slave  ip 192.168.0.6
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: doramon ที่ กุมภาพันธ์ 23, 2007, 04:30:48 AM
replication  อันที่เป็น  windows ปิดหรือยัง 
ของผมทดสอบผ่านแล้วครับ
 :)
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: มดตานอย ครับ.. ที่ กุมภาพันธ์ 24, 2007, 01:17:03 AM
ที่  slave    ติดตั้ง  mysql   แล้ว   ต้อง  create database ไหมครับ  อย่างไร

หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: por ที่ กุมภาพันธ์ 24, 2007, 02:11:31 AM
ที่  slave    ติดตั้ง  mysql   แล้ว   ต้อง  create database ไหมครับ

create database  ใหม่ครับเพื่อให้รองรับ data ครับ
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: มะโหน่ง ที่ กุมภาพันธ์ 24, 2007, 03:15:47 AM
ERROR 1187 (HY000): Failed rebuilding the index of  dumped table 'credit_card_type'

Server ที่ทำเป็น Slave เป็น FreeBSD 6.2 MySQL 5.0.27 ส่วน Master เป็น windows 2003 Server MySQL 4.1.12 ครับ มันแจ้ง Error เหมือนข้างบนครับ ไม่รู้ว่า จะแก้ไขยังไงครับ
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: เข้ม ที่ พฤศจิกายน 17, 2008, 22:37:32 PM
ในการใช้งาน MySQL สามารถเปิดใช้งานระบบ replication ที่มีใน MySQL ได้ โดยทำตามขั้นตอนดังนี้ครับ

1. ติดตั้ง MySQL ลงในเครื่่องที่จะทำหน้าที่เป็น Slave
2. เปิด configuration file ของ mysql มาแก้ไข หากใช้ linux จะอยู่ที่ /etc/my.cnf หรือหากใช้ Windows จะอยู่ที่ c:\windows\my.ini
3 ในเครื่องที่ทำหน้าที่เป็น Master ให้เพิ่ม ตรง section [mysqld] ดังนี้ครับ


server-id=1
log-bin
sync_binlog=1
innodb_safe_binlog


และที่สำคัญต้อง grant สิทธิให้ sa ด้วยคำสั่ง
grant all on *.* to sa@'%' identified by 'sa' with grant option

4. ในเครื่องที่ทำหน้าที่เป็น Slave ให้เพิ่ม ตรง section [mysqld] ดังนี้ครับ (สมมติว่าเครื่อง server มี IP Address เป็น 192.168.0.1 นะครับ)


server-id=2
master-host=192.168.0.1
master-user=sa
master-password=sa
replicate-do-db=hos
log-warnings
slave-skip-errors=all


5. ทำการ Re-Start mysql ทั้ง master และ slave

6. ที่เครื่อง slave ใช้คำสั่ง
mysql> load data from master
เพื่อทำนำเข้าข้อมูลจากเครื่อง master ไปยัง slave

หาไม่สำเร็จให้เปิด Log file ของ MySQL มาดู ทั้งใน Master และ slave


มีใครใช้แบบนี้บ้างครับ (ขอขุดมาถามนะครับบังเอิญอ่านไปอ่านมา ก็เจอครับ)
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: SoRnKuNg ที่ กุมภาพันธ์ 03, 2009, 10:39:35 AM
พอดีผมเปิดเว็บไปอ่านเจอวิธีทำ replicate เลยเอามาฝากชาว HOSXP อะครับ
ถ้าผมเข้าใจไม่ผิด น่าจะใช้แทน run agent ของ HOSXP ได้เลย ถ้าเราใช้บน linux

คัดลอกมาจากเว็บ http://www.mindphp.com/modules.php?name=News&file=article&sid=87
 (http://www.mindphp.com/modules.php?name=News&file=article&sid=87)
บอกเป็นขั้นตอน คล้ายๆของ อ.MN
เผื่อช่วยบางคนที่ยัง run ไม่ผ่านได้บ้าง
มีผิดพลาดตรงไหนช่วยแนะนำด้วยนะครับ ผมก็ยังไม่เคยลองทำ แต่ที่รู้ๆทำแน่ๆ
ทดสอบแล้วผลเป็นอย่างไรช่วยบอกด้วยนะครับ ขอบคุณครับ

ภาพรวมของการทำ Replicate MySQL
(http://ejeepss.thaipki.com/files/2007/08/replicatemysql3.jpg)

ขั้นตอนที่ 1.

หากต้องการ Replicate Master ที่มีข้อมูลอยู่แล้ว จะต้อง Dump ข้อมูลออกมาเพื่อทำให้ Slave มีข้อมูลที่เท่าเทียมกันเสียก่อน
(ตรงนี้ถ้าเดาไม่ผิดน่าจะใช้คำสั่งที่ อ. MN โพสมา คือ load data from master
หรือไม่ก็ใช้ HOSXP Initial Import เข้ามาก็ได้นะครับ)


ขั้นตอนที่ 2.


สร้าง User ขึ้นมาเพื่อทำหน้าที่สำหรับทำหน้าที่ Replicate เท่านั้นในฝั่ง Master โดยใช้คำสั่ง


mysql> GRANT REPLICATION SLAVE ON *.*
    -> TO 'repl'@'%.192.168.0.20' IDENTIFIED BY 'slavepass';
* โดยที่ให้สิทธิ์ให้การ Replicate จาก User ที่ชื่อว่า repl และรหัสผ่าน slavepass ที่มาจากเครื่อง IP 192.168.0.20 เท่านั้น


ขั้นตอนที่ 3.


ฝั่ง Master เข้าไปแก้ไขไฟล์ my.ini ที่ C:Program FilesMySQLMySQL Server 5.1>my.ini โดยเพิ่มด้านล้างหัวข้อ [mysqld] ดังนี้


# ——————————
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
# ——————————-


โดยที่ :


log-bin=mysql-bin # Binary Log
server-id=1 # ลำดับ Server master กำหนด =1
innodb_flush_log_at_trx_commit=1 #สำหรับผู้ใช้ฐานข้อมูลที่เป็น InnoDB จำเ็ป็นจะต้องให้ Master
#commit งานให้เรียบร้อยก่อน ถึงจะทำการ Replicate ไปให้ Slave
sync_binlog=1 # ทำการ Sync Log สำหรับ InnoDB และหากเกิด Master Crash จะไม่ทำให้ Slave Sync ข้อมูลซ้ำ ในกรณีที่ Master ฟื้นกลับมาอีกครั้ง
ขั้นตอนที่ 4.


ฝั่ง Slave ให้เข้าไปแก้ไขไฟล์ my.ini ที่ C:Program FilesMySQLMySQL Server 5.1>my.ini เช่นเดียวกับฝั่ง Master โดยเพิ่มด้านล้างหัวข้อ [mysqld] ดังนี้


#————————————————-
server-id=2
master-host=192.168.0.10
master-port=3306
master-user=repl
master-password-slavepass
master-connect-retry=30
replicate-wild-do-table= %.%
report-host=192.168.0.20
#————————————————-


โดยที่
server-id=2 # ลำดับ Slave หากมี Slave มากกว่า 1 ตัวสามารถกำหนด Server-id ได้จนถึง (2 ยกกำลัง 32) -1 เครื่อง
master-host=192.168.0.10 # หมายเลข IP เครื่อง Master
master-port=3306 # กำหนด Port
master-user=repl # ชื่อ User สำหรับการ Replicate
master-password-slavepass # Password
master-connect-retry=30 # หากติดต่อ Master ไ่ม่ได้ จะติดต่อซ้ำภายใน
replicate-wild-do-table= %.% #กำหนดฐานข้อมูลที่ต้องการ Replicate %.% หมายถึง Database ทุกตัว


ขั้นตอนที่ 5.


เมื่อ Master และ Slave มีข้อมูลเท่ากันแล้ว ดังในขั้นตอนที่ 1 ให้สร้างจุด Check Point เพื่อให้เป็นจุดเริ่มต้นสำหรับการ Replicate โดยใช้คำสั่ง
   mysql> FLUSH TABLES WITH READ LOCK;

ให้เรียกดูสถานะการทำงาน เพื่อดู Binary Log name และ Offset ของ Master ดังนี้
(http://ejeepss.thaipki.com/files/2007/08/replicatemysql5.jpg)
ภาพการเรียกดู BinaryLog Name และ Offset ของ Master


Binary Log Name : mysql-bin.00004
Offset : 106


ขั้นตอนที่ 6.


กำหนดฝั่ง Client ให้ติดต่อกับฐานข้อมูล


mysql> CHANGE MASTER TO 

    ->     MASTER_HOST='192,168.0.10', 

    ->     MASTER_USER='repl', 

    ->     MASTER_PASSWORD='slavepass', 

    ->     MASTER_LOG_FILE='mysql-bin.00004‘, 

    ->     MASTER_LOG_POS=106;
และเริ่มต้น Replicate โดยใช้คำสั่ง


mysql> START SLAVE;

เพียงเท่านี้ Slave ก็จะเริ่ม Replicate ข้อมูลจาก Master แล้วครับ

ขอขอบคุณ อ.MN ที่ตั้งกระทู้นี้
ขอขอบคุณ เว็บ  http://www.mindphp.com/modules.php?name=News&file=article&sid=87
 (http://www.mindphp.com/modules.php?name=News&file=article&sid=87) ที่ทำให้ผมได้ข้อมูลนี้มาครับ
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: เข้ม ที่ กุมภาพันธ์ 03, 2009, 11:58:02 AM
ผมเคยทดลองทำแล้ว ทำตามในนี้

http://dev.mysql.com/doc/refman/5.1/en/replication-configuration.html

ซึ่งผมก็ไม่แน่ใจว่าทำถูกทุกขั้นตอนหรือป่าว  ;D
ผลที่ได้ออกมามันเดี้ยงครับ ข้อมูลใน slave ไม่สามารถใช้งานได้ครับ

slave เดี้ยงตั้งแต่ขั้นตอนที่ 3 ครับ หลังจากแก้ไข my.cnf แล้วสั่ง mysql start ก็เดี้ยงเลย
และผมก็ยังสงสัยอีกว่า
ในขั้นตอนที่ 6 
---------------------------------------------------------------------
กำหนดฝั่ง Client ให้ติดต่อกับฐานข้อมูล

mysql> CHANGE MASTER TO

    ->     MASTER_HOST='192,168.0.10',

    ->     MASTER_USER='repl',

    ->     MASTER_PASSWORD='slavepass',

    ->     MASTER_LOG_FILE='mysql-bin.00004‘,

    ->     MASTER_LOG_POS=106;
และเริ่มต้น Replicate โดยใช้คำสั่ง

mysql> START SLAVE;

---------------------------------------------------------------------

คำสั่งด้านบน เข้าไปทำที่ master หรือ slave


แต่ก็กะว่าจะทดลองทำใหม่ดู
ไหน ๆก็จะมีคนร่วมทดลองแล้ว  ;)
รพ.ก็อยู่ใกล้ ๆกันด้วย
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: SoRnKuNg ที่ กุมภาพันธ์ 03, 2009, 12:57:20 PM

ขั้นตอนที่ 6

กำหนดฝั่ง Client ให้ติดต่อกับฐานข้อมูล
mysql> CHANGE MASTER TO 
    ->     MASTER_HOST='192,168.0.10', 
    ->     MASTER_USER='repl', 
    ->     MASTER_PASSWORD='slavepass', 
    ->     MASTER_LOG_FILE='mysql-bin.00004‘, 
    ->     MASTER_LOG_POS=106;
และเริ่มต้น Replicate โดยใช้คำสั่ง
mysql> START SLAVE;
เพียงเท่านี้ Slave ก็จะเริ่ม Replicate ข้อมูลจาก Master แล้วครับ


ผมว่าน่าจะใช้คำสั่งใน slave นะครับ เพราะยังอยู่ในขั้นตอนที่ 6 เค้าไม่ได้บอกให้เปลี่ยน ไป master อะครับ
ยังไง ก็ลองทดสอบก่อนเลยนะครับ เดี๋ยวถ้าผมขึ้นระบบได้แล้ว จะมาขอความรู้ เรื่องการทำ replicate อีกที  ;D

หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ กุมภาพันธ์ 06, 2009, 17:20:40 PM

ขั้นตอนที่ 6

กำหนดฝั่ง Client ให้ติดต่อกับฐานข้อมูล
mysql> CHANGE MASTER TO 
    ->     MASTER_HOST='192,168.0.10', 
    ->     MASTER_USER='repl', 
    ->     MASTER_PASSWORD='slavepass', 
    ->     MASTER_LOG_FILE='mysql-bin.00004‘, 
    ->     MASTER_LOG_POS=106;
และเริ่มต้น Replicate โดยใช้คำสั่ง
mysql> START SLAVE;
เพียงเท่านี้ Slave ก็จะเริ่ม Replicate ข้อมูลจาก Master แล้วครับ


ผมว่าน่าจะใช้คำสั่งใน slave นะครับ เพราะยังอยู่ในขั้นตอนที่ 6 เค้าไม่ได้บอกให้เปลี่ยน ไป master อะครับ
ยังไง ก็ลองทดสอบก่อนเลยนะครับ เดี๋ยวถ้าผมขึ้นระบบได้แล้ว จะมาขอความรู้ เรื่องการทำ replicate อีกที  ;D



ขั้นตอนที่ 6
จะใช้คำสั่งใน slave นะครับ
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: usa0823 ที่ กุมภาพันธ์ 06, 2009, 18:05:04 PM
ดูเหมือนจะง่ายเลยนะครับ...
ใครทำแล้วบ้าง แล้วสำเหร็จบ้าง...
ขอเช็คผลความสำเหร็จเพื่อเรียกความมั่นใจจะได้ไปทำมั้ง...555
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ กุมภาพันธ์ 06, 2009, 18:21:36 PM
ดูเหมือนจะง่ายเลยนะครับ...
ใครทำแล้วบ้าง แล้วสำเหร็จบ้าง...
ขอเช็คผลความสำเหร็จเพื่อเรียกความมั่นใจจะได้ไปทำมั้ง...555
ผมทำแล้วครับ ใช้ดีแต่เปลี่ยนเป็น server ต้องระวัง
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: kungkung ที่ พฤศจิกายน 09, 2009, 12:24:36 PM
 :) :)  ขอบคุณครับ ขอเก็บไว้เป็นข้อมูลครับ  :) :)
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: dreaming ที่ มีนาคม 05, 2010, 10:28:13 AM
มันเดี้ยงตอน ขั้นที่ 3 ครับ ของอาจารย์ mamoi
restart mysql 5.1.30 มันฟ้องว่า manager of pid file quit without updatting [failed]
ต้องแก้อย่างไรครับ
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: ปาล์ม ที่ เมษายน 06, 2010, 12:52:49 PM
ฝากคำถามอีกสักข้อนะครับอาจารย์ 
        - เครื่องลูก Slave ตอนนี้ผมติดตั้ง OS centos 5.4 64bit เสร็จเเล้วเเละลง mysql 5.1.30 เป็น 64 บิทเสร็จเเล้ว  ผมพิมพ์คำสั่ง # mysql -u root เเละ โชดาตาเบส จะมีดาต้าเบส  อยู่ 3 ตัวครับชื่อ  information_schema 2 mysql  3.test มีเเค่นี้เองครับ เเต่ไม่มี hos
           - ผมเข้าโปรแกรม hosxp เชื่อมต่อ ตัวเเม่ เเล้วไปใส่ค่าที่จะทำ replicate slave ไอพี่เครื่องลูก เเล้วคลิกขวา เลือก  Initial Import  เเล้วกด yes   ผลมีคำว่า error occured  บรรทัดลาง ขึ้นว่า connot create file "c:\program file \Hosxp\dum.bat" Access is denied

รบกวนหน่อยนะครับ ผมจนปัญหาจริงๆ ครับ   ขอบคุณลวงหน้าเลยครับ ผมจะเข้ามาดูคำตอบตลอดเลยครับ  :) :)
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: thecoy ที่ เมษายน 06, 2010, 13:12:38 PM
สร้าง database ที่เครื่อง slave ให้เรียบร้อย เช่น
create database hos;
สร้าง user และ password พร้อม grant สิทธิ์ให้เรียบร้อย
แล้ว ค่อยทำการ initmal import ใหม่  ในช่อง
host name    ชื่อip เครื่อง slave
databasename ชื่อ database ที่สร้าง พร้อมกับuser และpassword
เริ่ม initial import   
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: มดตานอย ครับ.. ที่ เมษายน 06, 2010, 15:15:29 PM
สร้าง database ที่เครื่อง slave ให้เรียบร้อย เช่น
create database hos;
สร้าง user และ password พร้อม grant สิทธิ์ให้เรียบร้อย
แล้ว ค่อยทำการ initmal import ใหม่  ในช่อง
host name    ชื่อip เครื่อง slave
databasename ชื่อ database ที่สร้าง พร้อมกับuser และpassword
เริ่ม initial import  

ตามนี้เลยครับ

หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ เมษายน 06, 2010, 23:36:20 PM
สร้าง database ที่เครื่อง slave ให้เรียบร้อย เช่น
create database hos;
สร้าง user และ password พร้อม grant สิทธิ์ให้เรียบร้อย
แล้ว ค่อยทำการ initmal import ใหม่  ในช่อง
host name    ชื่อip เครื่อง slave
databasename ชื่อ database ที่สร้าง พร้อมกับuser และpassword
เริ่ม initial import  


user และ password ต้องเป็นตัวที่ได้ grant สิทธิแล้วในเครื่อง slave นะครับ
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: ปาล์ม ที่ เมษายน 07, 2010, 13:47:01 PM
จะไปปฏิบัติตามทันทีครับ   ดีใจจัง  ขอบคุณมากครับ อาจารย์ ทั้ง 3 ท่านครับ 
หัวข้อ: Re: การกำหนดระบบ Replication ของ MySQL
เริ่มหัวข้อโดย: arr_012 ที่ สิงหาคม 28, 2011, 20:01:14 PM
ระบบ replicate for mysql กินแรมมากครับ แรม 4 G กับ database 7GB  ไปไม่เป็นเลยครับ