הגדרת שכפול Master-Slave ב-MySQL. מדריך עזר של MySQL שכפול MySQL של ​​מסדי נתונים מרובים

09.07.2020

שכפול הוא מנגנון לסנכרון התוכן של מספר עותקים של אובייקט. תהליך זה מתייחס להעתקת נתונים ממקור אחד לרבים אחרים ולהיפך.

ייעודים:

  • מאסטר - השרת הראשי שצריך לשכפל את הנתונים שלו;
  • replica - שרת מתוקן המאחסן עותק של נתוני האב

כדי להגדיר רפליקציה ב-MySQL, עליך לעקוב אחר רצף הפעולות המתואר להלן, אך זו אינה דוגמה והפרמטרים יכולים להשתנות בהתאם לנסיבות.

בשרת הראשי, ערוך את קובץ my.cnf והוסף את השורות הבאות למקטע mysqld:

Server-id = log-bin = mysql-bin log-bin-index = mysql-bin.index log-error = mysql-bin.err relay-log = relay-bin relay-log-info-file = relay-bin. info relay-log-index = relay-bin.index expire_logs_days=7 binlog-do-db =

  • - מזהה שרת MySQL ייחודי, מספר בטווח 2 (0-31)
  • - שם מסד הנתונים, מידע לגביו ייכתב ביומן הבינארי אם יש מספר מסדי נתונים, כל אחד מהם דורש שורה נפרדת עם הפרמטר binlog_do_db

ב-slave, ערוך את קובץ my.cnf והוסף את השורות הבאות למקטע mysqld:

Server-id = master-host = master master-user = רפליקציה מאסטר-סיסמה = סיסמה מאסטר-port = 3306 relay-log = relay-bin relay-log-info-file = relay-log.info relay-log-index = relay-log.index replicate-do-db =

בשרת הראשי, הוסף את משתמש השכפול עם זכויות שכפול הנתונים:

GRAANT REPLICATION SLAVE ON *.* TO "replication"@"replica" מזוהה באמצעות "סיסמה"

בואו נחסום מסדי נתונים משוכפלים בשרת הראשי משינוי נתונים, באופן תכנותי או באמצעות פונקציונליות MySQL:

Mysql@master> שטף טבלאות עם נעילת קריאה; mysql@master> SET GLOBAL read_only = ON;

כדי לבטל את הנעילה, השתמש בפקודה:

Mysql@master> SET GLOBAL read_only = OFF;

בואו נעשה עותקי גיבוי של כל מסדי הנתונים בשרת הראשי (או אלה שאנחנו צריכים):

Root@master# tar -czf mysqldir.tar.gz /var/lib/mysql/

או באמצעות כלי השירות mysqldump:

Root@master# mysqldump -u root -p --lock-all-tables > dbdump.sql

בוא נעצור את שני השרתים (במקרים מסוימים אתה יכול להסתדר בלעדיו):

Root@master# mysqlamdin -u root -p shutdown root@replica# mysqlamdin -u root -p shutdown

בואו נשחזר מסדי נתונים משוכפלים בשרת העבדים על ידי העתקת הספרייה. לפני תחילת השכפול, מסדי הנתונים חייבים להיות זהים:

Root@replica# cd /var/lib/mysql root@replica# tar -xzf mysqldir.tar.gz

או פונקציונליות mysql, אז לא היה צורך לעצור את mysql בשרת העבדים:

Root@replica# mysql -u root -p< dbdump.sql

בוא נריץ את mysql בשרת הראשי (ולאחר מכן בשרת העבדים, במידת הצורך):

Root@master# /etc/init.d/mysql start root@replica# /etc/init.d/mysql start

בואו נבדוק את פעולת שרתי המאסטר והעבד:

Mysql@replica> התחל עבד; mysql@replica> הצג סטטוס עבדים\G mysql@master> הצג סטטוס מאסטר\G

בשרת העבדים, בדוק את היומנים בקובץ master.info, הוא אמור להכיל בקשות לשינוי נתונים במסד הנתונים. אז תחילה יש להמיר את הקובץ הבינארי הזה לפורמט טקסט:

Root@replica# mysqlbinlog master.info > master_info.sql

אם מתרחשות שגיאות, אתה יכול להשתמש בפקודות:

Mysql@replica> עצור עבד; mysql@replica> איפוס עבד; mysql@master> RESET MASTER;

וחזור על כל השלבים החל בחסימת מסדי הנתונים.

כדי להוסיף שרתי שכפול חם, אתה יכול להשתמש בתחביר הבא:

Mysql@replica> הצג סטטוס עבדים\G mysql@master> הצג סטטוס מאסטר\G mysql@replica-2> שנה מאסטר ל-MASTER_HOST = "מאסטר", MASTER_USER ="replication", MASTER_PASSWORD = "סיסמה", MASTER_LOG_FILE ="mysql- bin.000004 ", MASTER_LOG_POS = 155; mysql@replica-2> התחל עבד;

מידע מהסטטוסים יציג את המיקום והשם של קובץ היומן הנוכחי.

עם שכפול אסינכרוני, עדכון מעתק אחד מתפשט לאחר זמן מה, ולא באותה עסקה. לפיכך, שכפול אסינכרוני מציג חביון, או זמן המתנה, שבמהלכו העתקים בודדים עשויים שלא להיות זהים ביעילות. אבל לסוג זה של שכפול יש גם היבטים חיוביים: השרת הראשי לא צריך לדאוג לגבי סנכרון נתונים, אתה יכול לחסום את מסד הנתונים (לדוגמה, כדי ליצור עותק גיבוי) במחשב העבד, אין בעיה למשתמשים.

רשימת מקורות בשימוש

  1. Habrahabr.ru - יסודות שכפול ב-MySQL (http://habrahabr.ru/blogs/mysql/56702/)
  2. ויקיפדיה (http://ru.wikipedia.org/wiki/Replication_(computing_technology))

בעת שימוש בחומרים כלשהם מהאתר, כולו או חלקו, עליך לציין בבירור קישור אליו כמקור.

שכפול- טכניקה המשמשת בארכיטקטורה של מערכות הפועלות בעומס, התוצאה שלה היא חלוקת העומס בעבודה עם מסד נתונים אחד על פני מספר שרתים. נעשה שימוש בשכפול של MySQL MASTER SLAVE לעתים קרובות יותר, אך נעשה שימוש גם בסוג שני של שכפול - Master-Master.

מהו שכפול MySQL MASTER SLAVE ולמה הוא משמש?

שכפול מאסטר-עבדכרוך בשכפול נתונים לשרת MySQL עבד שכפול כזה מתבצע בעיקר כדי להבטיח אמינות. אם השרת הראשי נכשל, הפונקציות שלו מועברות ל-Slave.

ניתן לבצע שכפול גם כדי לשפר את ביצועי המערכת, אך הביצועים כאן כמעט תמיד משניים.
כאשר יישום עובד עם מסד נתונים, הפעולות השכיחות ביותר הן בחר- בקשות לקריאת נתונים, שינוי נתונים - בקשות לִמְחוֹק, לְהַכנִיס, עדכון, לשנותסטטיסטית זה קורה הרבה פחות.

כדי למנוע אובדן נתונים אם אחד השרתים נכשל, פעולות לשינוי מידע בטבלאות מעובדות תמיד על ידי השרת הראשי. לאחר מכן, השינויים משוכפלים ל-Slave. קריאה יכולה להיעשות משרת המשחק את התפקיד של Slave.
בשל כך, אתה יכול לקבל רווח בביצועים יחד עם אמינות.

הפתרון פופולרי, אך לא תמיד ישים מאחר וייתכנו עיכובים במהלך השכפול - אם זה קורה, יש לקרוא את המידע גם משרת המאסטר.

הפניית בקשות מסוג מסוים לשרת מסד נתונים מסוים מיושמת בכל מקרה ברמת האפליקציה.

אם תפריד בין שאילתות SELECT לבין כל השאר ברמת התוכנית, שולח אותם לשרת הרצוי, כאשר אחת מהן נכשלת, האפליקציה שהתשתית משרתת לא תפעל. כדי שזה יעבוד, עליך לספק סכמה מורכבת יותר ולשמור כל אחד מהשרתים.

שכפול מיועד לסובלנות תקלות, לא לשינוי קנה מידה.

שכפול MySQL MASTER SLAVE - הגדרה בדביאן

נשתמש בשני שרתים עם כתובות:

  • שרת מאסטר 192.168.0.1
  • שרת עבדים 192.168.0.2

לצורך הדגמה, נעשה שימוש ב-VDS המחובר לרשת מקומית.
כדי לדעת תמיד בוודאות באיזה שרת אנו מבצעים פקודה זו או אחרת, אנו נערוך את קבצי /etc/hosts בשני השרתים

192.168.0.1 מאסטר

192.168.0.2 עבד

בואו נחליף את הערכים הקיימים ב-/etc/hostname במאסטר וב-slave, בהתאמה, כדי שהשינויים ייכנסו לתוקף ויאתחלו את השרת.

1. אנו מבצעים הגדרות בשרת הראשי.

root@master:/#

עריכת קובץ התצורה הראשי של שרת מסד הנתונים

mcedit /etc/mysql/my.cnf

בחר את מזהה השרת - אתה יכול לציין כל מספר, ברירת המחדל היא 1 - פשוט בטל את ההערה על השורה

server-id = 1

הגדר את הנתיב ליומן הבינארי - צוין גם כברירת מחדל, בטל את ההערה שלו

הגדר את שם מסד הנתונים שנשכפל לשרת אחר

binlog_do_db = db1

הפעל מחדש את Mysql כך שקובץ התצורה ייקרא מחדש והשינויים ייכנסו לתוקף:

/etc/init.d/mysql הפעל מחדש

2. הגדר את הזכויות הדרושות של המשתמש

עבור אל מסוף שרת מסד הנתונים:

אנו נותנים למשתמש בשרת העבדים את הזכויות הדרושות:

הענק רפליקציה עבד ב-*.* ל-"slave_user"@"%" מזוהה ב-"123";

נעילת כל הטבלאות במסד הנתונים

שטף שולחנות עם נעילת קריאה;

בדיקת מצב השרת הראשי:

+——————+———-+—————+——————+
| קובץ | עמדה | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+—————+——————+
| mysql-bin.000001 | 327 | db1 | |
+——————+———-+—————+——————+
שורה אחת בסט (0.00 שניות)

3. צור dump של מסד נתונים בשרת

צור dump של מסד נתונים:

mysqldump -u root -p db1 > db1.sql

בטל נעילת טבלאות בקונסולת mysql:

4. העבר את ה-dump של מסד הנתונים לשרת ה-Slave

scp db1.sql [מוגן באימייל]:/בית

אנו מבצעים פעולות נוספות בשרת העבדים

root@slave:/#

5. יצירת מסד נתונים

טוען את המזבלה:

mysql -u root -p db1< db1.sql

6. בצע שינויים ב-my.cnf

mcedit /etc/mysql/my.cnf

אנו מקצים מזהה על ידי הגדלת הערך שהוגדר בשרת הראשי

server-id = 2

הגדר את הנתיב ליומן הממסר

relay-log = /var/log/mysql/mysql-relay-bin.log

והנתיב ליומן bin בשרת הראשי

log_bin = /var/log/mysql/mysql-bin.log

ציין את הבסיס

binlog_do_db = db1

הפעלה מחדש של השירות

/etc/init.d/mysql הפעל מחדש

7. הגדר חיבור לשרת הראשי

CHANGE MASTER TO MASTER_HOST="192.168.0.1", MASTER_USER="slave_user", MASTER_PASSWORD="123", MASTER_LOG_FILE = "mysql-bin.000001", MASTER_LOG_POS = 327;

אנו מתחילים שכפול בשרת העבדים:

אתה יכול לבדוק את פעולת השכפול ב-Slave עם הבקשה הבאה:

************************** 1. שורה ******************** * ******
Slave_IO_State: מחכה למאסטר לשלוח אירוע
מאסטר_מארח: 192.168.0.1
Master_User: slave_user
מאסטר_פורט: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 107
Relay_Log_File: mysql-relay-bin.000003
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: כן
Slave_SQL_Running: כן
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
דלג_מונה: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 555
Until_Condition: אין
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: לא
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
שניות_מאחורי_מאסטר: 0
Master_SSL_Verify_Server_Cert: לא
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
שורה אחת בסט (0.00 שניות)

מכיוון שלא אירעו שגיאות, אנו יכולים להסיק שהשכפול מוגדר כהלכה.

האם כלי טובקנה מידה, אבל החיסרון העיקרי הוא ביטול סנכרון של העתקת נתונים ועיכובים, שיכולים להיות קריטיים.

שימוש בפתרון מודרני יותר מאפשר להימנע מהם לחלוטין. זה קל להגדרה, אמין ומבטל את הצורך בהעתקה ידנית של dump בסיס נתונים.

לא מזמן ביקשו ממני לדבר על שכפול ב-MySQL. החלטתי שהנושא הזה יכול להיות שימושי לרבים, אז במאמר זה אדבר עליו מהו שכפול ב-MySQL, מתי יש צורך וכיצד להגדיר אותו.

המשימה העיקרית של שכפול היא לשלב את הכוח של מספר שרתים. נניח שלאתר האינטרנט שלך יש שרת ייעודי, אבל עם הזמן הוא הופך למבקר מאוד ולא יכול לעמוד בעומס. כתוצאה מכך, השרת מתחיל להאט ולהתרסק באופן קבוע. הדרך הקלה ביותר היא לקנות שרת חזק יותר, וזה מה שרוב האנשים עושים. אבל במוקדם או במאוחר מגיע זמן שבו העלות של הגדלת מחיר של שרת לא תואמת את העלייה בביצועים שלו, אז זה משתלם יותר לקנות 2 שרתים שונים בפחות כסף.

כתוצאה מכך, מסד הנתונים שלך יהיה בשני שרתים בו-זמנית. כאשר שרת ראשי אחד (המכונה השרת הראשי) כבר לא יכול להתמודד, הוא עובר לשרת חילוף.

את כל בקשות לעדכון מסד נתונים תמיד עוברות לשרת הראשי. לאחר עדכון השרת הראשי, הוא מציב מידע על כך בקובץ נפרד, משם שרתי העבדים לוקחים את כל המידע. אבל פעולות דגימה, שהן בדרך כלל הרוב, והן האיטיות ביותר, כבר יכולות להיות מועברות לשרתי עבדים, מכיוון שהנתונים זהים בשניהם.

עכשיו בואו נבין את זה כיצד להגדיר שכפול ב-MySQL:

  1. התקן הכי הרבה הגרסאות האחרונות של MySQLלכל השרתים.
  2. צור משתמש עם הרשאה בשרת הראשי החלפת עבד. עבור הכתובת שממנה הוא יכול להתחבר, ציין " את כל".
  3. עצור את כל השרתים.
  4. בהגדרות MySQL(בקובץ my.cnf) בפרק הוסף את השורות הבאות: log-bin
    server-id=1 שים לב ש מזהה שרתחייב להיות שונה בכל השרתים. למעשה, זה מה שמבדיל שרת אחד למשנהו.
  5. בשרתי עבדים, הוסף להגדרות MySQLאת השורות הבאות: master-host=master_host_name
    master-user=כניסה של המשתמש שנוצר
    master-password=סיסמה של המשתמש שנוצר_
    master-port=port_for_connecting_to_the_master_server
    server-id=id_of_this_slave_server
  6. הזיזו את כל הבסיסיםמהשרת הראשי אל העבדים.
  7. לָרוּץהשרת הראשי, ואז כל העבדים.

כל אחד יום טוב! היום במאמר שלנו נסתכל על דוגמאות להגדרת שכפול מסוג "אמן-עבד".

קצת תיאוריה

מדוע יש צורך בשכפול? קודם כל, זו רשת ביטחון למקרה ששרת mysql הראשי יתקלקל, לאחר מכן ניתן לעבור לשרת העבד ולהמשיך לעבוד. שנית, זו הזדמנות להפחית את העומס על שרת ראשי Mysql, שימוש בשרת הראשי לכתיבה בלבד, וביצוע פעולות קריאה בשרת העבדים. כיצד מתרחשת שכפול? השרת הראשי כותב binlogs, שבהם הוא מציין את הפעולות שמתבצעות במסד הנתונים (בסיסי הנתונים) וזוכר את ההיסט ביומן מתחילתו ועד לרשומה הנוכחית (המיקום). שרת העבדים מתחבר למאסטר, משווה ערכי מיקום וקורא שינויים ביומן החל מהערך של המיקום שלו וכלה בערך המיקום של המאסטר. הוא מחיל שינויים (פקודות) על מסדי הנתונים בשרת העבדים.

התקנה ותצורה של מאסטר

אנו משנים את my.cnf בשרת הראשי:

Server-id = 1 - ציין את מזהה השרת log_bin = /var/log/mysql/mysql-bin.log - שם יומן ונתיב

הבהרה קטנה: כברירת מחדל, האשף כותב binlogs עבור כל מסדי הנתונים, ניתן לשנות זאת באמצעות "binlog-do-db". ערכים יירשמו ביומנים כאשר נעשה שימוש במסד נתונים ספציפי לא יירשמו שינויים.כאן תוכל לציין כמה ימים לאחסן יומנים, מה הגודל המקסימלי שלהם (פרמטרים expire_logs_days ו-max_binlog_size). הוסף משתמש ל-MySQL שתחת הזכויות שלו יבוצע שכפול:

הענק עבד שכפול ON *.* ל-user_name@ip_slave_server מזוהה על ידי "סיסמה";

עבד שכפול הוא הרשאה המאפשרת למשתמש לקרוא קובצי binlog. ip_slave_server - ip של השרת ממנו יתחבר המשתמש. הפעל מחדש את שרת mysql:

/etc/init.d/mysql הפעל מחדש

בואו נבדוק את עבודתו של המאסטר:

הצג סטטוס מאסטר;

אתה אמור לראות את השם של binlog ואת מיקומו. בעת ביצוע פקודות במסד הנתונים, המיקום ישתנה.

הגדרת עבדים

אנו עורכים שינויים בקובץ my.cnf:

Server-id = 2 - המזהה של שרת העבד חייב להיות שונה מהמזהה הראשי. relay-log = /var/lib/mysql/mysql-relay-bin - כמו יומן בינארי, מורכב מקבוצה של קבצים ממוספרים המכילים אירועים המתארים שינויים במסד הנתונים. relay-log-index = /var/lib/mysql/mysql-relay-bin.index - קובץ אינדקס המכיל את השמות של כל קובצי יומן הממסר בשימוש. replicate-do-db = מסד הנתונים שישוכפל.

הערה חשובה! בעת ארגון cross db (כאשר נעשה שימוש במסד נתונים אחד והנתונים מתעדכנים במסד נתונים אחר), אין צורך לציין binlog-do-db בהגדרות השרת הראשי, binlog-and צריך להיכתב עבור כל מסדי הנתונים, וב בהגדרות העבד יש צורך להשתמש ב- replicate-do במקום -db ציין replicate-wild-do-table=db_name.%, כאשר db_name הוא השם של מסד הנתונים המשוכפל.הפעל מחדש את שרת mysql:

/etc/init.d/mysql הפעל מחדש

הפעלת שכפול

SET GLOBAL read_only = ON;

בואו נסתכל על מצב המאסטר:

הצג סטטוס מאסטר;

אנו זוכרים את הערכים של קובץ ומיקום (או יותר טוב, רשום אותם). ערך המיקום לא אמור להשתנות כעת. אנו זורקים את המאסטר באמצעות הפקודה mysqldump:

Mysqldump -uname -ppassword db_master_name > dump_db,

כאשר שם הוא שם המשתמש, סיסמה היא הסיסמה, db_master_name הוא שם מסד הנתונים, dump_db הוא שם ה-dump. לאחר השלמת ה-dump, אנו מאפשרים כתיבה למסד הנתונים:

SET GLOBAL read_only = כבוי;

אנחנו מעבירים את המזבלה לעבד ומרחיבים אותו

Mysql -uname -ppassword db_slave_name< dump_db

הגדרת שכפול

CHANGE MASTER TO MASTER_HOST = "מאסטר ip", MASTER_USER = "user_name", MASTER_PASSWORD = "סיסמה", MASTER_LOG_FILE = "שם יומן", MASTER_LOG_POS = עמדה;

master ip - ה-IP של השרת עליו נמצא המאסטר, שם משתמש - שם המשתמש שיצרנו במאסטר, שם לוג - ערך הקובץ במאסטר בעת ביצוע ה-dump של מסד הנתונים, מיקום - ערך המיקום ב- המאסטר כאשר בוצעה dump מסד הנתונים. בואו נתחיל את העבד:

התחל עבד;

בוא נראה איך הולך השכפול: על המאסטר: SHOW MASTER STATUS\G על העבד: SHOW SLAVE STATUS\G

הגדרות אבטחה בשרת הראשי

הפרמטר bind-address ב-/etc/mysql/my.cnf מציין איזו כתובת IP שרת mysql יקשיב לה בזמן ההמתנה לחיבור. בדרך כלל יש לו את הערך bind-address = 127.0.0.1. אבל לאחר הגדרת שרת העבד, עלינו לאפשר חיבורים משרת העבדים ועדיין צריכים לעבוד קשרים מקומיים. כתובת Bind יכולה לאפשר חיבורים מ-IP אחד בלבד או מכולם. כי אנחנו צריכים לציין יותר מ-IP אחד עבור החיבור, אנו מציינים את השורה עם bind-address = 127.0.0.1. כעת שרת mysql יקבל חיבורים מכל כתובות ה-IP, וזה מאוד מסוכן. iptables יעזור לנו לפתור את הבעיה הזו:

Iptables -I INPUT -p tcp -s ip_slave_server-a --dport 3306 -j ACCEPT -לאפשר תחילה חיבור מכתובת ה-IP של שרת העבד iptables -I INPUT -p tcp --dport 3306 -j DROP -לאחר מכן לדחות חיבור מ- כל שאר כתובות ה-IP.

כעת יהיו לנו 2 שרתי MySQL הפועלים במצב מאסטר-slave, מה שמגביר משמעותית את אמינות האתר ועבור חלק מאתרי דרופל עוזר להגביר את מהירות העבודה. במאמר הבא נבחן את המעבר בין מצבי מאסטר ל-slave במקרה של כשל בשרת מאסטר.

המונח שכפול משמש להתייחסות למנגנון לסנכרון עותקים מרובים של נתונים, אשר מגביר את אבטחת המידע, סובלנות התקלות וביצועי המערכת. דוגמה בולטת היא שכפול מסד נתונים בין שני שרתים.

שכפול MySQL מאסטר-עבד

בטרמינולוגיה של Master-Slave, המאסטר הוא השרת הראשי עם מסד הנתונים שהוא כותב למסד הנתונים, אך הקריאה מתפזרת בין המאסטר לעבד בהתאם לעומס על המערכת, מה שמגביר את סובלנות התקלות והביצועים. בנוסף, הודות לגישה זו, עותק של מסד הנתונים נמצא תמיד בהישג יד וניתן לשחזר אותו אם אחד השרתים נכשל.

באילו מצבים ייתכן שיהיה צורך בשרת עבדים? לדוגמה, כאשר מגיע מערך גדול של נתונים להיכתב לבסיס הנתונים ולשרת המאסטר פשוט אין זמן לקרוא והלקוח צריך להמתין לסוף הכתיבה, מה שניתן להימנע הודות לשרת העבדים.

מצבים אפשריים כאשר השרת הראשי נכשל במקרה זה, שרת העבד משתלט על כל הפונקציות של המאסטר ועובד לבד עד שהוא משוחזר. סביר להניח שהלקוח לא ישים לב לכלום, והוא בוודאי לא יחכה שעה-שעתיים-שלוש עד שהטכנאי יתקן את זה.

הגדרת רפליקציה אינה קשה כלל, מכיוון שהמנגנון היה מובנה ב-MySQL מההתחלה.

הגדרה בשרת הראשי

נתחיל בעריכת קובץ התצורה my.cnf, שנמצא לרוב ב-/etc/mysql/my.cnf. עליך למצוא ולבטל הערות (להסיר #), או לכתוב שורות כאלה.

Bind-address = 0.0.0.0 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log

חָשׁוּב! אם ה-bind-address כבר נרשמה, יש לשנות אותה, אחרת לא ניתן יהיה ליצור חיבור בין השרתים.

מיד לאחר מכן, נפעיל מחדש את מסד הנתונים בשרת.

/etc/init.d/mysql הפעל מחדש

כעת עלינו ליצור משתמש עם הרשאות לשכפל את מסד הנתונים שלנו ניתן לעשות זאת מהשורש בקונסולת MySQL באמצעות הפקודה

הענק רפליקציה עבד ב-*.* ל-"slave_user"@"%" מזוהה באמצעות "slave_password"; FLUSH PRIVILEGES;

כאשר במקום "slave_user" ו-"slave_password" אתה צריך לכתוב את הכניסה והסיסמה של העבד.

עכשיו בואו נסתכל על נתוני האב

הצג סטטוס מאסטר;

ערכי עמודות קוֹבֶץ ו עמדה אתה צריך לזכור, הם ישמשו בהקמת העבד, וזה מה שאנחנו ממשיכים אליו עכשיו.

הגדרה בשרת Slave

הצעד הראשון הוא יצירת מסד נתונים עם שם זהה לזה שאנו הולכים לשכפל. זהו צעד חשוב ואין להזניח אותו. לאחר מכן, עבור אל קובץ התצורה שכבר מוכר לנו my.cnf ותכתוב את ההגדרות.

Server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log bin-log = /var/log/mysql/mysql-bin.log

חָשׁוּב! ב-bin-log מצוין הנתיב ל-bin-log בשרת המסטר . מזהה השרת חייב להיות שונה מזהה הראשי, נוח להגדיר אותו ל-1 נוסף.

CHANGE MASTER TO MASTER_HOST="1.1.1.1", MASTER_USER="slave_user", MASTER_PASSWORD="slave_password", MASTER_LOG_FILE = "mysql-bin.000001", MASTER_LOG_POS = 107; התחל עבד;

כאשר המארח הוא כתובת ה-IP של המאסטר, הכניסה והסיסמה תואמות לאלו שיצרנו במאסטר, master_log_file ו-master_log_pos מלאים במידע מ- הפריט האחרון להגדרת השרת הראשי .

מרגע זה ממש, כל השינויים במסד הנתונים יועברו מהמאסטר לעבד.

בדיקת סטטוס שכפול

בנוסף לפקודה SHOW MASTER STATUS; יש אחד דומה לעבד SHOW SLAVE STATUS\G, שיציג טבלה עם מידע. הסימן העיקרי לכך שהשרתים התחברו ופועלים כהלכה הוא נוכחותם של קווים כאלה