MySQL数据备份操作步骤

常见的数据备份命令

备份命令 备份速度 恢复速度 介绍 功能 适用场景
lvm2快照 一般、支持几乎热备、速度快 一般 中小型数据量的备份
cp 物理备份、灵活性低 很弱 少量数据备份
xtrabackup 较快 较快 实现innodb热备、对存储引擎有要求 强大 较大规模的备份
mysqldump 逻辑备份、适用所有存储引擎 一般 中小型数据量备份

常用的备份工具mysqldump

mysqldump客户端使用程序执行 逻辑备份,生成一组 SQL 语句,可以执行这些语句以重现原始数据库对象定义和表数据 。它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器。mysqldump 命令还可以生成 CSV、其他分隔文本或 XML 格式的输出 。对整个数据库、数据库结构和数据的备份,保存的是完整时刻的数据库,是差异备份与增量备份的基础。但是数据存在大量的重复,占用大量的备份空间,而且备份时间和恢复时间长。

mysqldump基本操作

使用 mysqldump -help来查看基本语法

powershell 复制代码
 mysqldump -help

选项含义

登录选项:
  • -u user:指定用户
  • -h host:指定主机
  • -p:表示要使用密码
  • -E, --events: 备份事件调度器
  • -R, --routines: 备份存储过程和存储函数
备份选项:
  • --all-databases:备份所有数据库
  • --databases db1 db2:备份指定的数据库
  • --single-transaction:对事务引擎执行热备
  • --flush-logs:更新二进制日志文件
  • --master-data等于1 => 每备份一个库就生成一个新的二进制文件(默认) 等于2 => 只生成一个新的二进制文件
  • --quick:在备份大表时指定该选项

导出所有数据库

语法

powershell 复制代码
mysqldump -u用户-p密码 --all-databases >输出文件地址

实战

powershell 复制代码
mysqldump -uroot -proot --all-databases >/backup/all.sql

导出指定数据库的所有数据

语法

powershell 复制代码
mysqldump -u用户 -p密码 --databases 指定数据库1 指定数据库2 >SQL文件输出地址

实战

powershell 复制代码
mysqldump -uroot -proot --databases db1 db2 >/backup/user.sql

导出指定数据库中的表

指定表只能针对一个数据库进行导出,且导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据语句。

语法

powershell 复制代码
mysqldump -u用户 -p密码 --databases 指定数据库1 --tables 指定表1 指定表2 >SQL文件输出路径地址

实战

powershell 复制代码
mysqldump -uroot -proot --databases db1 --tables a1 a2  >/backup/db1.sql

条件导出

导出表中id=1的数据

语法

powershell 复制代码
mysqldump -u用户 -p密码 --databases 指定数据库1 --tables 指定表1 --where='条件语句'  >SQL文件输出地址

实战

powershell 复制代码
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1'  >/backup/a1.sql

仅导出表结构不导出数据

语法

powershell 复制代码
mysqldump -u用户 -p密码 --no-data --databases 指定数据看 >SQL文件输出地址

实战

powershell 复制代码
mysqldump -uroot -proot --no-data --databases db1 >/backup/db1.sql

跨服务器导出导入数据

将服务器1中的数据库的所有数据导入到服务器2中的数据库中,服务器2所指的数据库必须存在。

语法

powershell 复制代码
mysqldump --host=源主机IP -u用户 -p密码 --databases 指定数据库 |mysql --host=目标主机IP -u用户 -p密码 指定数据库

实战

powershell 复制代码
mysqldump --host=127.x.x.x -uroot -proot --databases db1 |mysql --host=127.x.x.x -uroot -proot db2

mysqldump --host=127.x.x.x -uroot -proot -C --databases test |mysql --host=127.x.x.x -uroot -proot test //加上-C参数可以启用压缩传递。

恢复数据

powershell 复制代码
create database school;
use school;
source /backup/all.sql;
powershell 复制代码
mysql -uroot -p < /backup/all.sql;
相关推荐
DCTANT36 分钟前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
程序员岳焱2 小时前
Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
后端·mysql·性能优化
喜欢敲代码的程序员3 小时前
SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:项目搭建(一)
spring boot·mysql·elementui·vue·mybatis
AI、少年郎3 小时前
Oracle 进阶语法实战:从多维分析到数据清洗的深度应用(第四课)
数据库·oracle
赤橙红的黄3 小时前
自定义线程池-实现任务0丢失的处理策略
数据库·spring
钢铁男儿3 小时前
C# 委托(调用带引用参数的委托)
java·mysql·c#
叁沐3 小时前
MySQL 02 日志系统:一条SQL更新语句是如何执行的?
mysql
DataGear3 小时前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
weixin_438335403 小时前
分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)
数据库·redis·分布式
RunsenLIu3 小时前
基于Vue.js + Node.js + MySQL实现的图书销售管理系统
vue.js·mysql·node.js