mysqldump备份恢复数据库

备份单库[单表]:

mysqldump -u username -p dbname [tbname ...] > filename.sql

备份单库多表:

mysqldump -u username -p dbname tbname1 tbname2... > filename.sql

备份多库:

mysqldump -u username -p --databases dbname1 dbname2 ... > filename.sql

备份所有库:

mysqldump -u username -p --all-databases > filename.sql

备份压缩:

mysqldump -u username -p dbname [tbname ...] | gzip > filename.sql

备份结构不备份数据:

mysqldump -u username -p --no-data dbname [tbname ...] > filename.sql mysqldump -u username -p -d dbname [tbname ...] > filename.sql

恢复:

mysql -u username -p [target_database_name] < filename.sql

如果使用--all-databases参数备份了所有的数据库,那么恢复时不需要指定数据库

导出表数据:

导出表数据(非insert语句)到文件:

SELECT 列名 FROM table [WHERE 语句] INTO OUTFILE '目标文件'[OPTIONS]

[OPTIONS] 为可选参数选项,OPTIONS 部分的语法包括 FIELDS 和 LINES 子句,其常用的取值有:

  • FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符,默认情况下为制表符‘\t’。
  • FIELDS [OPTIONALLY] ENCLOSED BY '字符':设置字符来括上 CHAR、VARCHAR 和 TEXT 等字符型字段。如果使用了 OPTIONALLY 则只能用来括上 CHAR 和 VARCHAR 等字符型字段。
  • FIELDS ESCAPED BY '字符':设置如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为‘\’。
  • LINES STARTING BY '字符串':设置每行开头的字符,可以为单个或多个字符,默认情况下不使用任何字符。
  • LINES TERMINATED BY '字符串':设置每行结尾的字符,可以为单个或多个字符,默认值为‘\n’ 。

注意:FIELDS 和 LINES 两个子句都是自选的,但是如果两个都被指定了,FIELDS 必须位于 LINES的前面。

该语句用 SELECT 来查询所需要的数据,用 INTO OUTFILE 来导出数据。其中,目标文件用来指定将查询的记录导出到哪个文件。这里需要注意的是,目标文件不能是一个已经存在的文件,文件只能导出到实例所在服务器上。

导出表数据(insert语句)到文件:

SELECT * FROM mysql.user INTO OUTFILE 'targetfile.sql' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY 'INSERT INTO tablename VALUE(' TERMINATED BY ')\;\r\n';

报错:

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement。

原因:

这是因为MySQL 限制了数据的导出路径。MySQL 导入导出文件只能在 secure-file-priv 变量的指定路径下的文件才可以导入导出。

解决:

1.使用show variables like '%secure%';语句查看 secure-file-priv 变量配置,将文件导出到secure_file_priv变量值的目录下

2. 如果 secure_file_priv 值为 NULL,则为禁止导出,可以在 MySQL 安装路径下的 my.cnf文件中添加secure_file_priv=设置路径语句,然后重启服务即可。如secure_file_priv=‘\’

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysqldumpMySQL数据库备份工具,可以用于备份整个数据库或单个表。mysqldump增量备份数据库的方法如下: 1.首先创建一个全量备份,使用以下命令: ```shell mysqldump -u username -p --databases dbname > dbname_full_backup.sql ``` 其中,username是MySQL数据库的用户名,dbname是要备份数据库名,-p选项会提示输入密码。 2.创建一个用于存储增量备份的目录,例如: ```shell mkdir /path/to/incremental/backup ``` 3.使用以下命令创建一个增量备份: ```shell mysqldump -u username -p --databases dbname --no-create-info --skip-triggers --single-transaction --flush-logs | gzip > /path/to/incremental/backup/dbname_incr_backup_$(date +%F_%T).sql.gz ``` 其中,--no-create-info选项表示只备份数据而不备份表结构,--skip-triggers选项表示不备份触发器,--single-transaction选项表示使用事务来确保备份的一致性,--flush-logs选项表示刷新二进制日志以便备份程序可以访问新的日志文件。 4.将增量备份文件和全量备份文件一起恢复到新的MySQL服务器上,使用以下命令: ```shell gunzip -c dbname_full_backup.sql.gz | mysql -u username -p dbname mysqlbinlog binlog.00000X | mysql -u username -p dbname gunzip -c dbname_incr_backup.sql.gz | mysql -u username -p dbname ``` 其中,gunzip命令用于解压缩备份文件,mysqlbinlog命令用于解析二进制日志文件,最后一个命令用于将增量备份文件恢复到新的MySQL服务器上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值