码迷,mamicode.com
首页 > 数据库 > 详细

数据库备份

时间:2017-11-20 13:00:44      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:参数   /usr   trigger   基础   sql   reload   net   ash   head   

数据库备份

逻辑备份和物理备份
逻辑备份结果为SQL语句 适合于所有存储引擎 mysqldump
物理备份对数据库目录的拷贝 对于内存表之备份结构

全量备份 对整个数据库的完整备份
增量备份 上次全量或者增量备份基础上 对于更改数据进行备份 XtraBack

使用mysqldump进行备份

常用语法
mysqldump [OPTIONS] database [tables]
mysqldump [OPTIONS] --database [OPTIONS] DB1 [DB2..]
mysqldump [OPTIONS] --all-database [OPTIONS]

mysqldump常用参数
-u,--user=name
-p,--password[=name]
SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT,SHOW VIEW,PROCESS

--single-transaction //对innodb有效 数据库一致性
-l,--lock-tables //依次锁定 某一个db所有表数据一致性
-x,--lock-all-table //所有数据备份时候只读
--master-data=[1/2]

存在触发器 存储过程 调度事件要加参数
-R,--routines
--triggers
-E,--events

--hex-blob //对数据中blog16进制保存
-tab=path //存储表结构加数据
-w,--where=‘过滤条件‘
Where只支持单表

mysqldump备份实例

  • create user ‘backup‘@‘localhost‘ identified by ‘123456‘;
  • grant select,reload,lock tables,replication client,show view,event,process on . to ‘backup‘@‘localhost‘; //给用户权限
  • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events szyqbbs > szyqbbsdb.sql
  • grep "CREATE TABLE" szyqbbsdb.sql //查看表

  • 备份单个数据表
  • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events szyqbbs bbs_user_info > szyqbbsdb_userinfo.sql

  • 备份所有数据库
  • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events --all-databases > alldata.sql

  • 指定目录 tab 会拆分成.sql .txt
  • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events --tab="/tmp/szyqbbsdb" szyqbbs > szyqbbsdb.sql
  • chown mysql:mysql szyqbbsdb //改变目录用户为mysql用户 这样mysql用户才能写入数据

  • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events --where "cid>100 and cid<200" szyqbbs bbs_card> szyqbbsdb_card_100_200.sql

备份脚本

#!/bin/bash
###############Basic parameters##########################
DAY=`date +%Y%m%d`
Environment=$(/sbin/ifconfig | grep "inet addr" | head -1 |grep -v "127.0.0.1" | awk ‘{print $2;}‘ | awk -F‘:‘ ‘{print $2;}‘)
USER="backup"
PASSWD="123456"
HostPort="3306"
MYSQLBASE="/home/mysql/"
DATADIR="/home/www/data/db_backup/${DAY}"
MYSQL=`/usr/bin/which mysql`
MYSQLDUMP=`/usr/bin/which mysqldump`
mkdir -p ${DATADIR}

Dump(){
 ${MYSQLDUMP} --master-data=2 --single-transaction  --routines --triggers --events -u${USER} -p${PASSWD} -P${HostPort} ${database}  > ${DATADIR}/${Environment}-${database}.sql
 cd ${DATADIR}
 gzip ${Environment}-${database}.sql
}

for db in `echo "SELECT schema_name FROM information_schema.schemata where schema_name not in (‘information_schema‘,‘sys‘,‘performance_schema‘,‘abgent_web_20‘)" | ${MYSQL} -u${USER} -p${PASSWD} --skip-column-names`
do
   database=${db}
   Dump
done

1.参数意义
DAY 当前备份日期
Environment 主机IP
MYSQLBASE 备份目录
DATADIR 当前备份子目录
for db in //排除一些数据库如information_schema

数据库备份

标签:参数   /usr   trigger   基础   sql   reload   net   ash   head   

原文地址:http://www.cnblogs.com/weizaiyes/p/7865267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!