Linux下MySQL的备份和恢复

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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<source /path/*.sql
    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
  1. 备份整个数据库 
    这里写图片描述
    这里写图片描述

  2. 还原刚才备份的数据库 
    这里写图片描述
    这里写图片描述

使用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

测试完整备份数据库 
这里写图片描述
这里写图片描述
这里写图片描述

测试恢复

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

这里写图片描述

创建新文件讲原有数据库全部移到目录下 
这里写图片描述
恢复 
这里写图片描述
这里写图片描述

增量备份

格式:    #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.第一次完整备份 
这里写图片描述

操作数据库增加数据 
这里写图片描述

第一次增量备份 
这里写图片描述
这里写图片描述

准备完全备份 
这里写图片描述

准备第一次增量备份文件 
这里写图片描述

恢复 
这里写图片描述

结果 
这里写图片描述
这里写图片描述

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如需转载请自行联系原作者

 
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Shell Linux 编译器
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
35 0
|
1月前
|
存储 算法 Shell
【Shell 命令集合 备份压缩 】⭐⭐Linux 压缩和归档工具 zip命令 使用指南
【Shell 命令集合 备份压缩 】⭐⭐Linux 压缩和归档工具 zip命令 使用指南
36 0
|
17天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
22 0
|
1天前
|
关系型数据库 MySQL Java
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
12 2
|
9天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
10天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
22 0
|
17天前
|
SQL 存储 关系型数据库
mysql数据库备份与恢复
mysql数据库备份与恢复
|
1月前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 将二进制文件转换为ASCII码 uuencode命令 使用指南
【Shell 命令集合 备份压缩 】Linux 将二进制文件转换为ASCII码 uuencode命令 使用指南
34 0
|
9月前
|
Linux 测试技术 CDN
Linux系统-【备份压缩】zip命令 – 压缩文件
zip命令的功能是用于压缩文件,解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包,里面会附含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。
143 0