zoukankan      html  css  js  c++  java
  • Mysql 使用mysqldump进行备份与还原

    方案

    Mysql提供了多种备份还原的方案,详见7.2 Database Backup Methods
    简单来说,
    1.Mysql企业版热备份
    2.mysqldump
    3.拷贝表文件
    4.使用sql语句生成文件备份
    此方法不支持数据结构的变更
    5.启用二进制日志进行增量备份(默认启动)
    6.使用从站进行备份

    mysqldump的使用

    注意这里讲的是Mysql 8.x的语法
    先找到mysqldump.exemysql.exe的Bin目录
    MySQL Server目录下面有,比如C:Program FilesMySQLMySQL Server 8.0in,在MySQL Workbench目录下也有,如C:Program FilesMySQLMySQL Workbench 8.0 CE
    然后cmd或者powershell

    备份

    mysqldump -h 数据库ip -u 用户名 -p --single-transaction --quick --lock-tables=false 数据库名称 表名 > 数据备份位置.sql
    然后会要求输入密码,输入密码后,备份成功
    

    选项:
    --single-transaction:在从服务器中转储数据之前发出BEGIN SQL语句。
    --quick:强制逐行转储表。 这为具有较少RAM和或大型数据库的系统(在其中将表存储在内存中可能会带来问题)提供了更高的安全性。
    --lock-tables = false:不为备份会话锁定表。

    还原

    mysql -h 数据库ip -u 用户名 -p 数据库名称 < 数据还原文件位置.sql
    再次输入密码
    

    参考链接

    Use mysqldump to Back Up MySQL or MariaDB
    Using mysqldump for Backups
    mysqldump 选项

    注意

    1.mysqldump支持连接远程数据库并进行备份、还原操作
    需要注意的是,远程的备份和还原文件,是写入&读取当前客户端所在的系统文件,而不是服务器的文件
    2.mysqldump也可以输出为txtcsvxml等格式
    3.密码的问题
    (1)可以配置.my.cnf来解决

    [mysqldump]
    host=localhost   
    user=mysqluser
    password=secret
    

    (2)每次命令时输入

    mysqldump -u [user name] -p[password] [database name] > [dump file]
    mysqldump -h x.x.x.x -u userName -ppassword databaseName tableName --single-transaction --quick --lock-tables=false> xxx.sql
    

    -p[password]中间没有空格
    4.>箭头的问题
    可以去掉箭头

    mysqldump -h 数据库ip -u 用户名 -p密码 数据库 数据表 -r 备份文件位置.sql
    

    参考资料

    How to perform a mysqldump without a password prompt?
    关于MYSQLDUMP命令密码的输入问题
    mysqldump and restore with special characters. øæåØÆÅ

    在C#中使用mysqldump

    FileStream StreamDB = new FileStream("dbData.sql", FileMode.Create, FileAccess.Write);
    using (StreamWriter SW = new StreamWriter(StreamDB))
    {
        ProcessStartInfo proc = new ProcessStartInfo();
        string cmd = " --host=localhost --user=root --password=pass dbData";
        proc.FileName = "C:\Program Files\MySQL\MySQL Server5.0\bin\mysqldump.exe";
        proc.RedirectStandardInput = false;
        proc.RedirectStandardOutput = true;
        proc.UseShellExecute = false;
        proc.WindowStyle = ProcessWindowStyle.Minimized;
        proc.Arguments = cmd;
        proc.CreateNoWindow = true;
        Process p = Process.Start(proc);
        SW.Write(p.StandardOutput.ReadToEnd());
        p.WaitForExit();
        p.Close();
        SW.Close();
        StreamDB.Close();
    }
    

    来自Re: Problems trying to run mysqldump from c#
    或者有现成的库MySqlBackup.Net,说明文档在这里
    ↑亲测有效,强烈推荐,不过现在好像没有更新了~

    参考资料

    Connect C# to MySQL
    Backup and Restore a MySQL Database in C#.NET

  • 相关阅读:
    FTP文件传输应用分析
    A*寻路算法
    Asp.net页面事件引发后台程序处理原理
    开发人员的基本原则(转)
    定位new表达式
    常量对象的动态分配和释放
    PostThreadMessage使用
    最美丽的数学公式
    仿函数
    CF1598EStaircases【计数】
  • 原文地址:https://www.cnblogs.com/Lulus/p/13176697.html
Copyright © 2011-2022 走看看