广告
返回顶部
首页 > 资讯 > 数据库 >Mysql数据库备份与恢复
  • 860
分享到

Mysql数据库备份与恢复

2024-04-02 19:04:59 860人浏览 安东尼
摘要

1 数据备份与恢复2 使用第三方软件进行备份1 数据备份与恢复1.1 数据备份方式物理备份:直接拷贝库或者表对应的文件。cp,tar, ...具有局限性,前提是表的存储引擎为myisam,跨平台性

1 数据备份与恢复

2 使用第三方软件进行备份



1 数据备份与恢复

1.1 数据备份方式

物理备份:直接拷贝库或者表对应的文件。cp,tar, ...

具有局限性,前提是表的存储引擎为myisam,跨平台性差,数据备份恢复浪费时间。

逻辑备份:执行备份时,根据已有的数据,生成对应的sql命令,把sql保存到指定的文件里。恢复时执行备份文件里的sql命令。

1.2 数据备份策略

完全备份:备份所有数据。

增量备份:备份自上一次备份之后有变化的数据

差异备份:备份自完全备份之后有变化的数据

完全备份+增量备份

完全备份+差异备份

1.3 完全备份

备份命令:

[root@ser51 ~]#Mysqldump -hlocalhost -uroot -p密码 源库名 >文件名

源库名的表示:

--all-databases  所有库

库名             指定单个库

库名 表名        指定库的表(注意库名和表名之间是空格)

-B 数据库1 数据库2  备份多个库

恢复命令:

两种方式:

(1)[root@ser51 ~]#mysql 连接库操作  目标库名 <文件名.sql

(2)mysql>source 备份文件路径;

1.4 增量备份

(1)启用binlog日志 实现实时增量备份

binlog日志介绍:二进制日志,是mysql数据库服务日志文件中的一种,记录执行的除查询之外的sql命令。默认没有启用。

vim  /etc/my.cnf

[mysqld]

server_id=数值  #数值范围1-255

log_bin          #启用默认存放路径/var/lib/mysql/

binlog_fORMat="mixed"

重启服务之后生成的文件为:

/var/lib/mysql/主机名-bin.000001  

#超过500M生成新的(000001-999999)

/var/lib/mysql/localhost-bin.index    #索引文件

#systemctl   restart  mysqld       #重启服务

(2)查看日志当前记录格式

mysql > show variables like "binlog_format";

三种记录格式:

statement:每一条修改数据的sql命令都会记录在binlog日志中;

row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。;

mixed:是以上两种格式的混合使用。

(3)查看binlog日志文件内容

#mysqlbinlog  /var/lib/mysql/localhost-bin.000001

# mysqlbinlog localhost-bin.000001  | grep -i insert

(4)自定义binlog日志文件存储的目录和文件名

# mkdir /logdir

# chown  mysql  /logdir;  setenforce  0

#vim /etc/my.cnf

server_id=数值  #数值范围1-255

log_bin=/logdir/mysql   

#自定义存放路径(mysql相当于主机名,必须写,无需mkdir)

binlog_format="mixed"

#systemctl  restart  mysqld

#ls  /logdir/

(5)分析binlog日志

binlog日志文件记录sql命令的方式?

时间点

--start-datetime="yyyy-mm-dd  hh:mm:ss"

--stop-datetime="yyyy-mm-dd  hh:mm:ss"

pos点(偏移量)

--start-position=数字     

--stop-position=数字

[root@ser51 logdir]# mysqlbinlog

--start-position=336 --stop-position=1494  mysql.000001

(6)执行binlog日志里的sql命令恢复数据

#mysqlbinlog  [选项]  日志文件名  |  mysql  -uroot  -p123qqq

#mysqlbinlog --start-position=300 --stop-position=1006   /var/lib/mysql/localhost-bin.000001  | mysql  -uroot  -p123456

(7)手动生成新的binlog日志

第1种:mysql> flush  logs;     #刷新一次生成一次

第2种:mysql -uroot -p123qqq -e "flush logs"

#-e就是以mysql登录方式执行sql命令

第3种:# systemctl  restart mysqld

第4种:#mysqldump -uroot -p123qqq --flush-logs  teadb t7  > /databak/t7.sql  #备份的时候重新生成

(8)删除已有的binlog日志文件

第1种:mysql> reset  master;   #重置所有

第2种:mysql> purge  master  logs  to  "binlog文件名";

#删除指定binlog之前的日志

第3种:#rm  -rf   binlog日志文件

 

2 使用第三方软件进行备份

2.1 安装Percona

一款强大的在线热备份工具,备份过程中不库表,适合生产环境。

主要含两个组件:

xtrabackup:

innobackupex:

[root@ser51 ~]# yum -y install perl-Digest-MD5 perl-DBD-MySQL

#环境不一样安装的依赖包不一样

[root@ser51 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

[root@ser51 ~]# rpm -ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

2.2 innobackupex完全备份

(1) 基本选项:

--host  --user  --port   --passWord  --databases=  

--no-timestamp #不用日期命名备份文件存储的子目录名

--redo-only #日志回滚合并,最后一次增量备份日志回滚不需要此项

--apply-log #准备还原(回滚日志)

--copy-back #恢复数据

--incremental 目录名 #增量备份存放的路径

--incremental--basedir=目录名  

#增量备份时,指定上一次备份数据存储的目录名

--incremental--dir=目录名 #恢复数据时,指定增量备份数据存储的目录名

--export #导出表信息

import  #导入表空间

恢复数据的时候要求数据库目录必须是空的(/var/lib/mysql)

(2) 使用innobackupex做完全备份和完全恢复

案例:完全备份到/allback中

[root@ser51 ~]#innobackupex --user root  --password 123456 --databases="mysql performance_schema sys db66" /allback

#databases:要备份的数据库名  /allback创建的时候自动生成,无需创建

[root@ser51 ~]#ls /allback/2018-01-22_21-19-33/

#查看生成的备份文件

[root@ser51 ~]#innobackupex --user root  --password 123456 --databases="mysql performance_schema sys db66" --apply-log  /allback/2018-01-22_21-19-33     

#同步日志

[root@ser51 ~]#rm -rf /var/lib/mysql/  #恢复时要求清空

[root@ser51 ~]#mkdir /var/lib/mysql  #创建新的

[root@ser51 ~]#innobackupex --user root  --password 123456 --databases="mysql performance_schema sys db66" --copy-back  /allback/2018-01-22_21-19-33   

#恢复数据

[root@ser51 ~]#ls -ld /var/lib/mysql  #查看目录的属性

[root@ser51 ~]#chown -R mysql:mysql /var/lib/mysql

#更改为所有者,属组为mysql

[root@ser51 ~]#systemctl restart mysqld   #重启服务

[root@ser51 ~]#mysql -uroot -p123456     #进入查看是否恢复成功

 

如果服务没有成功?

mv /etc/my.cnf  /etc/my.cnf.back

mysql_install_db --user=mysql --datadir=/var/lib/mysql

2.3 innobackupex增量备份

(1) 条件

必须有一次完全备份,本例以备份到/onedir为例

第一次增量备份到/new1dir中

第二次增量备份到/new2dir中

(2)增量备份

第一步:完全备份

[root@ser51 ~]#innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66" /onedir  --no-timestamp

第二步:改变db66数据库表中的数据

进行第一次的增量备份到/new1dir

[root@ser51 ~]#innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66" --incremental  /new1dir  --incremental-basedir=/onedir --no-timestamp

#增量备份时,指定上一次备份数据存储的目录名

第三步:再次改变db66数据库表中的数据

进行第二次的增量备份到/new2dir

[root@ser51 ~]#innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66" --incremental  /new2dir  --incremental-basedir=/new1dir --no-timestamp

第四步:数据恢复

[root@ser51 ~]# innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66"

--apply-log  --redo-only  /onedir   #恢复完全备份日志

[root@ser51 ~]# innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66"

--apply-log  --redo-only  /onedir/  --incremental-dir=/new1dir

#恢复增量日志

[root@ser51 ~]# innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66"

--apply-log  --redo-only  /onedir/  --incremental-dir=/new2dir

#恢复增量日志

[root@ser51 ~]# innobackupex --user root --password 123456 --databases="mysql performance_schema sys db66" --copy-back /onedir  #恢复文件

[root@ser51 ~]# chown -R mysql:mysql /var/lib/mysql/

[root@ser51 ~]# systemctl restart mysqld

登录数据库查看数据是否恢复

2.4 增量备份原理:

在/var/lib/mysql/下存在事务日志ib_logfile0 和ib_logfile1  ibdata1

备份之后同步日志会在新的备份的文件内存在以下两个文件:

xtrabackup_checkpoints #存在lsn:日志序列号

xtrabackup_logfile  #日志文件

每一次的增量恢复日志时,会和完全备份的日志进行合并,并且日志序列号会发生变化,这个变化记录了合并的序列号位置,同时会把增量备份的数据合并到完全备份中。

[root@ser51 ~]# cat /onedir/xtrabackup_checkpoints

[root@ser51 ~]# cat /new1dir/xtrabackup_checkpoints

[root@ser51 ~]# cat /new2dir/xtrabackup_checkpoints

2.5恢复完全备份数据中的某张表

(1)删除表空间命令

mysql> alter  table 库.表  discard  tablespace;

(2)前提完全备份的数据库:

#innobackupex --user root --password 123456  --databases="db66"   /db66bak   --no-timestamp

#ls /db66bak

(3)mysql> use db66;

mysql> drop  table  a;  #删除表a,对表a操作恢复的过程

mysql> create  table a(id int); # 建空表,表字段信息必须和原来一致

#ls /var/lib/mysql/db66/

a.frm  a.ibd

(4)导出表信息

#innobackupex --user root --password 123456

--databases="db66" --apply-log --export /db66bak  

#ls /db66bak/db66/ #查看发生了什么变化

(5)删除表空间

mysql> alter  table db66.a  discard  tablespace;  

#ls /var/lib/mysql/db66/

(6)把备份目录下导出的表信息文件拷贝到数据库目录下

# cp /db66bak/db66/a.{cfg,exp,ibd}  /var/lib/mysql/db66/

(7)修改文件所有者

# chown  mysql /var/lib/mysql/db66/a.*

(8)导入表空间

mysql> alter  table  db66.a  import  tablespace;

mysql> select  * from  a;

mysql> select  * from  b;


您可能感兴趣的文档:

--结束END--

本文标题: Mysql数据库备份与恢复

本文链接: https://www.lsjlt.com/news/40160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql数据库备份与恢复
    1 数据备份与恢复2 使用第三方软件进行备份1 数据备份与恢复1.1 数据备份方式物理备份:直接拷贝库或者表对应的文件。cp,tar, ...具有局限性,前提是表的存储引擎为myisam,跨平台性...
    99+
    2022-10-18
  • MySQL数据库的备份与恢复
    一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 二、数据库备份...
    99+
    2023-10-27
    数据库
  • MySQL数据备份与恢复
        一、简介    数据在当今的互联网行业中非常重要,掌握了数据能够从中发现价值,所以数据对于公司来书再重要不过了,当我们...
    99+
    2022-10-18
  • mysql数据库备份与恢复脚本
    #!/bin/bash#mysql database backup and restore the script# define config variablehost=localhostuser=root...
    99+
    2022-10-18
  • MySQL数据库如何备份与恢复
    这篇“MySQL数据库如何备份与恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQ...
    99+
    2022-10-19
  • 数据库备份与恢复
    数据库备份与恢复 一、物理备份和逻辑备份二、mysqldump实现逻辑备份2.1 备份一个数据库2.2 备份全部数据库2.3 备份部分数据库2.4 备份部分表2.5 备份单表的部分数据2.6 排除某些表的备份2.7 只备份结构或只备...
    99+
    2023-08-18
    数据库 mysql sql
  • 《MySQL数据库》MySQL备份恢复
    前言 MySQL数据库最重要的部分就是数据,所以保证数据不被损坏尤为重要,大家都知道911事件,当时非常多的数据丢失,导致经济混乱。接下来我们就来讲讲MySQL是如何保障数据完整,应对特殊情况,如何恢复等。 备份 备份检查:保证备份没有问题...
    99+
    2016-12-27
    《MySQL数据库》MySQL备份恢复 数据库入门 数据库基础教程 数据库 mysql
  • MySQL数据库的灾难备份与恢复
         http://xiaorenwutest.blog.51cto.com         &nbs...
    99+
    2022-10-18
  • Mysql数据库的备份与恢复方法
    这篇文章主要介绍“Mysql数据库的备份与恢复方法”,在日常操作中,相信很多人在Mysql数据库的备份与恢复方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql数据库...
    99+
    2022-10-18
  • MySQL数据备份与恢复(二) -
     上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容。 1.  xtrabackup 工具的安装  1.1  安装依赖包 yum install...
    99+
    2018-12-27
    MySQL数据备份与恢复(二) -
  • Redis数据库备份与恢复
    Redis所有数据都是保存在内存中。下面讲述三种备份方式:1.定期地通过异步方式保存到磁盘上,该方式称为半持久化模式。1)半持久化RDB模式也是Redis备份默认方式,是通过快照完成的,当满足redis.c...
    99+
    2022-10-18
  • Sqlite—数据库备份与恢复
    数据库备份 例如:备份 /www/wwwroot 下面的 task.db 数据库 进入数据库 [root@localhost ~]# sqlite3 /www/wwwroot/task.db 备份数据库 sqlite> .output...
    99+
    2016-10-11
    Sqlite—数据库备份与恢复
  • MySQL数据库备份和恢复
    目录 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 备份注意要点 还原要点 备份类型: 备...
    99+
    2015-03-06
    MySQL数据库备份和恢复
  • xtrabackup备份恢复MySQL数据库
    1. 全量备份恢复: 查看原表内容: MariaDB [(none)]> select * from testdb.students; +----+------------+------...
    99+
    2022-10-18
  • MySQL数据库全量、增量备份与恢复
    造成数据丢失的原因 程序错误 人为商店 计算机失败 磁盘失败 灾难(如火山、地震)和偷窃 数据库备份的分类 从物理与逻辑的角度,备份可分为: 物理备份:对数据库操作系统的物理文件(如数据文件、日志文...
    99+
    2015-05-05
    MySQL数据库全量 增量备份与恢复
  • Linux运维 | mysql数据库的备份与恢复
    特点 备份的数据全面而且最为完整 数据量大的时候备份时间长 备份数据会存在大量重复信息 增量备份 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一...
    99+
    2021-02-10
    Linux运维 | mysql数据库的备份与恢复
  • innobackupex实现MySQL数据库的备份与恢复
        Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个...
    99+
    2022-10-18
  • 一文学会Mysql数据库备份与恢复
    目录数据库备份的分类从数据库的备份策略角度,备份可分为常见的备份方法Mysql完全备份完全备份分类冷备份方法实现恢复数据库mysqldump备份与恢复Mysql完全恢复Mysql 日...
    99+
    2022-11-13
  • PHP与Memcached数据库备份与恢复
    随着互联网的快速发展,大规模MySQL数据库备份和恢复成为各大企业和网站必备的技能之一。而随着Memcached的广泛应用,如何备份和恢复Memcached也成为了一个重要的问题。PHP作为Web开发的主力语言之一,在处理备份和恢复MySQ...
    99+
    2023-05-15
    PHP memcached 数据库备份
  • PHP与MongoDB数据库备份与恢复
    随着大数据时代的到来,数据备份和恢复变得越来越重要。在这个过程中,很多网站都会使用PHP和MongoDB数据库来备份数据。本文将介绍如何使用PHP编写MongoDB数据库备份和恢复脚本。一、MongoDB数据库备份MongoDB数据库备份分...
    99+
    2023-05-15
    PHP MongoDB 备份与恢复
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作