עבודה עם מסד נתונים


  • תכנות

    יש לי מסד נתונים על שרת (VPS).
    אני מעוניין לייצא את המסד נתונים (mysql) לקובץ על המחשב שלי, הן לצורך גיבוי, והן לצורך עבודה מול הנתונים (שינוי, כדי להחזיר אח"כ לשרת).

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

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

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


  • תכנות

    גישה מרחוק מאופשרת?


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    גישה מרחוק מאופשרת?

    למסד אותו אני רוצה להוריד? כן.


  • תכנות

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


  • תכנות

    התוכנה הרשמית הויזואלית לwindows היא workbench.
    בשביל ייצוא סתם מספיק כלי שרות פקודה שיש פה: https://dev.mysql.com/downloads/utilities/
    אבל מאוד ייתכן שתרצה להתקין שרת mysql מקומי כדי שיהיה לך צורה נוחה לעבוד על הקבצים ולעדכן הלוך חזור את השרתים.


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    התוכנה הרשמית הויזואלית לwindows היא workbench.
    בשביל ייצוא סתם מספיק כלי שרות פקודה שיש פה: https://dev.mysql.com/downloads/utilities/
    אבל מאוד ייתכן שתרצה להתקין שרת mysql מקומי כדי שיהיה לך צורה נוחה לעבוד על הקבצים ולעדכן הלוך חזור את השרתים.

    יש לי שרת WAMP - זה לא טוב?

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


  • admin

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


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

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

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


  • תכנות

    @davidnead אם יש לך WAMP זה מעולה. תתקין קודם את הworkbrench.


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    @davidnead אם יש לך WAMP זה מעולה. תתקין קודם את הworkbrench.

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


  • תכנות

    @davidnead אמר בעבודה עם מסד נתונים:

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

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


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    @davidnead אמר בעבודה עם מסד נתונים:

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

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

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

    הגישה לVPS שיש לי - SSH. וגם FTP. מערכת ההפעלה שלו אובנטו


  • תכנות

    @davidnead אמר בעבודה עם מסד נתונים:

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

    הגישה לVPS שיש לי - SSH. וגם FTP. מערכת ההפעלה שלו אובנטו

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


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    @davidnead אמר בעבודה עם מסד נתונים:

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

    הגישה לVPS שיש לי - SSH. וגם FTP. מערכת ההפעלה שלו אובנטו

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

    אז ככה, יש כאן 3 שרתים VPS:

    1. יש עליו מסד. אין לי גישה לשרת עצמו _SHH או משהו כזה), יש לי רק שם משתמש וסיסמה של המסד, במסד הזה מאופשרת גישה מרחוק.

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

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

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

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

    מקוה שכעת אני ברור.


  • admin

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

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


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

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

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

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


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

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

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

    איזה טבלאות? איפה הקוד ירוץ? ולאיפה הוא ישמור?


  • admin

    @dovid הקוד ירוץ בשרת מספר 3. (האמת הקוד יכול לרוץ בכל שרת)
    הוא יקח את הסכמה משרת מספר 1, ויקים מסד נתונים בשרת מספר 3
    אח"כ הוא יעשה שאילתות INSERT עם הערכים שקיבל משרת מספר 1 לשרת מספר 3.
    הוא ירוץ בלופ על כל הרשומות


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

    @dovid הקוד ירוץ בשרת מספר 3. (האמת הקוד יכול לרוץ בכל שרת)
    הוא יקח את הסכמה משרת מספר 1, ויקים מסד נתונים בשרת מספר 3
    אח"כ הוא יעשה שאילתות INSERT עם הערכים שקיבל משרת מספר 1 לשרת מספר 3.
    הוא ירוץ בלופ על כל הרשומות

    זהו שהוא לא מתחבר, כלומר כנראה הremote פתוח רק לIP של 2.
    ככה יצא לי מהשתלשלות הפוסט.
    אתה צודק שהוא יכול לרוץ על 2 ולהתחבר בremote ל3, או למחשב שלו, אבל באותו ההדרכה איך להקים את המסד החדש אני צריך לתת לו הדרכה לפתוח את של 1.


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

    @dovid הקוד ירוץ בשרת מספר 3. (האמת הקוד יכול לרוץ בכל שרת)
    הוא יקח את הסכמה משרת מספר 1, ויקים מסד נתונים בשרת מספר 3
    אח"כ הוא יעשה שאילתות INSERT עם הערכים שקיבל משרת מספר 1 לשרת מספר 3.
    הוא ירוץ בלופ על כל הרשומות

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


  • admin

    @dovid אז שהPHP ירוץ על 2, ימשוך מ1 וישמור ל3 (כמעט כמו חד גדיא 🙂 )
    או שיבקש פתיחה גם לIP של שרת 3 (אא"כ זה לא אפשרי כי הוא לא מספר להם מה הוא הולך לעשות...)


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

    @dovid אז שהPHP ירוץ על 2, ימשוך מ1 וישמור ל3 (כמעט כמו חד גדיא 🙂 )

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


  • admin

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


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    אתה צודק שהוא יכול לרוץ על 2 ולהתחבר בremote ל3, או למחשב שלו, אבל באותו ההדרכה איך להקים את המסד החדש אני צריך לתת לו הדרכה לפתוח את של 1.


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

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

    עדיין לא הבנתי מאיפה ירוץ ולאיפה ישמור. קראת את מה שכתבתי?


  • תכנות

    @clickone אמר בעבודה עם מסד נתונים:

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

    אני חושב שהבנתי, אך היות שאני נגד לימודי ליבה נראה לי שהאפשרות הראשונה (הרצה על 2, שאיבה מ1 ושמירה על 3) יותר בתחום השגתי.


  • admin

    @dovid
    כן. קראתי.

    תסתכל רגע כאן
    https://stackoverflow.com/questions/4262876/how-to-copy-database-tables-and-each-record-from-one-database-server-to-another
    משהו בסגנון שיש שם.
    הוא על שרת מספר 2, פותח 2 קונקשנים.
    אחד לשרת הישן (1), והשני לשרת החדש (3).
    ואז הוא רץ בלופ על הטבלאות שנמצאות בשרת הישן, ומכניס אותם לחדש.
    בדוגמא הזו הוא גם יצר את הטבלאות.
    אני חושב שאת הסכמה עדיף לו לקחת משם. כי בטח יש עוד אינדקסים וכו

    <?php
    $dbNewDB = 'newdb';
    $dbNewUser = 'newroot';
    $dbNewUserPswd = 'newpass';
    
    $dbConnect = mysql_connect('localhost', 'root', 'mypassword') or die('Couldn\'t connect to MySql:'.mysql_error());
    $dbNewConnect = mysql_connect('localhost', $dbNewUser, $dbNewUserPswd) or die('Couldn\'t connect to MySql:'.mysql_error());
    
    $sqlStatement = "SHOW TABLES FROM olddb";
    $result = mysql_query($sqlStatement,$dbConnect) or die('Unable to get tables: '.mysql_error());
    while($row = mysql_fetch_row($result)) 
        {
            //Drop table if exist
            $sqlStatement = "DROP TABLE IF EXISTS " . $dbNewDB . "." . $row[0];
            mysql_query($sqlStatement,$dbNewConnect) or die("Failed to delete: " . mysql_error());
            //Create new table
            $sqlStatement = "CREATE TABLE " . $dbNewDB . "." . $row[0] . " LIKE olddb." . $row[0];
            echo "$sqlStatement [" . __METHOD__ . "]"; 
            mysql_query($sqlStatement,$dbNewConnect)or die("Failed to create: ". mysql_error());
            //Insert data
            $sqlStatement = "INSERT INTO " . $dbNewDB . "." . $row[0] . " SELECT * FROM " . $dbNewDB . "." . $row[0];
            echo "$sqlStatement [" . __METHOD__ . "]"; 
            mysql_query($sqlStatement,$dbNewConnect)or die("Table copy failed: ".mysql_error());
            echo "$row[0] copy done. [" . __METHOD__ . "]"; 
        }
    
    mysql_free_result($result);
    mysql_close($dbConnect);
    mysql_close($dbNewConnect);
    
    ?> 
    
    

  • תכנות

    @clickone אתה מצליח להפליא אותי. כתבתי פעמיים את הפתרון הזה בדיוק. ולכן אני תמה אם קראת.
    ואמרתי על זה שבשביל זה יש להקים שרת SQL ב3, ולפתוח אותו לREMOTE ב2.
    ובאותו מחיר של כתיבת כזאת הדרכה אני יכול לכתוב לו איך לפתוח את ה1 לREMOTE למחשב שלו האישי או לשלוש, בלי לעבור ב2 כלל.


  • תכנות

    @dovid אמר בעבודה עם מסד נתונים:

    @clickone אתה מצליח להפליא אותי. כתבתי פעמיים את הפתרון הזה בדיוק. ולכן אני תמה אם קראת.
    ואמרתי על זה שבשביל זה יש להקים שרת SQL ב3, ולפתוח אותו לREMOTE ב2.
    ובאותו מחיר של כתיבת כזאת הדרכה אני יכול לכתוב לו איך לפתוח את ה1 לREMOTE למחשב שלו האישי או לשלוש, בלי לעבור ב2 כלל.

    הבעיה בשני ההצעות, היא שאין לי אפשרות לפתוח את 1 - מאחר שאין לי גישה אליו.


  • תכנות

    @davidnead אמר בעבודה עם מסד נתונים:

    @dovid אמר בעבודה עם מסד נתונים:

    @clickone אתה מצליח להפליא אותי. כתבתי פעמיים את הפתרון הזה בדיוק. ולכן אני תמה אם קראת.
    ואמרתי על זה שבשביל זה יש להקים שרת SQL ב3, ולפתוח אותו לREMOTE ב2.
    ובאותו מחיר של כתיבת כזאת הדרכה אני יכול לכתוב לו איך לפתוח את ה1 לREMOTE למחשב שלו האישי או לשלוש, בלי לעבור ב2 כלל.

    הבעיה בשני ההצעות, היא שאין לי אפשרות לפתוח את 1 - מאחר שאין לי גישה אליו.

    יש לך גישת SQL, אם זה root, לא צריך יותר מזה.


 

למעוניינים להצטרף לקבוצות


יש לשלוח מייל לכתובת
[email protected]
עם הפרטים הבאים:

  1. שמכם בפורום
  2. הקבוצה אליה אתם רוצים להצטרף
  3. לפורומים אומנותיים - גרפיקה/צילום/תלת מימד וכו', לצרף תיק עבודות
  4. כתבו על עיסוקכם הרלוונטי לקבוצה
  5. מומלץ לתת שם אמיתי וטלפון, חובה לגבי קבוצות שתחת אשת חיל

תודה, ולהתראות!

7
מחובר

647
משתמשים

2.5k
נושאים

24.8k
פוסטים

לכל דיון תורני / הלכתי כנסו ל: