mysql备份相关

Mydumper

安装mydumper

yum -y install glib2-devel zlib-devel pcre-devel cmake mysql-devel
wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz  
tar zxvf mydumper-0.9.1.tar.gz;cd mydumper-0.9.1
cmake . && make && make install
如果报找不到mysql的错,找到mysql_config 这个文件然后软连接到
ln -s  /usr/bin/mysql_config /usr/local/mysql/bin/mysql_config
或者指定对应的变量  
cmake . -DMYSQL_INCLUDE_DIR=对应安装目录中的include文件夹
which mydumper #若报库文件缺少,装完数据库后可将数据库目录下库文件软连或者复制到/usr/lib64目录下即可,若安装异常可确认zlib是否安装了多个。

备份用户授权

GRANT SELECT, RELOAD, FILE, SUPER, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, PROCESS,SHOW VIEW ON *.* TO 'voole_back'@'localhost' IDENTIFIED BY 'voole_back'

进行备份

mydumper -u $user -p $pass -B dianzanpingfen  -c -o $BACK_DIR -t 10 #dianzanpingfen为需要备份的数据库 
mydumper -u $user -p $pass --trx-consistency-only --regex '^(?!(mysql|test|ptcheck|performance_schema))'  -c -o $BACK_DIR -t 10 #dianzanpingfen 为需要备份的数据库 --regex是一个正则,里边包括排除的库

-B, --database              要备份的数据库,不指定则备份所有库
-T, --tables-list           需要备份的表,名字用逗号隔开
-o, --outputdir             备份文件输出的目录
-c, --compress              压缩输出文件
-e, --build-empty-files     如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件)
-x, --regex                 是同正则表达式匹配 'db.table'
-i, --ignore-engines        忽略的存储引擎,用都厚分割
-h, --host                  连接的主机名
-u, --user                  备份所使用的用户
-p, --password              密码
-P, --port                  端口
-S, --socket                使用socket通信时的socket文件
-t, --threads               开启的备份线程数,默认是4
-C, --compress-protocol     压缩与mysql通信的数据

进行还原

myloader -d $BACK_DIR -o -u root -p 'mysql*()' -t 10  #还原,注意若mysql库也还原,请先将原库mysql库提前备份,否则将覆盖
备份文件需要找寻的数据同步点可查看备份文件夹内‘metadata’文件

Xtrabackup

安装xtraback

yum -y install perl-DBD-mysql perl-DBI percona-xtrabackup-22 qpress
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

给用户授权

GRANT SELECT, RELOAD, FILE, SUPER, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, PROCESS,SHOW VIEW ON *.* TO 'voole_back'@'localhost' IDENTIFIED BY 'voole_back'
flush privileges

备份

参数
    --parallel=2 制定多线程备份
    --no-timestamp 不生成时间戳目录,而由自己指定目录
全量备份(备份完成后可以对整个文件夹做压缩)
    /usr/bin/innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --user=voole_back --password='voole_back' --slave-info --no-timestamp /opt/mysql_bak/base_backup
增量备份1
    /usr/bin/innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --user=voole_back --password=voole_back  --incremental-basedir=/opt/mysql_bak/base_backup --incremental /opt/mysql_bak/incremental/incre1
增量备份2
    /usr/bin/innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --user=voole_back --password=voole_back  --incremental-basedir=/opt/mysql_bak/incremental/incre1 --incremental /opt/mysql_bak/incremental/incre2

还原

解压缩(到备份目录里)
    for i in `find . -iname "*.qp"`; do qpress -d $i  $(dirname $i) && rm -f $i; done
全量恢复
    innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --apply-log --redo-only --use-memory=1G --user=voole_back  --password=voole_back  /opt/mysql_bak/base_backup
增量恢复1
    innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --apply-log --redo-only  --use-memory=1G  --user=my_back --password=mysql   /opt/mysql_bak/base_backup --incremental-dir=/opt/mysql_bak/incremental/incre1 
增量恢复2
    innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --apply-log  --redo-only --use-memory=1G  --user=my_back --password=mysql   /opt/mysql_bak/base_backup --incremental-dir=/opt/mysql_bak/incremental/incre2
最后恢复
    innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --apply-log --use-memory=1G --user=voole_back  --password=voole_back  /opt/mysql_bak/base_backup
最后还原
    innobackupex --defaults-file=/opt/mysql56/etc/my.cnf --copy-back  --user=voole_back --password=voole_back /opt/mysql_bak/base_backup
更改还原后数据文件属主属组(具体需要更改数据库的文件夹视情况而定)
    chown -R mysql.mysql var redolog undolog

mysqldump

常用语法

mysqldump [OPTIONS] database [table1] [table2]    备份某个数据库的某些表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2]    备份备份多个数据库
mysqldump [OPTIONS] --all-databases [OPTIONS]    备份所有数据库

常用参数

-u,--user=name    备份用户名
-p,--password[=name]    备份密码
--single-transaction     在一个事务中执行备份,InnoDB中使用,保持备份数据一致,需确保没有其他DDL语句执行,因为事务并不隔离DDL操作。
-l,--lock-tables    在非事务型数据库备份,进行锁表来保持备份数据一致性。于--single-transaction是互斥的,不能同时使用,如果混合引擎,则只能使用锁表
-x,--lock-all-tables    锁定所有的表,保证所有数据库下所有需要备份的表都是一致的,--lock-tables只会锁定一个db下的所有表,保证单个数据库的备份数据是一致的。
--master-data=[1/2]    值为1时,备份文件中只记录了change master 语句,值为2时,change master 以注释的形式出现。当制定了此参数时,而未指定--single-transaction,则会自动使用--lock-all-tables。
-R,--routines    备份存储过程
--triggers    备份触发器
-E,--events    备份调度事件
--hex-blob    对数据库中存在的不可读类型,备份为十六进制。
--tab=path    在制定路径下,生成两个文件,一个为表结构.sql,一个为表数据.txt,数据文件中用tab隔开便于阅读。
-w,--where='过滤条件'    单表导出时,指定条件。

备份用户授权

GRANT SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT,SHOW VIEW,PROCESS ON *.* to backup@'localhost' IDENTIFIED BY 'mysql*()'

备份实例

mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers --events mc_orderdb > mc_orderdb.sql    备份mc_orderdb数据库
mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers --events mc_orderdb order_master > order_master.sql    备份mc_orderdb 数据库中的order_master表
mysqldump -ubackup -p --master-data=1 --single-transaction --routines --triggers --events --all-databases > mc.sql 备份所有的数据库,此备份的change master 不会被注释。
--tab 备份数据库 mc_orderdb
    1、需要mysql对目录有写权限
    2、用户需要写文件权限 grant file on *.* to backup@'localhost';
    3、mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers --events --tab="/tmp/db_backup/mc_orderdb" mc_orderdb
--where 备份数据库 mc_orderdb中的order_master表的一部分数据 
    1、mysqldump -ubackup -p --master-data=2 --single-transaction --where "order_id>1000 and order_id<1050" mc_orderdb order_master > order_master_1000.sql

如何回复mysqldump备份的数据库

mysql -u -p dbname < backup.sql
mysql> source /tmp/backup.sql
恢复指定--tab的备份数据
    mysql > \. /tmp/mc_orderdb/region_info.sql
    mysql > load data infile '/tmp/mc_orderdb/region_info.txt' into table region_info;

如何进行指定时间点的恢复

1、先决条件
    具有指定时间点前的一个全备
    具有自上次全备后到指定时间点的所有二进制日志
2、恢复全备,查看全备的最后的点,此处为84882
3、查看对应的binlog日志,找到需要恢复的时间点。
    mysqlbinlog --base64-output=decode-rows -vv --start-position=84882 --database=mc_orderdb mysql-bin.000011 | grep -B3 DELETE
    查找位置为84882后的,数据库为mc_orderdb的,删除语句,然后找到需要恢复的时间点,此处为169348
4、将时间点中间的数据写入到sql文件中
    mysqlbinlog --start-position=84882 --stop-position=169348 --database=mc_orderdb mysql-bin.000011 > mc_order_diff.sql
5、应用上一步得到的sql文件
    mysql -uroot -p mc_orderdb < mc_order_diff.sql

实时二进制日志备份

1、创建帐号
    grant replication slave on *.* to 'repl'@'localhost' identified by '123456';
2、创建目录
    mkdir binlog_bak;cd binlog_bak
3、实时进行二进制日志备份,其实就是开启了一个IO线程,和slave一样。
    mysqlbinlog --raw --read-from-remote-server --stop-never --host localhost --port 3306 -urepl -p123456 mysql-bin.000010
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容

  • MySQL备份与恢复的解决方案 目录: 1、为什么要进行备份 2、备份的类型 3、备份需要考虑的因素 4、需要备份...
    BossHuang阅读 1,170评论 0 1
  • 文/Bruce.Liu1 文章大纲备份概念1.1. 备份目的1.2. 备份方式1.3. 备份类型1.4. 备份对象...
    BruceLiu1阅读 3,901评论 4 15
  • MySQL运维实践 5.1-MySQL日志系统 什么是日志 日志(log)是一种顺序记录事件流水的文件 记录计算机...
    极客圈阅读 1,398评论 1 11
  • 标签(空格分隔): Linux 运维 MySQL sql文件hellodb.sql 架构 MySQL被设计为一个单...
    uangianlap阅读 700评论 0 1
  • 文/扬蹄 2017年11月6日 星期一 晴 “哎呀,你怎么还不找男朋友呀?这么大的姑娘,可以找啦!再不找等年纪大些...
    扬蹄阅读 396评论 2 5