千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  如何进行mysql数据备份?

如何进行mysql数据备份?

来源:千锋教育
发布人:lxl
时间: 2023-05-30 10:57:59

mysql数据备份

  1.为什么要备份

  ● 备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。

  ● 冗余: 数据有多份冗余,但不等备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。

  2.Mysql数据备份需要重视的内容

  备份内容 databases Binlog my.conf

  所有备份数据都应放在非数据库本地,而且建议有多份副本。

  测试环境中做日常恢复演练,恢复较备份更为重要。

  数据的一致性

  服务的可用性

  2.1 mysql备份类型

  1.物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。

  ####1、热备(hot backup)

  在线备份,数据库处于运行状态,这种备份方法依赖于数据库的日志文件

  对应用基本无影响(但是性能还是会有下降,所以尽量不要在主上做备份,在从库上做)

  ####2、冷备(cold backup)

  备份数据文件,需要停机,是在关闭数据库的时候进行的

  备份 datadir 目录下的所有文件

  ####3、温备(warm backup)

  针对myisam的备份(myisam不支持热备),备份时候实例只读不可写,数据库锁定表格(不可写入但可读)的状态下进行的

  对应用影响很大

  通常加一个读锁

  2.逻辑备份:

  备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。

  3.物理和逻辑备份的区别

图片1

  2.2 MySQL 备份工具

  1、ibbackup

  官方备份工具

  收费

  物理备份

  2、xtrabackup

  开源社区备份工具

  开源免费,上面的免费版本(老版本有问题,备份出来的数据可能有问题)

  物理备份

  3、mysqldump

  官方自带备份工具 开源免费

  逻辑备份(速度慢)

  4、mysqlbackup

  mysql 官方备份工具

  innodb 引擎的表mysqlbackup可以进行热备

  非innodb表mysqlbackup就只能温备

  物理备份,备份还原速度快

  适合大规模数据使用

  2.3 物理备份的方式

  1.完全备份-----完整备份:

  每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。

  优点:备份与恢复操作简单方便,恢复时一次恢复到位,恢复速度快

  缺点:占用空间大,备份速度慢

  2.增量备份: 每次备份上一次备份到现在产生的新数据

  只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化.

  特点:因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起按备份时间顺序,逐个备份版本进行恢复,恢复时间长,如中间某次的备份数据损坏,将导致数据的丢失。

  3.差异备份:只备份跟完整备份不一样的

  备份那些自从第一次次完全备份之后被修改过的所有文件,备份的时间起点是从第一次次完整备份起,且以后每次备份都是和第一次完整备份进行比较(注意是第一次,不是上一次),备份自第一次完整备份以来所有的修改过的文件。备份数据量会越来越大。

  特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。

  简单的讲,完整备份就是不管三七二十一,每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;增量备份就是每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;差异备份就是每次都将第一次完整备份以来有变化的文件进行备份。

  2.4 percona-xtrabackup 物理备份

  Xtrabackup是开源免费的支持MySQL 数据库热备份的软件,在 Xtrabackup 包中主要有 Xtrabackup 和 innobackupex 两个工具。其中 Xtrabackup 只能备份 InnoDB 和 XtraDB 两种引擎; innobackupex则是封装了Xtrabackup,同时增加了备份MyISAM引擎的功能。它不暂停服务创建Innodb热备份;

  1.安装Xtrabackup

  安装xtrabackup

  wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

  [root@mysql-server yum.repos.d]# yum -y install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

  注意:

  如果安装不上报错:

  Transaction check error:

  file /etc/my.cnf from install of Percona-Server-shared-56-5.6.46-rel86.2.1.el7.x86_64 conflicts with file from package mysql-community-server-5.7.28-1.el7.x86_64

  Error Summary #说是冲突

  解决方式如下:

  1.先安装yum install mysql-community-libs-compat -y #安装包

  2.在安装yum -y install percona-xtrabackup-24.x86_64

  方式二:

  1.先安装percona-xtrabackup

  2.在安装mysql

  或者先将mysql源back了,重新建立yum缓存。在安装percona-xtrabackup。

  2.完全备份流程:

  创建备份目录:

  [root@mysql-server ~]# mkdir /xtrabackup/full -p

  备份:

  [root@mysql-server ~]# innobackupex --user=root --password='QianFeng@123' /xtrabackup/full

  可以查看一下:

  [root@mysql-server ~]# cd /xtrabackup/full/

  [root@mysql-server full]# ls

  2019-08-20_11-47-49

  完全备份恢复流程

  停止数据库

  清理环境

  重演回滚--> 恢复数据

  修改权限

  启动数据库

  1.关闭数据库:

  [root@mysql-server ~]# systemctl stop mysqld

  [root@mysql-server ~]# rm -rf /var/lib/mysql/*

  [root@mysql-server ~]# rm -rf /var/log/mysqld.log

  [root@mysql-server ~]# rm -rf /var/log/mysql-slow/slow.log

  2.重演恢复:

  [root@mysql-server ~]# innobackupex --apply-log /xtrabackup/full/2019-08-20_11-47-49

  3.确认数据库目录:

  恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里

  通过应用同一目录下的事务日志文件xtrabackup_logfile,在BACKUP-DIR目录准备一个备份。页建立一个新的事务日志文件。innoDB的配置是从innobackupex备份时建立的文件backup-my.cnf读取。

  cat /etc/my.cnf

  [mysqld]

  datadir=/var/lib/mysql

  4.恢复数据:

  [root@mysql-server ~]# innobackupex --copy-back /xtrabackup/full/2019-08-20_11-47-49

  5.修改权限:

  [root@mysql-server ~]# chown mysql.mysql /var/lib/mysql -R

  启动数据库:

  [root@mysql-server ~]# systemctl start mysqld

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

如何进行mysql数据备份?

2023-05-30

从零开始学Java之Java中的内部类是怎么回事?

2023-05-29

什么是事件流以及事件流的传播机制 ?

2023-05-29

最新文章NEW

什么是servlet的生命周期?servlet请求处理流程是怎样的?

2023-05-30

在java中,super关键字怎样使用

2023-05-29

什么是JavaScript伪数组?

2023-05-25

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>