Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL数据的导入导出/备份恢复

MySQL数据的导入导出/备份恢复

原创
作者头像
Power
发布于 2025-03-01 05:14:18
发布于 2025-03-01 05:14:18
31100
代码可运行
举报
运行总次数:0
代码可运行

1. mysqldump 简介

mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

2. MySQL备份命令

(1)导出所有库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump --all-databases --master-data=2 --single-transaction --quick -R --events -u$user -h$IP -P$port -p$password > ${backup_name}.sql

(2)导出部分库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump --databases db1 db2 db2 --master-data=2 --single-transaction --quick -R --events -u$user -h$IP -P$port -p$password > ${backup_name}.sql

(3)忽略部分表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump  --databases db1 db2 db3 --ignore-table=mysql.slow_log --ignore-table=mysql.user --master-data=2 --single-transaction --quick -R --events -u$user -h$IP -P$port -p$password > ${backup_name}.sql

(4)导出部分表结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump -u$user -h$IP -P$port -p$password -d dbname tab1 tab2 tab3 > ${backup_name}.sql

(5)导出部分表数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump -u$user -h$IP -P$port -p$password  dbname tab1 tab2 tab3 > ${backup_name}.sql

(6)into outfile方法导出数据

文档推荐:官方参考文档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from xxx_table into outfile '/home/xxx.bak' fields terminated by '|' enclosed by '"' lines terminated by '\r\n' ;

参数名

缩写

含义

--host

-h

服务器IP地址

--port

-P

服务器端口号

--user

-u

MySQL 用户名

--pasword

-p

MySQL 密码

--databases

-B

指定要备份的数据库

--all-databases

-A

备份mysql服务器上的所有数据库

--compact

压缩模式,产生更少的输出

--comments

添加注释信息

--complete-insert

-c

输出完成的插入语句

--lock-tables

-l

备份前,锁定所有数据库表

--no-create-db/--no-create-info

禁止生成创建数据库语句

--force

当出现错误时仍然继续备份操作

--default-character-set

指定默认字符集

--add-locks

备份数据库表时锁定数据库表

--master-data

将二进制的信息写入到输出文件中

--single-transaction

保证数据一致性

--ignore-table

忽略备份某张表

--routines

-R

导出存储过程以及自定义函数

--quick

-q

不缓冲查询,直接导出到标准输出

--events

-E

导出事件

【注】在mysqldump中指定single-transaction时,会使用可重复读(REPEATABLE READ)事务隔离级别来保证整个dump过程中数据一致性,该选项仅对InnoDB表有用,且不能与ALTER TABLE/CREATE TABLE/DROP TABLE/RENAME TABLE/TRUNCATE TABLE等DDL操作并行。本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。

3. MySQL还原命令

(1)系统命令导入数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqladmin -u$user -h$IP -P$port -p$password create db_name  #DB中没有这个库时,需要先创建
mysql -u$user -h$IP -P$port -p$password   db_name <  ${backup_name}.sql

(2)soure 方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql > use db_name
mysql > source /backup/${backup_name}.sql

(3)load方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql > load data infile '/home/xxxxx.bak' into table xxx_table fields terminated by '|' enclosed by '"' lines terminated by '\r\n' ;

4. MySQL完整复制表到新表

(1)复制表结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE new_table1 LIKE table1;

(2)新表导入数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO new_table1 SELECT * FROM table1;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验