Как сделать резервную копию базы данных с помощью MySQL и C #. Net - PullRequest
2 голосов
/ 07 октября 2011

Я нашел это решение для резервного копирования моей базы данных (mysql) с помощью c # .net

string fname = txtFileName.Text;


if (fname == "")
{

 MessageBox.Show("Please Enter the File Name!");return;
}

try
{

      btnBackup.Enabled = false;
      DateTime backupTime = DateTime.Now;

      int year = backupTime.Year;
      int month = backupTime.Month;

      int day = backupTime.Day;
     int hour = backupTime.Hour;

      int minute = backupTime.Minute;
     int second = backupTime.Second;

     int ms = backupTime.Millisecond;
    String tmestr = backupTime.ToString();

 // C:\Program Files\MySQL\MySQL Server 5.0\bin

   //tmestr = "C:\\" + year + "-" + month + "-" + day + "-" + hour + "-" + minute + ".bak";

    tmestr = "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\" + fname + year + "-" + month + "-" + day + "-" + hour;// +".sql";

   StreamWriter file = new StreamWriter(tmestr);
  ProcessStartInfo proc = new ProcessStartInfo();

    string cmd = string.Format(@"-u{0} -p{1} -h{2} {3}", user, passwd1, Data_Source, dbname);
     proc.FileName = "mysqldump";

   proc.RedirectStandardInput = false;
   proc.RedirectStandardOutput = true;

   proc.Arguments = cmd;//"-u root -p smartdb > testdb.sql";

   proc.UseShellExecute = false;
   Process p = Process.Start(proc);

   string res;
   res = p.StandardOutput.ReadToEnd();

  file.WriteLine(res);

   p.WaitForExit();

  file.Close();

  MessageBox.Show("DataBase Backup Has Been Completed Successfully!");btnBackup.Enabled = true;
}

catch (IOException ex)
{

  MessageBox.Show("Disk full or other IO error , unable to backup!");
}

txtFileName.Text = "";

какое значение я должен дать в этом текстовом поле "txtfilename.txt"

и что я должен дать в этих значениях @"-u{0} -p{1} -h{2} {3}", user, passwd1, Data_Source, dbname

Я нашел файл mysqldump.exe в этом месте

string location = "C:\\Program Files\\MySQL\\MySQL WorkBench 5.2CE\\";

а это моя строка подключения

string connestring = "server=localhost;user=root;database=access";

Я не уверен, какие значения я должен дать в этих местах user, passwd1, Data_Source, dbname

Может ли кто-нибудь помочь с этим, ребята

Большое спасибо ..

Ответы [ 3 ]

3 голосов
/ 07 октября 2011

Во-первых, расположение mysqldump.exe, которое вы должны использовать, находится в том же каталоге, что и сам mysql (например, C: \ Program Files \ MySQL \ MySQL Server 5.5 \ bin), используйте его и никакую другую копию.

Строка подключения отсутствует.

В родительском каталоге (например, C: \ Program Files \ MySQL \ MySQL Server 5.5) вы найдете файл конфигурации my.ini, где под заголовком [client] вы можете установить параметры подключения (имя пользователя / пароль и т. Д.) , Если вы предпочитаете, вы указываете регистрационную информацию в качестве аргументов при запуске процесса mysqldump (список аргументов предоставляется MySQL).

Например, будет выгружать все в указанные вами базы данных (данные, структура, триггеры, лот) и будет перезаписывать любые таблицы, когда вы снова импортируете их, используйте аргументы командной строки в зависимости от что хочешь).

    public static void DumpStructure()
{
    Process sd = null;
    ProcessStartInfo r1 = new ProcessStartInfo(/* Full path to MySqlDump.exe */, "--databases exampleDatabase1 exampleDatabase2 --compress --routines --triggers --add-drop-database --add-drop-table --add-locks --extended-insert --password=YOURPASSWORD --port=8307 --user=YOURUSERNAME --disable-keys --quick --comments --complete-insert --result-file=DUMPEDOUTPUT.sql");

    r1.CreateNoWindow = true;
    r1.WorkingDirectory = /* WHERE MYSQL.EXE IS STORED */;
    r1.UseShellExecute = false;
    r1.WindowStyle = ProcessWindowStyle.Minimized;
    r1.RedirectStandardInput = false;

    sd = Process.Start(r1);
    sd.WaitForExit();

    if (!sd.HasExited) {
        sd.Close();
    }
    sd.Dispose();
    r1 = null;
    sd = null;  
}
1 голос
/ 07 октября 2011

Вы можете просто сделать mysqldump, если вы хотите сделать резервную копию вашей базы данных:

Я не использую Windows, но это должно более или менее сделать свое дело: Перейдите туда, где ваш mysqldump использует командную строку, и выполните эту команду:

mysqldump -u root -p --databases [my db name]> file.sql

При запросе пароля введите ваш пароль.

0 голосов
/ 07 октября 2011

Я не уверен, что понимаю ваш вопрос, но:

user: the user name for the account you are using to connect to mysql
passwd1: the associated password
Data_Source: the host name of the the system that the mysql server is running on
dbname: the name of the database schema you are trying to back up
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...