mysql物理备份与逻辑备份详解

条件:
本文针对mysql版本为5.7,存储引擎为InnoDB,其他版本未做实验

一、逻辑备份恢复

备份:

$ mysqldump -h127.0.0.1 --add-drop-table --force -u$DB_USER  -p$DB_PASS $DB_NAME > $BACK_DIR/$NAME_sql
$DB_USER  ##表示用户名
$DB_PASS  ##表示密码
$DB_NAME  ##表示要备份的数据库
$NAME_sql  ##表示备份的文件名称

恢复:
1、如果mysql数据库中已经配置了账号密码,可通过指定my.cnf配置文件恢复

$ mysql --defaults-extra-file=/etc/my.cnf $NAME_dest <  $NAME_dest.sql
$NAME_dest  ##需要恢复的数据库
$NAME_dest.sql  ##备份好的数据库文件

2、如果mysql数据库中没有配置账号密码

$ mysql -u$DB_USER -p$DB_PASS $NAME_dest < $NAME_dest.sql
二、物理备份迁移

首先我们需要知道数据存储结构是怎么样的,创建一个数据库后数据存储目录都做了哪些改变?
实际上mysql在创建数据库后,会在数据存储目录生成一个同名的文件夹,然后初始化生成一个db.opt文件,数据库中的每个数据表又都是一个单独的文件,以.frm和.ibd格式成对存储,比如test1数据表,则会创建test1.frm和test1.ibd,同时还会修改ibdata1文件中的元信息tablespace id

那么直接拷贝.frm和.idb这两个文件到新的MySQL数据目录下可以吗,一般来说是不行的,只有在你的ibd文件的tablespace id和ibdata1文件中的元信息的tablespace id一致才可以。

##环境
机器1:192.168.1.11
机器2:192.168.1.12
两台机器的数据库存储目录均为:/data/mysqldb/data
##需求
将机器1上的数据全量迁移到机器2上去

#1、停止mysql服务(两台机器均执行) 这一步非常重要

# /etc/init.d/mysqld stop

#2、打包机器1的数据存储目录

# ps -ef |grep mysql
root       831     1  0 10:52 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysqldb/data --pid-file=/data/mysqldb/data/mysql1-210.pid
mysql     1453   831  0 10:52 pts/0    00:01:40 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysqldb/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysqldb/logs/mysql-error.log --pid-file=/data/mysqldb/data/mysql1-210.pid --socket=/tmp/mysql.sock
--datadir就表示数据库存储目录
# cd /data/mysqldb/
# tar -zcvf data.tar.gz data

#3、将数据拷贝到机器2

# scp data.tar.gz root@192.168.1.12:/data/mysqldb/

#4、在机器2解压data.tar.gz包

# cd /data/mysqldb/
# tar -zxvf data.tar.gz           --这里就会自动覆盖data目录下的数据文件
# chown -R mysql:mysql /data/mysqldb/data

#5、启动mysql服务

# /etc/init.d/mysqld start
附加:

这里可能有人会问,如果机器2上本来就存在数据库,通过上面1-5步全量覆盖后就会导致原有的数据库消失,这里实际上是可以先将机器2上的数据逻辑备份,等全量覆盖之后再进行手动恢复

问题1、全量备份后机器2上原有的数据表不存在了,实际通过show tables可以查到

解决办法是进入数据存储目录去删除对应数据库文件下的.frm和.idb文件
问题2、全量备份后机器2上原有的数据库无法删除,实际通过show databases可以查到

解决办法是进入数据存储目录去删除对应的数据库文件目录

# rm -rf /data/mysqldb/data/maizi

问题1和问题2实际也印证了物理备份迁移只拷贝.frm和.idb这两个文件是行不通的,因为ibdata1文件被覆盖的原因导致出现了问题1和问题2,所以关于mysql数据库的存储原理非常重要!!!

好了,这就是mysql物理备份与逻辑备份的方法了,如有问题可与博主一起交流讨论!

mysql物理备份与逻辑备份详解相关推荐

  1. 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL

    mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...

  2. MySQL 的物理备份、逻辑备份、增量备份

    物理备份 , 冷备 cp .tar 首先需要两台PC: mysql   121.40.25.207                                     mysql02   47.9 ...

  3. 04-mysql数据备份之mysqldump命令详解

    MYSQL数据备份之mysqldump命令详解 一.mysqldump 简介 mysqldump 是 MySQL 自带的逻辑备份工具. 它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数 ...

  4. 物理服务器备份系统,物理备份和逻辑备份区别

    物理备份和逻辑备份区别 内容精选 换一换 可能这份面试题还不足以包含所有Java问题,但有了它,我相信你一定不会"败"的很惨,有了它,足以应对目前市面上绝大部分的Java面试了,因 ...

  5. mysql8.0导入备份_mysql8.0.20配合binlog2sql的配置和简单备份恢复的步骤详解

    第一步 安装 1.安装MySQL 2.安装Python3 [root@localhost /]#yum install python3 3.下载binlog2sql文件到本地(文件在百度云盘) [ro ...

  6. oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别

    oracle数据库物理备份和逻辑备份区别 ORACLE中数据备份分为物理备份和逻辑备份两种.物理备份就是转储ORACLE物理文件(如数据文件.控制文件.归档日志文件等),一旦数据库发生故障,可以利用这 ...

  7. 【华为云计算产品系列】eBackup云备份原理及实战详解

    [华为云计算产品系列]eBackup云备份原理及实战详解 1. 基础概念 2. eBackup的组网方式 2.1. LAN-Base 2.2. LAN-Free 2.3. Server-Free 3. ...

  8. mysql启动参数(/etc/my.cnf)详解汇总

    mysql启动参数(/etc/my.cnf)详解汇总 MYSQL–my.cnf配置中文详解 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = ...

  9. mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解

    本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...

最新文章

  1. 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用 1
  2. 2021-10-7 !二叉树的前序、中序、后序遍历 (递归版本)
  3. SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0
  4. python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅
  5. 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈
  6. 数据中台的使命、愿景、本质和六大核心能力
  7. 面试题之请描述一下Java类加载过程
  8. RGB888和RGB565颜色对照表
  9. [词汇] 十四、动词
  10. 【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系
  11. CTF-实验吧-图片里的动漫
  12. lua 5.3.5 TValue::tt_和GCObject::tt之间的爱恨纠葛
  13. 企业微信员工离职如何转移客户?
  14. 大小写字母转换c语言用getchar,用getchar改写大小写.doc
  15. java 获取file后缀,Java获取文件后缀的方法
  16. 2014腾讯校园招聘实习笔试题
  17. 调试 GPS 1.575G干扰无法搜星问题
  18. 有限差分法、一阶向前差分、一阶向后差分
  19. Git 常用命令练习
  20. 公司内部邮箱如何注册呢?外贸企业邮箱价格多少钱?

热门文章

  1. 绿茶系统 Ghost WinXP SP3 笔记本优化版 V2013.03
  2. IOS解压缩和压缩文件
  3. 3DMax 快捷键
  4. JAVA递归函数示例 - 阶乘计算
  5. 【问题解决】SpringBoot工程无法找到父依赖 parent-pom Failure to find com.xxx:parent-pom:pom:1.0.0.RELEASE
  6. VBA inputbox() 函数返回值,是否可以带多参数等
  7. python3.6安装环境_基于沙盒环境,安装python3.6
  8. 计算机组成原理环境配置,计算机组成原理课程设计
  9. 构造函数详解_const的部分分析,部分转载于http://ticktick.blog.51cto.com/823160/194307
  10. Linux下对grub引导文件丢失进行恢复