MySQL备份和恢复实战

MyISAM数据表备份之mysqlhotcopy

数据表为myisam引擎的备份。可以使用mysqlhotcopy和mysqldump工具进行备份。

1)介绍

这个工具是一个Perl语言写的脚本。使用mysqlhotcopy必须安装perl-DBD-MySQL、perl-DBD。

2)特点

a:文件系统级别的copy,mysqldump则是数据库端的SQL语句集合

b:只能运行在数据库目录所在的机器上,mysqldump则任何机器都可以。

c:mysqldump和mysqlhotcopy都执行lock tables和unlock tables

3)备份

a:mysqlhotcopy-u admin -p ‘jidian123‘  --addtodest  virtual1 virtual 2 > /tmp

--addtodest:指当备份存在时,不中断当前备份,只添加新文件进去

4)还原

a:停止数据库

b:copy  -rp /tmp/virtual    /mydata55/data

c:启动数据库

2mysqldump范例

范例一

参数:-u  –p  库名

  1. 1.          备份

mysqldump -uadmin -p‘jidian123‘ virtual>/opt/virtual.sql

2.查看数据内容

[[email protected] mydata55]# egrep  -v"#|--|^$|\*" /opt/virtual.sql

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int(11)NOT NULL,

`name`varchar(20) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `user` WRITE;

INSERT INTO `user` VALUES (1,‘summer‘),(1,‘于江磊‘);

UNLOCK TABLES;

3.导入数据

Mysql –uadmin –p –S /mydata55/mysql.sock  virtual </opt/virtual.sql

范例二

参数:-u  –p -B  库名

1.备份

mysqldump -uadmin -p‘jidian123‘ -B virtual>/opt/virtual_B.sql

  1. 2.          查看virtual.sql 和virtual_B.sql两个文件的区别,得出-B作用

[[email protected] opt]# diff virtual.sql  virtual_B.sql

18a19,26

> -- Current Database: `virtual`

> --

>

> CREATE DATABASE /*!32312 IF NOT EXISTS*/ `virtual` /*!40100 DEFAULTCHARACTER SET utf8 */;

>

> USE `virtual`;

>

> --

50c58

< -- Dump completed on 2015-08-18 23:07:17

---

> -- Dump completed on 2015-08-18 23:07:27

3.导入数据,注意不要加数据库

Mysql –uadmin –p –S /mydata55/mysql.sock  </opt/virtual_B.sql

范例三

参数:-u  –p -B  库名  gzip

  1. 1.          备份

mysqldump -uadmin -p‘jidian123‘ -B  virtual |gzip >/opt/virtual_B.sql.gz

[[email protected] opt]# ll

total 16

-rw-r--r--. 1 root root 2007Aug 18 23:07 virtual_B.sql

-rw-r--r--. 1 root root  761 Aug 18 23:38virtual_B.sql.gz

-rw-r--r--. 1 root root 3308 Aug 18 23:27virtual_null.sql

-rw-r--r--. 1 root root 1861 Aug 18 23:07 virtual.sql

 

 

小结论:

1.导出数据用-B参数

-B:导出多个库、增加建库语句、增加use 语句

2.压缩数据gzip

2mysqldump多库备份

法一:

mysql -u admin-p‘jidian123‘ -S /mydata55/mysql.sock  -e"show databases" | grep -Eiv "informat|perform|database" |sed -r ‘s#^([a-z].*$)#mysqldump -uadmin -p‘jidian123‘ --events -B  \1|gzip >/opt/bak/\1.sql.gz#g‘|bash

法二:

For循环

金庸新著 $dbname_bak.sql

#!/bin/bash

for dbname in `mysql -u admin -p‘jidian123‘ -S/mydata55/mysql.sock  -e "showdatabases;" | grep -Eiv "informat|perform|datab"`

do

mysqldump -uadmin -p‘jidian123‘ -S/mydata55/mysql.sock  --events -B  $dbname | gzip > ${dbname}_sql.gz

引深:

多表备份:

#!/bin/bash

for tbname in `mysql -u admin -p‘jidian123‘ -S/mydata55/mysql.sock  -e "usemysql;show tables"`

do

mysqldump -uadmin -p‘jidian123‘ -S/mydata55/mysql.sock  mysql  $tbname |gzip >/opt/tb/${tbname}_sql.gz

done

线上多order表备份脚本:(1)

#!/bin/bash

#订单表备份,共24张表。

#

DE=`date +%F`

DT=`date+%F_%T`

Directory="/home/bak/order"

Host=‘192.168.0.140‘

User="virtual"

DB="virtual"

Pass="V#!2707GIcsSingulax201566"

if [  -d $Directory ];then

echo "备份目录存在,不用重复建立!"

else

mkdir $Directory -p

fi

cd$Directory  &&  mkdir $DE

for  tbname in `mysql  -h $Host -u$User  -p$Pass -e "use $DB;show tables;" | egrep  -Ei  "^tb_orders$|*.[0-9]$"`

do

mysqldump -h $Host -u$User  -p$Pass $DB  $tbname |gzip >$Directory/$DE/${DT}_${tbname}.sql.gz

done

线上多other表备份脚本:(2)

#!/bin/bash

#备份所有非订单表,共49张。

DE=`date +%F`

DT=`date+%F_%T`

Directory="/home/bak/other"

Host=‘192.168.0.140‘

User="virtual"

DB="virtual"

Pass="V#!2707GIcsSingulax201566"

if [ ! -d$Directory ];then

mkdir $Directory  -p

fi

cd$Directory  &&  mkdir $DE

for  tbname in `mysql  -h $Host -u$User  -p$Pass -e "use  $DB ;show  tables;" | egrep  -iv ‘^tb_orders_h_[0-9]|^tb_orders$|^Tables_in_virtual$|^orders_view$‘`

do

mysqldump -h $Host -u$User  -p$Pass $DB  $tbname |gzip >$Directory/$DE/${DT}_${tbname}.sql.gz

done

http://edu.51cto.com/course/course_id-808.html

 

 

 

 

3mysqldump多个参数 *****

参数:

-u 

–p 

-A    --all-databases

-B    导出多个数据库,sql文件包含CREATE DATABASE and USE statements

-F    --flush-logs

gzip

-d     只导结构

-t      只导数据

-x     --lock-all-tables

--single-transaction  保证mysqldump进程看到的数据,是落地的。数据完整性

--master-data=1|2    1代表pos点不注释,2代表

    

-E    --events

---triggers

-R    --routines

--default-character-set  导出指定字符集

--flush-privileges       刷新权限

 

生产环境:

提示:

1.-A不用加-B

2.

for MyISAM:

mysqludmp-uadmin -p‘jidian123‘ -A --flush-privileges -x  --master-data=1 \

-F --events  --triggers --routines  >bak.sql

 

for InnoDB:

mysqldump -uroot-p‘jidian123‘ -A --flush-privileges --single-transaction \

--master-data=1  --flush-logs --events --triggers --routines  >bak.sql

 

时间: 2024-07-30 19:46:04

MySQL备份和恢复实战的相关文章

Mysql备份和恢复

Mysql备份和恢复 备份 热备,是指对数据库运行中直接进行备份,对正在运行的数据库没有任何影响: 冷备,是指在数据库停止(关闭)下进行备份,只需拷贝相关的数据物理文件: 温备,是指对数据库运行中直接进行备份,但对当前数据库操作有所影响,很少用. 按备份出来的文件内容分为: 逻辑备份: 裸文件备份. 逻辑备份后文件内容是可读的,通常是文本文件,内容一般是Sql语句或表内的实际数据,如mysqldump或select * into outfile等方法.适用于数据库的升级.迁移,恢复时间较长. 裸

MySQL 备份和恢复(三)Xtrabackup实现热备:完全备份+增量备份

Percona XtraBackup is the world's only open-source, free MySQL hot backup software that performs non-blocking backups for InnoDB and XtraDB databases. With Percona XtraBackup, you can achieve the following benefits: Backups that complete quickly and

MySQL 备份和恢复(一)mysqldump

备份方式:    热备:不中断服务    温备:备份过程中不可写,要加读锁    冷备:需要停掉服务 备份策略一:mysqldump + binlog 完全备份 + 增量,用mysqldump定期全备,每天(根据实际情况来)备份二进制日志. mysqldump类似于一个mysql的客户端,所以用mysqldump备份时,mysql服务要启动起来,常用参数: -u username | --user=username 指定备份的用户 -p password | --password=passwor

MySQL 备份和恢复(二)基于LVM实现几乎热备

LVM(Logical Volume Management逻辑卷管理)实现几乎热备的原理:利用LVM的快照卷达到可以保存数据库在某一时刻的瞬时状态,只需把当时的快照备份出来即可. LVM的快照原理:简单的讲就是lvm对某个卷创建快照卷后,快照卷则作为原卷的另一个访问入口,当原卷的数据发生变化时,则先把原卷的内容先复制一份到快照卷,然后才会继续对原卷数据的修改,这也就是之所以快照卷的容量大小应该大于整个备份过程中数据库的变化量的原因.所以当备份完成以后,快照卷也就可以拆除了,它的作用就是在备份过程

mysql 备份及恢复

数据库备份 增量备份.差异备份区别 增量是每天相对于前一天的备份 差异是相对于完全备份的时间点 1.冷备份 离线,读写操作终止 2.热备份 备份是读写不受影响 3.温备份 仅可以读操作 4.物理备份:备份数据文件.逻辑备份:将数据导出至文本中 5.备份内容:数据库配置文件.数据.二进制日志.事务日志 6.热备份:innoDB:xtrabackup,mysqldump MyISAM:温度备份 mysql=====主从架构,离线备份 物理备份:速度快 逻辑备份:速度慢,丢失浮点数精度 7.备份策略

MySQL备份,恢复方案,mysqlbinlog,mysqldump,主从,主主复制

DBMS数据库管理系统的三层模型:物理层,逻辑层以及视图层. 物理层:决定数据的存储形式. 逻辑层:是一张有一张的表,一行行的数据记录. 视图层:让用户看起来更方便,可有可无. 存储引擎:使逻辑层中sql语句转换成能在磁盘上存储的物理形式,连接逻辑层与物理层. 常用MySQL存储引擎: MyISAM: 最经典的MySQL存储引擎,但如果数据库一旦崩溃,再重启时需要对表进行修复,但MyISAM 存储引擎无法保证安全修复,且其不支持事务的进行.支持表级锁. Innodb: Innodb存储引擎,支持

MySQL系列——MySQL备份和恢复

MYSQL的备份和还原备份 :副本RAID1,RAID10 :保证硬件损坏而不会业务中止:备份和还原 :可以保证因逻辑错误引起的数据丢失备份类型 :热备份 :读写不受影响温备份 :仅可以执行读操作冷备份 :离线备份,读.写操作均中止 物理备份和逻辑备份物理备份 :复制数据文件逻辑备份 :将数据导出至文本文件中 完全备份.增量备份和差异备份备份什么:数据.配置文件.二进制日志.事务日志主从服务器架构 物理备份 :速度快逻辑备份 :速度慢.丢失浮点数精度:方便使用文本处理工具直接对其处理,可移植能力

Mysql 备份、恢复

核心工具: mysqldump 本地备份表结构 mysqldump -uroot -pPassword --no-data --databases database1 database2 database3> filename 本地备份数据库: mysqldump -uroot -pPassword databasename > filename 本地备份所有数据库 mysqldump -uroot -pPassword --all-databases > filename 跨服务器备份

MySQL误删库恢复实战

创建测试库.表 create database test; use test; create table leo (id int,name varchar(10)); 插入数据 insert into leo values (1,"liufeng"); insert into leo values (2,"zhangsan"); insert into leo values (3,"liufeng"); insert into leo value