热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下的mysql备份恢复_Linux下MySQL的备份和恢复

MySQL备份的原因1.灾难恢复2.审计3.测试1234512345mysql的备份类型1.根据服务器的在线状态:热备:服务器处于运行状态冷备ÿ

MySQL备份的原因

1. 灾难恢复

2. 审计

3. 测试1234512345

mysql的备份类型

1. 根据服务器的在线状态:

热备:服务器处于运行状态

冷备:服务器出去停止状态

温备:服务器处于半离线状态,只能读,但是不能写

2. 根据备份的数据集:

完全备份:备份整个数据库

部分备份:备份某个表

3. 根据备份时的接口:

物理备份:直接将数据库文件从磁盘上复制出来

逻辑备份:把数据从数据库中提取出来备份成文本文件

4. 根据数据量进行备份:

完全备份:备份从创建数据库到目前为止的数据

增量备份:备份从上次进行完全备份结束到目前为止的数据

差异备份:1234567891011121314151612345678910111213141516

MySQL备份对象

数据+配置文件+代码(存储过程等)+os相关的配置文件(如crontab配置计划及脚本)11

使用mysqldump工具进行数据备份和恢复

1. mysqldump命令格式

a.备份多个或者一个数据库

mysqldump [option] --database db_name1 db_name2...

b.备份某个数据库中的某张表

mysqldump [option] db_anme table1 tables2 ...

c.备份全部数据库

mysqldump [option] --alldatabases

2. option

-u user:指定以哪个用户的身份进行备份    -p password:指定用户的密码    -h host:指定备份的数据库

--local-all-tables:请求锁住所有备份的表    --local-tables:备份那张表锁住那张表    --single-transaction:能够对InnoDB存储引擎实现热备。(不常用)

--events:备份事件调度器    --routines:备份存储过程和存储函数    --triggers:备份触发器

--flush-log:备份前,请求到锁之后滚动日志

3. 常用备份格式

mysqldump -uroot -p -h --database|db_name|--all-databases db_name|table --local-tables --flush-log

4. 恢复备份

a.关闭当前session的sql_log_bin

b.mysql

c.开启二进制文件日志1234567891011121314151617181920212223242526272829303112345678910111213141516171819202122232425262728293031

mysqldump备份测试

备份数据库wordpress

库中表的列表

mysql> show tables;

+-----------------------+

| Tables_in_wordpress   |

+-----------------------+| wp_commentmeta        || wp_comments           || wp_links              || wp_options            || wp_postmeta           || wp_posts              || wp_term_relationships || wp_term_taxonomy      || wp_termmeta           || wp_terms              || wp_usermeta           || wp_users              |+-----------------------+12 rows in set (0.00 sec)1234567891011121314151617181920212212345678910111213141516171819202122

备份整个数据库

c3c9d8b16c103cc7e7b8247f6256fb22.png

88631130e3a8f1f71f1a27a26955d45e.png

还原刚才备份的数据库

00720b9b38b537e865cff8dc5a2c8ca4.png

9a3967081e96a08c323f138f790d965d.png

使用xtrabackup工具进行备份

1. 下载安装xtrabackup

[root@www ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm

[root@www ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64//libev-4.03-3.el6.x86_64.rpm

[root@www ~]# yum install libev-4.03-3.el6.x86_64.rpm

[root@www ~]# yum install --skip-broken percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm

2. 备份后生成的文件    xtrabackup_checkpoints:记录备份类型,备份状态,lsn(日志序列号)等信息。

xtrabackup——binary:备份中用到的xtrabackup的可执行文件    xtrabackup_binlog_info:当前服务器正在使用的二进制日志文件及备份道这一刻的时间位置    xtrabackup_binlog_pos_innodb:二进制文件的但前position

backup_my.cnf:备份命令用到的配置选项信息。12345678910111213141234567891011121314

1. 完全备份和恢复

格式:>innobackupex --user=  --password= --apply-log /path/to/back_dir/结果:completes ok!1212

测试完整备份数据库

ccc69e2f72028e5bc04bccb9113755a5.png

23cb2de25ccc1ee6d6e911a98b5133dd.png

0e17687db609be5b63f871bc8740342b.png

测试恢复

格式:

>innobackupex --user= --password= --copy-back /path/to/back_dir/1212

daf35b25385db58e2e3896e6fa8de56c.png

创建新文件讲原有数据库全部移到目录下

5d23fb9d10964003603dcc207a86197c.png恢复 

87707fb538c54de488e943ec5ef0bf0b.png

13224cb254def036689c4bd90e2d0126.png

增量备份

格式:    #innobackupex --incremental /path/to/back_dir --incremental-basedir=以那个备份文件伪基础

还原:将增量备份整合道完全备份上去

先准备完全备份:        #innobackupex --apply-log --redo-only   完全备份路仅(base-dir)

在准备第一次增量备份:        #innobackupex --apply-log --redo-only  base-dir --incremental-dir=one_base_dir

在准备第二次增量备份:        #innobackupex --apply-log --redo-only  base-dir --incremental-dir=two_base_dir        ..

..      。

恢复:    >innobackupex --copy-back base-dir12345678910111213141234567891011121314

a.第一次完整备份

1a7f8f43a2138e640a0c24022c5a7451.png

操作数据库增加数据

b04b77ad8a4d6718bcb54d87f77d76be.png

第一次增量备份

749060f15e7e72b7819e13eabf01b0ca.png

f7de1d7a0ebe203c9645f689be671eff.png

准备完全备份

5fcd2e6ecbdb808aabf2c09853dfc5ce.png

准备第一次增量备份文件

11bbffa3da5151f1a25300cc9421286b.png

恢复

a70c8af9647101a939e1e98c1cd57eea.png

结果

f390d065589a0e228da12e928620ffa3.png

f3971c4c8c9be1c7443436b8bb7ae795.png

xtrabackup进行表的导入和导出

在进行表的导出时,需要启用服务器的innodb_file_per_table这个选项。

在进行表的导入时,需有启用服务器的innodb_file_per_table和innodb_expand_import选项

导出表

innobackupex --apply-log --export /path/base_dir

此命令会为每个innodb表空间创建一个.exp结尾的文件,这个文件可以导入其他服务器

导入表:

1,在服务器上创建一个与此结构相同的表。

2,然后删除此表的表空间:        alter table 表 discard tablespace;    3,将.exp文件复制到

本文转自lnsaneLlinux博客51CTO博客,原文链接http://blog.51cto.com/lnsane784/1949513如需转载请自行联系原作者



推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
author-avatar
萌星
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有