โปรแกรมบัญชีเกณพ์คงค้าง รพ.สต. สสจ.สุรินทร์ รายงานผู้บริหารด้านการเงิน รพ.สต.

backup mysql restone ง่ายๆด้วย mysqldump


DateTime : 2010-12-04 23:33:55
Post By : huwko
IP Address : 118.175.76.231

สวัสดีครับ ช่วงนี้พอดีทำ backup database นิดหน่อย จริงๆก็ไม่ได้ยุ่งยากมากนักครับ แต่เห็นว่าน่าจะมีประโยชน์ หรือใครอาจจะขี้เกียจอ่าน manual MySql ที่เป้นภาษาอังกฤษก็สามารถมาอ่านบทความนี้ได้ครับ

การ Backup Database MySql ผมว่าทำได้ค่อนข้างง่ายและสะดวกดี นอกจากนี้ยังสามารถดูผลการ backup ได้ง่ายๆ ด้วยเนื่องจากจะถูกสร้างออกมาเป็น SQL statement ที่สามารถอ่านได้ไม่ยากครับ จริงๆการทำการ backup อาจจะใช้ phpMyAdmin ทำก็ได้ แต่หลังจากผมลองใช้ mysqldump ดูแล้ว พบว่าการใช้ mysqldump เร็วกว่ากันแบบเทียบไม่ติด และยังสามารถทำให้เป็น auto ก็ได้โดยใช้ร่วมกัน cron บน unix ครับ ก่่อนอื่นมาดู format ของ command ดูก่อนครับ

mysqldump --user [username] --password=[password] [databasename] > [dump file]

โดย --user [username] ก็ใช้ใส่ username ของ database เข้าไปครับ หรือ password ก็ให้ใส่ password ที่ใช้กับ username ที่ระบุเข้าไปครับ หากไม่มี username และ password ก็ไม่ต้องใส่เข้าไปครับ ส่วน databasename ก็คือชื่อ database ที่เราจะทำการ backup ครับ dump file ก็เป็น file backup ที่เราจะเก็บเอาไว้ครับ ลองดูตัวอย่าง เช่น database ชื่อ abc , username เป็น user1 และ password เป็น pass1 ให้เก็บไว้ใน dump file ชื่อ back.sql ก็ใช้ command ได้ดังนี้ครับ

mysqldump --user user1 --password=pass1 abc > back.sql

จะเห็นว่าไม่ยากเลยนะครับ หรือหากเป็น database ชื่อ abc แต่ไม่ได้สร้าง username กับ password ไว้ และให้เก็บไว้ใน file back.sql ก็สามารถระบุได้ดังนี้ครับ

mysqldump abc > back.sql

ครับเมื่อเรา backup database กันได้แล้วคราวนี้มาดูวิธีการ restore กันบ้างครับ วิธีการก็ไม่ยากครับ ใช้คำสั่ง mysql ได้เลยครับ โดยมี format ประมาณนี้ครับ

mysql [database name] < [backup file name]

เช่นเราจะเอาคืนจาก file ที่เรา backup ไว้เมื่อกี้ ก็

mysql abc2 < back.sql

หรือหากเรามี username กับ password ด้วยก็เหมือนกันครับคือ

mysql --user user1 --password=pass1 abc2 < back.sql

ซึ่งจะเห็นว่าผม restore กลับมาที่ database อีกตัวชื่อ abc2 ครับ ซึ่งก่อนจะ restore ได้ก็ต้องสร้าง database ตัวนี้ขึ้นมาก่อนนะครับ

เอาเป็นว่าผมจบแค่นี้ก่อนครับ จริงๆยังมี option ของ mysqldump อีกนิดหน่อย แต่คิดว่าคงน่าจะไม่ได้ใช้เท่าไหร่ ทำ backup แค่นี้ก็พอครับ


Message !!

หากต้องการตอบกระทู้ Webboard กรุณาเข้าใช้ระบบก่อนนะค่ะ..


กระทู้ตอบกลับ

public

void Backup()try

{

 

 

clsVariables.setKeys = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(clsVariables.g_registry_sub, true);//clsVariables.strConn = "Server=" + + ";Port='" + clsVariables.setKeys.GetValue("Port").ToString().Trim() + "';Database=" + + ";Uid=" + + ";Pwd=" + + ";";

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

string strServer = clsVariables.setKeys.GetValue("ServerDB").ToString().Trim();string strDatabase = clsVariables.setKeys.GetValue("DataBaseName").ToString().Trim();string strPass = clsVariables.setKeys.GetValue("PassWord").ToString().Trim();string strUser = clsVariables.setKeys.GetValue("UserName").ToString().Trim();clsVariables.setKeys.Close();DateTime Time = DateTime.Now;int year = Time.Year;int month = Time.Month;int day = Time.Day;int hour = Time.Hour;int minute = Time.Minute;int second = Time.Second;int millisecond = Time.Millisecond;//Save file to C:\ with the current date as a filename

 

//string str = this.txtSave.Text;

 

//string result = str.Replace("", "\\");

 

 

{

path =

}

 

string path;if (this.txtSave.Text.Trim() == "")"D:\\" + year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-" + second + "-" + millisecond + ".sql";else

{

path =

}

 

 

 

this.txtSave.Text.Trim() + year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-" + second + "-" + millisecond + ".sql";//Stream myStream;

 

//SaveFileDialog saveFileDialog1 = new SaveFileDialog();

 

//saveFileDialog1.Filter = "SQL files (*.sql)|*.sql|All files (*.*)|*.*";

 

//saveFileDialog1.FilterIndex = 2;

 

//saveFileDialog1.RestoreDirectory = true;

 

//if (saveFileDialog1.ShowDialog() == DialogResult.OK)

 

//{

 

// if ((myStream = saveFileDialog1.OpenFile()) != null)

 

// {

 

// StreamWriter wText = new StreamWriter(myStream);

 

// wText.Write(" your sql");

 

// myStream.Close();

 

// }

 

 

 

 

 

//}

 

 

 

psi.FileName =

psi.RedirectStandardInput =

psi.RedirectStandardOutput =

 

StreamWriter file = new StreamWriter(path);ProcessStartInfo psi = new ProcessStartInfo();"mysqldump";false;true;//psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}", uid, password, server, database);

psi.Arguments =

string.Format(@"-u{0} -p{1} -h{2} {3}", strUser, strPass, strServer, strDatabase);//frmMain.frmconnect.txtUserName.Text.Trim(), frmMain.frmconnect.txtPassWord.Text.Trim(),frmMain.frmconnect.txtServerName.Text.Trim(), frmMain.);

psi.UseShellExecute =

 

 

output = process.StandardOutput.ReadToEnd();

file.WriteLine(output);

process.WaitForExit();

file.Close();

process.Close();

progressBar1.Visible =

progressBar1.Minimum = 0;

progressBar1.Maximum = 10010;

progressBar1.Step = 1;

 

 

 

{

val = i * 2;

progressBar1.Step += 1;

progressBar1.Value = progressBar1.Step;

 

{

progressBar1.Value = progressBar1.Maximum;

}

i = i + 1;

}

progressBar1.Visible =

 

}

 

{

 

}

}

false;Process process = Process.Start(psi);string output;true;int i = 0;int val = 0;for (i = 0; i <= 10000; i++)if ((i == 10000))false;MessageBox.Show("Backup Database Complete !! D:\"");catch (IOException ex)MessageBox.Show(ex.Message + "Error , unable to backup!","Error Backup!!!",MessageBoxButtons.OK,MessageBoxIcon.Error);

{

 


Post โดย :  huwko Date: 2010-12-05 00:26:36 ip: 118.175.76.231