总结:MySQL备份与恢复的三种方法

发表于:2012-12-07 09:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:老广    来源:51Testing软件测试网采编

#
MySQL
分享:

  1、利用mysqldump实现从逻辑角度完全备份mysql,配合二进制日志备份实现增量备份

  2、利用lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份

  3、利用percona公司的xrabackup实现完全热备份与增量热备份

  实验环境:RHEL5.8,SElinux关闭,MySQL是tar包初始化安装版本5.5.28

  一、测试环境准备

  1.1 mysql的安装就不说了,见http://laoguang.blog.51cto.com/6013350/1039208

  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. --all-databases 备份所有库 
  4. --lock-all-tables 为所有表加读锁 
  5. --routines 存储过程与函数 
  6. --triggers 触发器 
  7. --master-data=2 在备份文件中记录当前二进制日志的位置,并且为注释的,1是不注释掉在主从复制中才有意义 
  8. --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  ##启动时会重新生成新的二进制日志的

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号