Mysql 使用mysqldump进行备份与还原
方案
Mysql提供了多种备份还原的方案,详见7.2 Database Backup Methods
简单来说,
1.Mysql企业版热备份
2.mysqldump
3.拷贝表文件
4.使用sql语句生成文件备份
此方法不支持数据结构的变更
5.启用二进制日志进行增量备份(默认启动)
6.使用从站进行备份
mysqldump的使用
注意这里讲的是Mysql 8.x的语法
先找到mysqldump.exe
和mysql.exe
的Bin目录
在MySQL Server
目录下面有,比如C:\Program Files\MySQL\MySQL Server 8.0\bin
,在MySQL Workbench
目录下也有,如C:\Program Files\MySQL\MySQL 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也可以输出为txt
、csv
、xml
等格式
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,说明文档在这里
↑亲测有效,强烈推荐,不过现在好像没有更新了~
使用MySqlBackup.Net需要注意如果数据量较大,可能出现操作超时的问题:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
需要将Command的CommandTimeout
设置大一些
参考资料
Connect C# to MySQL
Backup and Restore a MySQL Database in C#.NET
学习技术最好的文档就是【官方文档】,没有之一。
还有学习资料【Microsoft Learn】、【CSharp Learn】、【My Note】。
如果,你认为阅读这篇博客让你有些收获,不妨点击一下右下角的【推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。