文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中怎么实现备份与恢复

2024-04-02 19:55

关注

这篇文章给大家介绍MySQL中怎么实现备份与恢复,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1、利用mysqldump实现从逻辑角度完全备份mysql,配合二进制日志备份实现增量备份
    2、利用lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份
    3、利用percona公司的xrabackup实现完全热备份与增量热备份
    实验环境:RHEL5.8,SElinux关闭,MySQL是tar包初始化安装版本5.5.28
    一、测试环境准备
    1.1 mysql的安装就不说了,
    1.2 编缉/etc/my.cnf把二进制日志存放目录改到其它非数据目录,innodb每表一文件
    建立一目录用于存放二进制日志
    1.mkdir /mybinlog
    2.chown mysql:mysql /mybinlog
    修改my.cnf
    1.vim /etc/my.cnf
    2.log-bin=/mybinlog/mysql-bin    ##二进制日志目录及文件名前缀
    3.innodb_file_per_table = 1      ##启用InnoDB表每表一文件,默认所有库使用一个表空间
    启动mysqld
    service mysqld start
    1.3 创建一个测试库与测试表
    1.mysql> create database laoguang;
    2.mysql> use laoguang;
    3.mysql> create table linux  (id tinyint auto_increment primary key,name char(10));
    4.mysql> insert into linux (name) values ('apache'),('nginx'),('php');
    1.4 创建用于存放备份的目录
    1.mkdir /myback
    2.chown -R mysql:mysql /myback
    二、用mysqldump实现备份
    2.1 mysqldump用来温备,所以我们得为所有库加读锁,并且滚动一下二进制日志,并记录当前二进制文件位置
    1.mysqldump --all-databases --lock-all-tables  --routines --triggers --master-data=2 \
    2.--flush-logs > /myback/2012-12-3.19-23.full.sql
    3.
    4.--all-databases 备份所有库
    5.--lock-all-tables 为所有表加读锁
    6.--routines 存储过程与函数
    7.--triggers 触发器
    8.--master-data=2 在备份文件中记录当前二进制日志的位置,并且为注释的,1是不注释掉在主从复制中才有意义
    9.--flush-logs 日志滚动一次
    查看有没有备份成功,有没有启用新二进制的日志,查看备份的文件中有没有记录完整备份后二进制的位置
    备份二进制日志
    cp /mybinlog/mysql-bin.000001 /myback/2012-12-3.19-23.full.00001
    2.2 模拟数据库意外损坏,测试完整恢复
    1.rm -rf /data/mydata/*
    2.rm -rf
    3./mybinlog/*
    初始化mysql并启动mysql
    1.cd /usr/local/mysql
    2../scripts/mysql_install_db --user=mysql --datadir=/data/mydata
    3.rm -rf /mybinlog/* ##因为我们不是全新初始化的,可能会有报错的二进制日志,我们不需要
    4.service mysqld start  ##启动时会重新生成新的二进制日志的
    恢复到备份状态,备份前先关闭对恢复过程的二进制日志记录,因为记录恢复语句是毫无意义的
    1.mysql> set global sql_log_bin=0;
    2.mysql < /myback/2012-12-3.19-23.full.sql ##如果有账号密码记的-u -h哦
    3.打开记录并查看恢复状况
    4.mysql> set global sql_log_bin=1;
    5.mysql> show databases;
    打开二进制记录并查看恢复状况
    1.mysql> set global sql_log_bin=1;
    2.mysql> show databases;
    2.3 模拟一种场景,我往linux表中新添加了数据,然后不小心将这个表删了,我们要恢复到删除之前的状态,并且新加的数据还存在.
    2.3.1 新增数据
    1.mysql> use laoguang;
    2.mysql> insert into linux  (name) values ('haddop'), ('mysql');
    3.mysql> drop table linux;
    4.mysql> show master status;   ##查看当前所在二进制日志中的位置
    5.+------------------+----------+--------------+------------------+
    6.| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    7.+------------------+----------+--------------+------------------+
    8.| mysql-bin.000001 |     9005 |              |                  |
    9.+------------------+----------+--------------+------------------+
    我们先恢复完整数据,再恢复完整备份后到删除之前的数据,对应二进制日志就是完整备份后的二进制日志位置到删除表之前的位置

关于MySQL中怎么实现备份与恢复就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯