用mysqldump远程备份mysql数据库

本文介绍如何使用mysqldump工具远程备份MySQL数据库。通过创建专用备份用户并利用命令行工具,可以高效地完成数据库备份任务。

用mysqldump远程备份mysql数据库

 

mysqldump是备份mysql数据库的一种好工具。它相对于用phpmyadmin等备份工具更加快速,又避免受php.ini等的限制,在windows系统下还可以结合计划任务实现定时远程备份数据库。

操作用mysqldump备份数据库的用户需要的权限比较小,只需要select和lock table的权限就足够了。所以可以创建一个备份数据库的用户,专门用于备份数据库,这样可以避免数据库受到意外的破坏。

在备份数据库之前我们要做足准备功夫,首先创建了执行备份操作的数据库用户——backup,密码为:123456。其次,确定我们要备份哪个数据库,放在哪里。然后,确定数据库的备份文件要放到哪里。

假设我们的任务是要备份一个位于192.168.1.2服务器上,名称为backup_test的数据库,并把备份文件放到D:\bak\的文件夹中。又假设我们的操作系统为windows xp,于是我们可以用以下的方法执行备份操作:

我们可以使用windows自带的命令提示符(调用命令提示符的方法有多种,最常用的就是点击开始菜单,选择“运行”,输入cmd的命令就可以启动了),在命令提示符中输入以下命令:

mysqldump -ubackup -p123456 -h 192.168.1.2 backup_test > D:\bak\bakcup.sql

在这段命令中:

mysqldump 是myqldump的程序名了;

-u 是数据库的用户名,后面紧跟着用户名backup;

-p 是数据库的密码,后面同样紧跟着密码,注意是-p和密码之间不能有空格;

-h 是数据库的地址,如果没有此项表明是备份本地的数据库;

backup_test 要备份的数据库名称;

> 表明该数据库备份到后面的文件,紧跟当然是备份文件的地址了,注意要用绝对文件路径,文件的后缀也可以用.txt。

一旦执行该命令后,mysqldump立即执行备份操作。远程备份数据库要似乎网络的情况,一般远程备份需要一定的时间的。

如果把这个命令写成批处理文件,通过windows的计划任务可以实现定时备份数据。

在windows下用mysqldump备份数据库,因为没有gzip的压缩引擎,因此不能对备份数据库进行压缩,因此如果备份文件多了要经常清理过期的数据库备份文件。


如果给出的信息室1044,则表示你没有足够的权限来备份服务器上的数据库。

 

下面详细讲解mysqldump所带的可选参数:

基本用法是:

mysqldump [OPTIONS] database [tables]

如果你不给定任何表,整个数据库将被导出。

通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。

注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。

mysqldump支持下列选项:

--add-locks

在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。

--add-drop-table

在每个create语句之前增加一个drop table。

--allow-keywords

允许创建是关键词的列名字。这由在列名前面加表名的方法做到。

-c, --complete-insert

使用完整的insert语句(用列名字)。

-C, --compress

如果客户和服务器均支持压缩,压缩两者间所有的信息。

--delayed

用INSERT DELAYED命令插入行。

-e, --extended-insert

使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)

-#, --debug[=option_string]

跟踪程序的使用(为了调试)。

--help

显示一条帮助消息并且退出。

--fields-terminated-by=...

--fields-enclosed-by=...

--fields-optionally-enclosed-by=...

--fields-escaped-by=...

--fields-terminated-by=...

这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。

LOAD DATA INFILE语法。

-F, --flush-logs

在开始导出前,洗掉在MySQL服务器中的日志文件。

-f, --force,

即使我们在一个表导出期间得到一个SQL错误,继续。

-h, --host=..

从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。

-l, --lock-tables.

为开始导出锁定所有表。

-t, --no-create-info

不写入表创建信息(CREATE TABLE语句)

-d, --no-data

不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!

--opt

同--quick --add-drop-table --add-locks --extended-insert --lock-tables。

应该给你为读入一个MySQL服务器的尽可能最快的导出。

-pyour_pass, --password[=your_pass]

与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。

-P port_num, --port=port_num

与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)

-q, --quick

不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。

-S /path/to/socket, --socket=/path/to/socket

与localhost连接时(它是缺省主机)使用的套接字文件。

-T, --tab=path-to-some-directory

对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和--lines--xxx选项来定。

-u user_name, --user=user_name

与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。

-O var=option, --set-variable var=option

设置一个变量的值。可能的变量被列在下面。

-v, --verbose

冗长模式。打印出程序所做的更多的信息。

-V, --version

打印版本信息并且退出。

-w, --where='where-condition'

只导出被选择了的记录;注意引号是强制的!

"--where=user='jimf'" "-wuserid>1" "-wuserid<1"

最常见的mysqldump使用可能制作整个数据库的一个备份:

mysqldump --opt database > backup-file.sql

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:

mysqldump --opt database   mysql --host=remote-host -C database

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:

mysqladmin create target_db_name

mysql target_db_name < backup-file.sql

 

转载于:https://www.cnblogs.com/pricks/archive/2009/05/27/1490713.html

<think> 我们正在讨论mysqldump远程备份数据库时的参数配置。用户明确询问的是mysqldump.exe的参数配置信息。 根据之前的知识,mysqldumpMySQL数据库备份工具,远程备份需要指定连接远程数据库的参数。 关键参数包括: 1. 连接参数:指定远程服务器地址、端口、用户名和密码等。 2. 输出参数:控制备份文件的输出位置和格式。 3. 备份内容参数:选择备份数据库、表、结构或数据等。 具体常用参数: - `-h` 或 `--host`:指定远程服务器的主机名或IP地址。 - `-P` 或 `--port`:指定远程服务器的端口号(默认为3306)。 - `-u` 或 `--user`:指定连接数据库的用户名。 - `-p` 或 `--password`:提示输入密码(注意:在命令行中直接写密码可能不安全,一般只写-p,然后程序会提示输入密码,或者使用配置文件避免密码暴露)。 - `--databases`:指定要备份数据库名称(可以多个)。 - `--all-databases`:备份所有数据库。 - `--tables`:指定要备份的表(需要先指定数据库)。 - `--no-data`:只备份结构,不备份数据。 - `--no-create-info`:只备份数据,不备份结构。 - `--routines`:备份存储过程和函数。 - `--triggers`:备份触发器。 - `--events`:备份事件。 - `--single-transaction`:在InnoDB表上使用事务保证备份一致性(重要)。 - `--lock-tables`:为每个表备份前锁定(对非事务引擎如MyISAM有用,但会锁定整个数据库,在远程备份时可能影响使用,所以通常建议InnoDB使用--single-transaction)。 - `--quick`:逐行读取数据,减少内存使用。 - `--result-file`:指定输出文件(相对于将输出重定向到文件,这个参数可以避免特殊字符转义问题)。 另外,为了避免在备份过程中记录日志(特别是binlog),可以使用: `--skip-lock-tables` 和 `--skip-add-locks` 等,但需要根据具体情况选择。 注意:远程备份需要确保远程服务器允许该用户从备份客户端IP连接,并具有相应的权限。 一个典型的远程备份命令示例: ```bash mysqldump -h [远程主机IP] -P [端口号] -u [用户名] -p --databases [数据库名] --single-transaction --routines --triggers --events > backup.sql ``` 或 ```bash mysqldump -h remote.example.com -u backup_user -p --all-databases --single-transaction --routines --triggers --events > full_backup.sql ``` 安全性提示:在生产环境中,密码不建议直接在命令行中写,可以使用配置文件(如`--defaults-extra-file`指定配置文件)或者使用系统环境变量等方式传递密码。 根据上述分析,我们将详细列出远程备份所需的参数配置。 </think> ### mysqldump远程备份数据库的参数配置指南 当使用`mysqldump.exe`进行远程数据库备份时,关键参数配置如下(以Windows环境为例): #### 1. **基础连接参数** ```bash mysqldump.exe -h [远程服务器IP] -P [端口号] -u [用户名] -p --databases [数据库名] > backup.sql ``` - `-h`:远程MySQL服务器IP地址(如`192.168.1.100`) - `-P`:远程端口(默认3306可省略) - `-u`:远程数据库用户名(如`root`) - `-p`:运行后手动输入密码(安全推荐) - `--databases`:指定备份数据库名(多库用空格分隔) #### 2. **高级备份选项** - **全库备份**: ```bash --all-databases > full_backup.sql ``` - **事务一致性备份**(InnoDB引擎): ```bash --single-transaction ``` - **备份存储过程/函数**: ```bash --routines --triggers ``` - **排除数据只备份结构**: ```bash --no-data ``` #### 3. **压缩与输出控制** ```bash mysqldump.exe -h 10.0.0.5 -u admin -p dbname | gzip > backup_$(date +%F).sql.gz ``` - 管道`|`配合`gzip`实现压缩备份 - `> backup.sql` 指定输出文件路径 #### 4. **安全注意事项** - **密码安全**: ```bash # 使用配置文件避免密码暴露 mysqldump.exe --defaults-extra-file=my.cnf dbname ``` `my.cnf`文件内容: ```ini [client] host=远程IP user=用户名 password=密码 ``` - **权限要求**: 远程用户需具备`SELECT`(数据)、`SHOW VIEW`(视图)、`TRIGGER`(触发器)权限[^1]。 #### 典型完整示例 ```bash mysqldump.exe -h dbserver.company.com -P 3307 -u backup_user -p \ --single-transaction --routines --triggers \ --databases sales inventory > C:\backups\daily_backup.sql ``` >[!TIP] >- 使用`--skip-lock-tables`可避免锁表(非事务引擎) >- 添加`--hex-blob`避免二进制数据损坏 >- 通过`--where`条件实现部分数据备份(如`--where="date>='2023-01-01'"`)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值