如何用SQL語句實現Mysql數據庫的備份與還原

之前一直作android客戶端的項目,根本沒有開發asp.net mvc的開發,現階段作了一個模塊,參數設置,以及數據庫的備份與還原。其需求以下:android

參數設置    本項參數設置爲對自動數據備份進行設置,管理員能夠對系統自動備份文件所存放的位置、自動備份的週期、自動備份的時間進行設定,而且能夠開啓或關閉自動備份功能。sql

數據備份    在本模塊中,管理員能夠經過錄入系統備份文件的目標位置,對系統數據庫進行備份,保證系統數據的安全性。每次備份都會記錄在系統中,包含備份時間、備份位置及備份操做者。數據庫

數據還原    管理員經過選擇曾經進行備份的數據庫文件,在進行校對後,系統會進行數據庫還原工做,本項功能用以數據災難恢復,還原信息也會記錄至系統中。 今天主要給你們認識一下,如何經過SQL語句實現MYSql數據庫的備份與還原。 其實代碼很簡單,下來咱們就直接看如何實現吧。 首先你在項目中須要導入兩個Dll包,Mysql.Data.dll和Mysqlbackup.dll. 下來來看代碼安全

1.databackup(備份)mvc

void Backup()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.Export();
}

 

2.dataRestore(還原) asp.net

void Restore()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ImportInfo.FileName = file;
    mb.Import(); 
}

 

3. Export and Compress as Zip File(出口和壓縮,壓縮文件) 學習

void Backup()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.ExportInfo.ZipOutputFile = true;
    mb.Export();
}  

 

4. Select tables to backup(選擇要備份表) ui

void BackupTables()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.ExportInfo.TablesToBeExported = new string[] { "member", "activity", "season" };
    mb.Export();
}

 

5.Custom columns and rows backup conditions(自定義列和行備份條件)加密

void BackupTablesCustomSQL()
{
    Dictionary<string, string> dic = new Dictionary<string, string>();
    dic.Add("member", "SELECT * FROM `member` WHERE `membertype` = 1;");
    dic.Add("payment", "SELECT `id`,`total` FROM `payment`;");
    dic.Add("activity", "SELECT * FROM `activity` a INNER JOIN `season` s ON a.`seasonid` = s.`id` WHERE s.`name` = 'Spring';");
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.ExportInfo.TableCustomSql = dic;
    mb.Export();
}

 

 

6.Backup with Encryption(備份和加密) spa

void BackupEncrypt()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.ExportInfo.EnableEncryption = true;
    mb.ExportInfo.EncryptionKey = "my secret password";
    mb.Export();
}

 

7.Resotre with Decryption(還原與解密)

void RestoreDecrypt()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ImportInfo.FileName = file;
    mb.ImportInfo.EnableEncryption = true;
    mb.ImportInfo.EncryptionKey = "my secret password";
    mb.Import(); 
}

 

 

8.Encrypt & Decrypt a SQL Dump File(加密和解密SQL轉儲文件)

void EncryptDecryptDumpFile()
{
    MySqlBackup mb = new MySqlBackup();
    string file1 = "C:\\MyDumpFileOld.sql";
    string file2 = "C:\\MyDumpFileNew.sql";
    string file3 = "C:\\MyDumpFileBackToOri.sql";
    string password = "my secret password";
    mb.EncryptSqlDumpFile(file1, file2, password);
    mb.DecryptSqlDumpFile(file2, file3, password);
}

 

9.Backup Table Structures without rows and reset auto-increment to 1 Collapse | Copy Code (自動增量備份表結構沒有行和重置爲1 |複製代碼崩潰) 

void BackupNoRows()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.ExportInfo.ExportRows = false;
    mb.ExportInfo.ResetAutoIncrement = true;
    mb.Export();
}

 

10.Full List of Settings for Export (Backup) (的完整列表設置出口) 

void BackupNoRows()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ExportInfo.FileName = file;
    mb.ExportInfo.AddCreateDatabase = true;
    mb.ExportInfo.AsynchronousMode = true;
    mb.ExportInfo.AutoCloseConnection = true;
    mb.ExportInfo.CalculateTotalRowsFromDatabase = true;
    mb.ExportInfo.EnableEncryption = true;
    mb.ExportInfo.EncryptionKey = "my secret password";
    mb.ExportInfo.ExportEvents = true;
    mb.ExportInfo.ExportFunctions = true;
    mb.ExportInfo.ExportRows = true;
    mb.ExportInfo.ExportStoredProcedures = true;
    mb.ExportInfo.ExportTableStructure = true;
    mb.ExportInfo.ExportTriggers = true;
    mb.ExportInfo.ExportViews = true;
    mb.ExportInfo.MaxSqlLength = 10000000;
    mb.ExportInfo.RecordDumpTime = true;
    mb.ExportInfo.ResetAutoIncrement = true;
    mb.ExportInfo.TableCustomSql = //Shown in example 4
    mb.ExportInfo.TablesToBeExported = //Shown in example 3
    mb.ExportInfo.ExportRows = false;
    mb.ExportInfo.ResetAutoIncrement = true; 
    mb.ExportInfo.ZipOutputFile = false;
    mb.Export();
} 

 

11.Full List of Settings for Import (設置導入的完整列表) 

void Restore()
{
    string constr = "server=localhost;user=root;pwd=qwerty;database=test;";
    string file = "C:\\MyDumpFile.sql";
    MySqlBackup mb = new MySqlBackup(constr);
    mb.ImportInfo.FileName = file;
    mb.ImportInfo.AsynchronousMode = true;
    mb.ImportInfo.AutoCloseConnection = true;
    mb.ImportInfo.EnableEncryption = true;
    mb.ImportInfo.EncryptionKey = "my secret password";
    mb.ImportInfo.IgnoreSqlError = true;
    mb.ImportInfo.SetTargetDatabase("MyNewDatabase", ImportInformations.CharSet.latin1);
    mb.Import(); 
}

 

12.Export BLOB data and save as files on local drive (出口BLOB數據並保存爲本地驅動器上的文件)

private void BackupEncrypt()
{
    string folder = "C:\\exportedfiles";
    string table = "upload";
    string column_Blob = "blobdata";
    string column_FileName = "filename";
    string column_FileSize = "filesize";
    string con = "server=localhost;user=root;pwd=qwerty;database=member;";
    MySqlBackup mb = new MySqlBackup(con);
    mb.ExportBlobAsFile(folder, table, column_Blob, column_FileName, column_FileSize);
}

 

 

 13.Get all tables' name from database (從數據庫獲取全部表的名字) 

private string[] GetTableNames()
{
    string con = "server=localhost;user=root;pwd=qwerty;database=test;";
    MySqlBackup mb = new MySqlBackup(con);
    return mb.DatabaseInfo.TableNames;
}

 

14.Get Create Table sql statement for specific table (爲特定的表建立表的sql語句) 

private string GetCreateTable(string tableName)
{
    string con = "server=localhost;user=root;pwd=qwerty;database=test;";
    MySqlBackup mb = new MySqlBackup(con);
    return mb.DatabaseInfo.Tables[tableName].CreateTableSql;
}

下面是我項目中寫的備份與還原方法

//備份newtest database 裏面全部的表

 
 

public void DataBackup()
{
try
{
//var time = DateTime.Now;
string file = "D:\\mybackup.sql";//備份的路徑
string conn = "server=172.18.0.3;database=newtest;uid=root;pwd=123;";
MySqlBackup mb = new MySqlBackup(conn);
mb.ExportInfo.FileName = file;
mb.ExportInfo.EnableEncryption = true;//加密
mb.ExportInfo.EncryptionKey = "1234";//加密密鑰
mb.ExportInfo.ZipOutputFile = true;//壓縮
mb.Export();

}
catch (Exception e)
{
Console.WriteLine("備份失敗,請檢查");
}

 
 

}

 

 

//還原newtest database 裏面全部的表(這裏不要解壓,解壓是自動的)

 public void DataRestore()
         {
            try
            {
                string file = "D:\\mybackup.zip";//找到備份的路徑所在的zip文件,進行還原恢復。
                string conn = "server=172.18.0.3;user=root;pwd=123;database=newtest;";
                MySqlBackup mb = new MySqlBackup(conn);
                mb.ImportInfo.FileName = file;
                mb.ImportInfo.EnableEncryption = true;//解密
                mb.ImportInfo.EncryptionKey = "1234";//解密密鑰
                mb.Import();
            }
            catch (Exception e)
            {
                Console.WriteLine("恢復失敗,請檢查");
            }
         }

 

本文原創,請尊重勞動成果。也真誠但願和你們相互討論,相互學習,相互提升。

相關文章
相關標籤/搜索