mysql物理备份与逻辑备份详解
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物理备份与逻辑备份详解相关推荐
- 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL
mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...
- MySQL 的物理备份、逻辑备份、增量备份
物理备份 , 冷备 cp .tar 首先需要两台PC: mysql 121.40.25.207 mysql02 47.9 ...
- 04-mysql数据备份之mysqldump命令详解
MYSQL数据备份之mysqldump命令详解 一.mysqldump 简介 mysqldump 是 MySQL 自带的逻辑备份工具. 它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数 ...
- 物理服务器备份系统,物理备份和逻辑备份区别
物理备份和逻辑备份区别 内容精选 换一换 可能这份面试题还不足以包含所有Java问题,但有了它,我相信你一定不会"败"的很惨,有了它,足以应对目前市面上绝大部分的Java面试了,因 ...
- mysql8.0导入备份_mysql8.0.20配合binlog2sql的配置和简单备份恢复的步骤详解
第一步 安装 1.安装MySQL 2.安装Python3 [root@localhost /]#yum install python3 3.下载binlog2sql文件到本地(文件在百度云盘) [ro ...
- oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别
oracle数据库物理备份和逻辑备份区别 ORACLE中数据备份分为物理备份和逻辑备份两种.物理备份就是转储ORACLE物理文件(如数据文件.控制文件.归档日志文件等),一旦数据库发生故障,可以利用这 ...
- 【华为云计算产品系列】eBackup云备份原理及实战详解
[华为云计算产品系列]eBackup云备份原理及实战详解 1. 基础概念 2. eBackup的组网方式 2.1. LAN-Base 2.2. LAN-Free 2.3. Server-Free 3. ...
- mysql启动参数(/etc/my.cnf)详解汇总
mysql启动参数(/etc/my.cnf)详解汇总 MYSQL–my.cnf配置中文详解 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = ...
- mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解
本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...
最新文章
- 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用 1
- 2021-10-7 !二叉树的前序、中序、后序遍历 (递归版本)
- SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0
- python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅
- 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈
- 数据中台的使命、愿景、本质和六大核心能力
- 面试题之请描述一下Java类加载过程
- RGB888和RGB565颜色对照表
- [词汇] 十四、动词
- 【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系
- CTF-实验吧-图片里的动漫
- lua 5.3.5 TValue::tt_和GCObject::tt之间的爱恨纠葛
- 企业微信员工离职如何转移客户?
- 大小写字母转换c语言用getchar,用getchar改写大小写.doc
- java 获取file后缀,Java获取文件后缀的方法
- 2014腾讯校园招聘实习笔试题
- 调试 GPS 1.575G干扰无法搜星问题
- 有限差分法、一阶向前差分、一阶向后差分
- Git 常用命令练习
- 公司内部邮箱如何注册呢?外贸企业邮箱价格多少钱?
热门文章
- 绿茶系统 Ghost WinXP SP3 笔记本优化版 V2013.03
- IOS解压缩和压缩文件
- 3DMax 快捷键
- JAVA递归函数示例 - 阶乘计算
- 【问题解决】SpringBoot工程无法找到父依赖 parent-pom Failure to find com.xxx:parent-pom:pom:1.0.0.RELEASE
- VBA inputbox() 函数返回值,是否可以带多参数等
- python3.6安装环境_基于沙盒环境,安装python3.6
- 计算机组成原理环境配置,计算机组成原理课程设计
- 构造函数详解_const的部分分析,部分转载于http://ticktick.blog.51cto.com/823160/194307
- Linux下对grub引导文件丢失进行恢复