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;