הכן את מסד הנתונים של MySQL או MariaDB
הגדר את שרת מסד הנתונים
לאחר התקנת ערכת השירותים מנורה, WAMP, MAMP o XAMPP כפי שהוסבר במאמר הראשון בסדרה או פשוט לאחר התקנה על המכונה שתשמש כשרת את סך היישומים המיישמים את השירותים המתאימים, יש צורך להתאים כמה היבטים של תצורת שרת מסד הנתונים MySQL כמו גם יצירת מסדי הנתונים והטבלאות שישמשו בשרת האינטרנט לאחסון נתונים ממכשירי האינטרנט של הדברים.
אם נעשה שימוש בשרת ציבורי, הספק בוודאי יספק סוג כלשהו של פאנל לתווך בין המשתמש לבין התצורה ה"אמיתית" של מסד הנתונים על מנת לחזק את האבטחה בפעולה. אם כן, יהיה עליך לעיין בהוראות שספק זה מציע. במקרה של שרת אמיתי או וירטואלי המתארח במתקניו של צד שלישי, עשויה להיווצר נסיבות דומה כאשר הספק מנהל אותו; אם נכרת שרת לא מנוהל (על ידי הספק, מנוהל על ידי המשתמש), המידע הבא יחול.
היות והדבר החשוב הוא לדעת את ההוראות שיש לתת למנהל מסדי הנתונים ומובן שהוא משמש כאמצעי לתמוך במכשירים עבור האינטרנט של הדברים, שיהיו מושא הפרויקט, ייתכן מספיק כדי להשתמש בקונסולה מכיוון שהעבודה על שרת מסד הנתונים עצמו תהיה מדי פעם. אם עומס הניהול מתחיל לעלות, אולי כדאי, כי זה יותר נוח, להשתמש במנהל בשרת עצמו, כמו הפופולרי phpMyAdmin (מדפדפן אינטרנט) או מקומית, אם כי כמובן גישה לשרת מסד הנתונים, עם מנהל כגון שולחן עבודה של MySQL שממנו להופיע במתקדם GUI הפעולות שעומדות להיות מוסברות ורבות אחרות שנמצאות מחוץ לכתבה הזו ושראויה לסדרה שלמה.
בנוסף לפעולות האוטומטיות פחות או יותר שאפשר לעשות איתן שולחן עבודה של MySQL בשרת, מסדי נתונים או טבלאות ניתן גם לבצע משימות "ידנית" על ידי כתיבה וביצוע של סקריפטים שלמים או פקודות עצמאיות ב SQL. אותו דבר כמו עם הכלי שולחן עבודה של MySQL, SQL דורש פרק נפרד ושחיוני להכיר אותו לעומק כאשר החלק בעבודת ה-IoT המבוצעת כרוך בתשומת לב רצינית יותר ל- Backend ממה שמוסבר כאן.
בכל מקרה, וכמובן כדי לפתור את התצורה הדרושה של מסד הנתונים של ה-IoT שנמצא בעיבוד, ניתן להשתמש בקונסולה.
הגדר את root, מנהל MySQL הראשי
אם שרת מסד הנתונים נמצא במחשב משלו, הדבר הראשון שצריך לעשות הוא להגדיר את הרשאות מנהל השירות כך שיוכלו ליצור, תוך שימוש בהרשאות אלו, משתמשים אחרים (שעשויים להיות להם בתורם) ואם ישים, את מסדי הנתונים והטבלאות שבו לאחסן את המידע שמערכת האינטרנט של הדברים צריכה.
חשוב להקפיד על תהליך ההתקנה של מערך השירותים או השרת MySQL, בהתאם לתהליך שאחריו, מכיוון שבמקרים רבים, המתקין עצמו יהיה אחראי על ביצוע שלב זה ואחרים ולא יהיה צורך לחזור עליהם אלא כאשר תרצה לשנות את התצורה.
כדי לבצע משימות אלה, אתה בדרך כלל עובד עם המסוף. MySQL כמנהל. כדי לגשת למצב זה, השתמש בפקודה mysql -u root -p
o sudo mysql -u root
אם נעשה בו שימוש בפעם הראשונה ובמהלך ההתקנה, המשתמש לא הוגדר root
נכנסים למסדר mysql -u root -p
מסומן עם האפשרות -u
שם המשתמש (root
) ועם האפשרות -p
(סיסמה) שיש לבקש את המפתח בעת גישה לקונסולה MySQL. כדי לחזור למסוף המערכת ניתן להשתמש בפקודה quit
לצאת
כפי שניתן לראות בצילום המסך למעלה, לפני שעזב את הקונסולה MySQL, כדי להגדיר את הרשאות המשתמש root
נעשה שימוש בפקודה:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
שבו:
- כל ההרשאות מוענקות
GRANT ALL PRIVILEGES
- בכל הטבלאות בכל מסדי הנתונים
ON *.*
- למשתמש
root
גישה מהמחשב המריץ את השרת MySQLTO 'root'@'localhost'
- באמצעות 1234 כסיסמה
IDENTIFIED BY '1234'
- עם הרשאה לאשר משתמשים אחרים
WITH GRANT OPTION
על מנת לנהל את מסד הנתונים מרחוק, יש להעניק הרשאות למשתמש המקביל ממקומות אחרים. בדוגמה הקודמת זה היה מותר root
גישה אליו מהמחשב שבו פועל שרת מסד הנתונים (localhost
) עם 'root'@'localhost'
, אם נעשה בו שימוש 'root'@'%'
תתאפשר גישה מכל מכונה.
אם יש לך הרשאות מנהל במערכת, תוכל להגדיר מחדש את סיסמת המשתמש root
de MySQL. לשם כך, יש צורך להפסיק את השירות (mysql
o mysqld
, בהתאם להפצה), אתחל אותו ללא מפתח, הגדר את המפתח החדש root
ולהפעיל אותו מחדש. על ידי גישה ללא סיסמה ניתן גם להעניק את ההרשאות המתוארות לעיל.
- להפסיק את השירות
sudo /etc/init.d/mysql stop
- לזרוק MySQL ללא מפתח ולפתוח את המסוף
sudo mysqld_safe --skip-grant-tables &
- גישה כמו «
root
»mysql -u root
- שנה את הסיסמה:
- גישה למסד הנתונים «
mysql
»:USE mysql;
- להקצות ל «
root
» המפתח «1234»:UPDATE user SET authentication_string=PASSWORD("1234") WHERE user="root";
- החל את ההרשאות החדשות:
FLUSH PRIVILEGES;
- לצאת מהקונסולה
mysql
ולחזור למערכת:quit
- גישה למסד הנתונים «
-
הפעל מחדש את השירות
sudo /etc/init.d/mysql restart
הגדר גישה מרחוק למסד נתונים
מטעמי אבטחה, התצורה הראשונית של מנהל מסד הנתונים MySQL אינו מאפשר גישה מרחוק, כדי לשנות אותו יש צורך לערוך את מסמך התצורה, בדרך כלל my.cnf
, שנמצא בדרך כלל במסלול /etc/mysql
.
אם משתמשים בו מריאד, שהיא כעת הגרסה ה"חופשית" יותר, של MySQL, בוודאות my.cnf
יהיה קישור ל /etc/alternatives/my.cnf
אשר, בתורו, יטען את התצורה, באמצעות !includedir
, מתוך מסמכי המסלול /etc/mysql/mariadb.conf.d
, כנראה מהמסמך 50-server.cnf
המשאב ששרת מסד הנתונים משתמש בו כדי לא לטפל בבקשות מרוחקות מורכב מ"האזנה" רק לבקשות המבוצעות ממיקום מסוים. כתובת IP שמתבטא כערך הפרמטר bind-address
(מה שמחליף את הקלאסי skip-networking
) כאשר הכתובת היא 127.0.0.1
(localhost
) רק בקשות מהמחשב המקומי מטופלות. אם הגיבו עם #
או אם הערך הוא 0.0.0.0
, אנו משרתים כל כתובת. כדי לאפשר גישה חיצונית, הדבר הבטוח ביותר הוא לציין את כתובת IP (שיכול להיות ציבורי או פרטי) של המחשב שממנו ניגשים, בדרך כלל משהו כמו bind-address = 192.168.1.74
. במקרה שלך, ציוד זה יכול לפעול כ מנהרה (מפנה עם SSH) או כשביל (עם ה טבלאות ip ליבה) כדי להימנע מחשיפת השרת מחוץ לאזור מבוקר של הרשת.
בצילום המסך למעלה ניתן לראות שהוא עבר עריכה my.cnf
עם התצורה MySQL באמצעות ההזמנה sudo nano /etc/mysql/my.cnf
. במקרה של עבודה עם מריאד עם התצורה הרגילה, הסדר יהיה משהו כמו sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
. כפי שהוזכר לעיל, ברגע שיש גישה עם הרשאות ניהול, א GUI כמו שולחן עבודה של MySQL לניהול מסד נתונים רגיל.
צור את מסדי הנתונים
לאחר הגדרת שרת מסד הנתונים, ניתן ליצור את מסדי הנתונים והטבלאות שבהם לאחסן את נתוני ה-IoT. כדי לעשות זאת, אתה יכול להשתמש בפקודות SQL מהקונסולה או מה GUI של מנהל.
הסדר CREATE DATABASE
יוצר את מסד הנתונים "טמפרטורות". כדי למנוע שגיאות, ניתן להשתמש בטופס temperaturas
;CREATE DATABASE IF NOT EXISTS
מה שייצור את מסד הנתונים "temperature_database" רק אם הוא אינו קיים כעת.base_datos_temperaturas
;
צור את הטבלאות
מכיוון שבמאגרי מידע שונים יכולים להיות טבלאות עם אותו שם, אתה יכול להתייחס לאחת מהן על ידי הקדמת השם שלה לזה של מסד הנתונים והפרדה בין שתיהן לפי נקודה, משהו כמו base_datos.tabla
ניתן להרחיב את הסימון הזה גם לשמות השדות base.tabla.campo
אם שם מסד הנתונים מושמט בעת הפעלה על טבלה (במקרה זה, בעת יצירתה) זה נחשב שהפנייה האחרונה שנבחרה. כדי לבחור במפורש אחד ספציפי, אתה יכול להשתמש בפקודה USE
ולציין את שמך USE
base_datos_temperaturas
;
בעת יצירת טבלאות בבסיסי נתונים, באותה פעולה, בדרך כלל מוסיפים את המידע של השדות היוצרים אותם (אם כי ניתן גם לשנות אותם מאוחר יותר). בדיוק כפי שנעשה במסד הנתונים, ניתן ליצור את הטבלה רק אם היא לא קיים הוספת הסעיף IF NOT EXISTS
או להיפך, הקפד למחוק את הטבלה לפני יצירתה רק אם היא קיימת באמצעות DROP TABLE IF EXISTS
valor_temperaturas
;
כדי לאפשר שמות של טבלאות או מסדי נתונים שעלולים להתנגש עם פקודות או נהלים, ניתן להשתמש בסימן המבטא החמור, הנקרא לפעמים פסיק הפוך, כדי להקיף את השם ולמנוע התנגשויות או שגיאות בפקודות. SQL.
הגדר את השדות
השדות שמתווספים בעת יצירת הטבלה מסומנים על ידי סגירתם בסוגריים וציון סוג הנתונים שהם מאחסנים. סוגי הנתונים המשמשים בדרך כלל במסד נתונים לאחסון מידע ממכשירים המחוברים לאינטרנט של הדברים הם מספרים שלמים (INT
o BIGINT
) עשרונים (DECIMAL
, DOUBLE
o FLOAT
) של זמן (DATE
, TIME
, DATETIME
o TIMESTAMP
) וטקסט (בעיקר VARCHAR
למרות שיש אחרים כמו TEXT
אך הם אינם משמשים עבור IoT) לאחר סוג הנתונים, ובסוגריים, מתווספים אורך הנתונים ואם רלוונטי, הפורמט או הדיוק.
על ידי הוספה AUTO_INCREMENT
ההגדרה של שדה מציינת למנהל מסד הנתונים שאם לא מצוין שום דבר אחר, בעת יצירת רשומה חדשה יש לאחסן אוטומטית את הערך של הרשומה האחרונה בתוספת התוספת המתאימה (שהוא בדרך כלל 1). בדרך כלל הוא נכלל ב- שדות המשמשים כאינדקסים מספריים של הרשומות.
הקוד NOT NULL
מציין ששדה ברשומה לא יכול להיות ריק, הוא חייב לאחסן ערך כלשהו.
בעת השימוש DEFAULT
בעת יצירת שדה של טבלה, הוא מצוין MySQL ערך ברירת מחדל עבור השדה בתנאי שבעת הוספת רשומה חדשה או שינוי שלה, ערך אחר אינו מצוין במפורש. ערך ברירת מחדל בשימוש תכוף, במקרה זה לניטור ערכי IoT, הוא CURRENT_TIMESTAMP
מה שמאפשר לרשום אוטומטית את השעה הנוכחית בשדה בעת יצירת רשומה חדשה, כך שהנתונים מזוהים אוטומטית בזמן.
כדי לייעל את הביצועים של בסיס הנתונים, נוח לכלול בסוף ההגדרה של הטבלה שדות אחד המשמש כאינדקס עם הסעיף PRIMARY KEY (
מזהה הוא השדה שנבחר כאינדקס.ID
)
בסוף ההגדרה של טבלה ניתן לציין את מנוע מסד הנתונים איתו היא מנוהלת כערך הפרמטר ENGINE
עם הפורמט ENGINE=InnoDB;
siendo InnoDB
המנוע שנבחר במקרה זה.
צור מסדי נתונים, טבלאות והגדר שדות בהפעלת SQL
הקוד בדוגמה הבאה מפגיש את הפקודות, הצעדים שצריך לנקוט, כדי ליצור מסד נתונים עם טבלה מינימלית.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
CREATE DATABASE `base_datos_temperaturas`;
CREATE DATABASE IF NOT EXISTS `base_datos_temperaturas`;
USE `base_datos_temperaturas`;
DROP TABLE IF EXISTS `calefacciones`;
CREATE TABLE IF NOT EXISTS `calefacciones`
(
`identificador` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
`estancia` VARCHAR(32) NOT NULL DEFAULT ”,
`temperatura` FLOAT(4,2),
`fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`identificador`)
)
ENGINE=InnoDB;
|
צור עותקי גיבוי של מסדי נתונים
לאחר הגדרת השרת ומסד הנתונים והטבלאות שלו נוצרו, הכל יהיה מוכן לאחסן את המידע שהתקבל על ידי צמתי ה-IoT. למרות שהמוקד של סדרת מאמרים זו אינו כולל תחזוקה, ישנו נושא ניהולי קריטי אחד שחשוב לטפל בו: גיבויים. מרוב המנהלים, כולל phpMyAdmin y שולחן עבודה של MySQL, ניתן ליצור ולשחזר עותקי גיבוי אך מקובל לכלול אותם בסקריפט שהופך אותם לאוטומטי (כנראה יחד עם התצורה ומסמכים רבים אחרים) כך שיותר נוח להשתמש בכלי MySQLDump, לקוח שהוא בדרך כלל חלק מהתקנה קונבנציונלית של MySQL, או חלופה כזו דומפר נתונים של MySQL מה ההזמנה כוללת? mydumper
לעשות את העותק ו myloader
כדי לשחזר אותו
MySQLDump
פורמט ההזמנה mysqldump
זה מאוד פשוט, צריך רק לציין את שם המשתמש user
, סיסמה password
ואת מסד הנתונים שברצונך להעתיק או --all-databases
כדי לגבות את כל מסדי הנתונים כמו בדוגמה הבאה:
mysqldump --opt --user=pelaez --password=1234 --all-databases > copia.sql
הדוגמה הקודמת יוצרת את המסמך copia.sql
המכיל את הפקודות SQL (כלומר טקסט) הדרוש כדי לבנות מחדש את כל מסדי הנתונים. בשמירה בפורמט טקסט, העותק תופס הרבה יותר מהנדרש, ולכן הוא גם נדחס בדרך כלל כדי לחסוך במקום במכשיר שבו הוא מאוחסן.
ניתן לשחזר את הגיבוי שנוצר עם הפקודה לדוגמה אם המידע אבד עקב שגיאה בפקודה למטה שמבצעת את הפעולות SQL של המסמך copia.sql
mysql --user=pelaez --password=1234 < copia.sql
דומפר נתונים של MySQL
למרות שהפעולות הקודמות יספיקו, זה נפוץ מאוד לשימוש דומפר נתונים של MySQL, כבר כמעט סטנדרט לביצועים שלו למרות שזה לא חלק מכלי הבסיס הכלולים ב MySQL
להלן האפשרויות של mydumper
רוב השימושים, שמבחינה לוגית צריכים להיכתב כחלק מאותה פקודה, מופרדים על ידי רווחים, אם כי בטקסט זה הם הופרדו לשורות כדי להקל על הקריאה:
--host polaridad.es
"polaridad.es" הוא השם של שרת מסד הנתונים
--port 3306
"3306" הוא מספר היציאה שבו השרת מאזין (כברירת מחדל הוא 3306)
--user pelaez
"pelaez" הוא שם המשתמש שאיתו גישה למסד הנתונים
--password 1234
"1234" היא הסיסמה של המשתמש שאיתו הגישה למסד הנתונים
--database temperaturas
"טמפרטורות" הוא השם של מסד הנתונים שמגובה
--no-locks
אל תנעל את מסד הנתונים במהלך ההעתקה (כברירת מחדל הוא ננעל)
--build-empty-files
גם להעתיק טבלאות ריקות
--compress-input
לדחוס קלט
--compress
דחוס את הפלט (הגיבוי שנוצר)
כדי לשחזר את הגיבוי שהושג באמצעות mydumper
זה בשימוש myloader
אשר משמש בעיקר עם האפשרויות הבאות, אשר חייבות להיכלל באותו סדר מופרדים ברווחים:
--host polaridad.es
"polaridad.es" הוא השם של שרת מסד הנתונים
--port 3306
"3306" הוא מספר היציאה שבו השרת מאזין (כברירת מחדל הוא 3306)
--user pelaez
"pelaez" הוא שם המשתמש שאיתו גישה למסד הנתונים
--password 1234
"1234" היא הסיסמה של המשתמש שאיתו הגישה למסד הנתונים
--directory=copia_iot
«iot_copy» היא התיקיה שבה נמצא העותק שנוצר באמצעותו mydumper
--overwrite-tables
להחליף טבלאות גם אם הן כבר קיימות
--verbose 3
"3" היא מידת המידע של התהליך (גבוהה יותר, יותר הודעות)
-C
השתמש בדחיסה על זרם הנתונים
המאמר הבא (והאחרון) בסדרה זו מסביר כיצד להשתמש בשפת התכנות PHP כדי לאחסן את המידע המתקבל על ידי מכשירים המחוברים לאינטרנט של הדברים במסדי נתונים עליהם דיברו בטקסט הזה.
לפרסם תגובה