MySQL中怎么实现备份与恢复
创始人
2024-12-21 16:42:51
0次

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.+------------------+----------+--------------+------------------+
    我们先恢复完整数据,再恢复完整备份后到删除之前的数据,对应二进制日志就是完整备份后的二进制日志位置到删除表之前的位置

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...