day07_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 innodb /备份文件存放目录  【innodb是所有Innodb表公用的库,无法单独备份,只能全备份】
cp -rf ib_logfile1 dataib_logfile0 /备份文件存放目录 【事务日志保证undo和redo,Mysql启动时会检查,如果找不到,mysql认为非法的】



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





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

(一) 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
rpm -ivh cmake-2.6.4-7.el5.i386.rpm

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 root -p password -d /tmp/sqlbak  -B databasename
   
    恢复操作
    myloader -u root -p mysql -d /tmp/sqlbak  -B bak
    mysql -u root -pmysql
    mysql> use bak;
    mysql> show tables;
    mysql> select * from a1;




原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/8cce8063a4eab526e75e667d81c15191.html