mysql备份详解

【备份】
1、冷备份【好处是:稳定,坏处是:得停库影响收入】
2、热备份

一、冷备份

备份全部数据
    service mysql stop

    cp -frp /app/mysql/data/* /备份文件存放目录 【全部备份,直接把数据目录备份走,cat /etc/my.cnf |grep datadir 存放数据的目录】

部分备份
    (1)
        cp myisam引擎类型(拷贝走此目录就可以,myisam引擎的表不会写表空间,不会写事务日志)
    (2)
      cd /app/mysql/data/
        cp -fr ibdata1 /备份文件存放目录  【ibdata1是所有Innodb表公用的系统表空间,无法单独备份,只能全备份】
        cp -fr 库目录 /备份文件存放目录  
        cp -rf ib_logfile1 ib_logfile0 /备份文件存放目录 【事务日志保证undo和redo,Mysql启动时会检查,如果找不到,mysql认为非法的】

数据还原
(1)把数据拷贝回原目录
(2)chown -R mysql.mysql /app/mysql/data/  【千万注意】

二、热备份(服务开启时备份)

(一) mysql自带的

【备份操作,备份的是sql语句】
  create database bak;
  use bak;
  create table a1(a int);
  insert into a1 values(1);
 
  service mysql status【热备份要求,mysql服务必须开启】
 
  mysqldump -u 用户 -p密码 库名  > backup文件
 
  mysqldump -u root -pmysql bak 【直接打印到屏幕】
 
  mysqldump -u root -pmysql bak >/tmp/bak.sql 【输出定位到/tmp/bak.sql文件中】
 
  drop database bak;
 
【恢复操作】
  create database bak;【咱们备份的文件中,没有创建库的语句,所以要手工创建】    
 
 mysql -u root -pmysql bak < /tmp/bak.sql

mysql> use bak;
mysql> show tables;
mysql> select * from a1;

(二) 第三方工具【可以多线程,默认4个线程,比自带的备份工具要快】

在tmp目录下安装mydumper

export PATH=/usr/local/cmake/bin:$PATH

1、解决依赖包
yum install gcc gcc-c++ glib2-devel mysql-devel zlib-devel pcre-devel -y


2、安装

cd /tmp
tar fvxz mydumper-0.2.3.tar.gz
cd mydumper-0.2.3
cmake .
make&&make install

3、操作


语法:mydumper -B 数据库 -u 用户名 -p 密码 -h 主机IP -o 备份文件存放的目录  -t 线程数【看cpu配置】 -r  分割的份数【表比较大,把表分割了】

   备份操作
   mkdir -pv /tmp/sqlbak   -------把备份的数据放在此目录
   mydumper -B bak -u root -p mysql  -o /tmp/sqlbak
   mysql -u root -pmysql
   mysql> use bak;
   mysql> drop table a1;


语法:myloader -u 用户名 -p 密码 -d 备份目录  -B 库名
   
    恢复操作
    myloader -u root -p mysql -d /tmp/sqlbak  -B bak
    mysql -u root -pmysql
    mysql> use bak;
    mysql> show tables;
    mysql> select * from a1;

猜你喜欢

转载自blog.csdn.net/zcb_data/article/details/80535186