zoukankan      html  css  js  c++  java
  • MySQL中备份的几种方式

    前言:

    并不是每家公司都高大上,并不是每家公司都会用一些很前沿的技术来做备份这一块,有些企业或者有些行业或者团队本身由于各方面的原因使用简单或者复杂的方式来做备份这块,这次这个文档算是对以前工作的总结,看一下各种备份方式中的优缺点

    1 mysqldump

    常用的备份参数

    -R --events --triggers=true  --single-transaction --master-data=2

    -R(--routines): 导出存储过程以及自定义函数

    --events: 导出事件

    --triggers=true:导出触发器.默认开启,用--skip-triggers禁用

    --single-transaction:该选项在导出数据之前提交一个BEGIN SQL 语句,BEGIN不会阻塞任何应用程序且能保证到处时数据库的一致性状态,跟--lock-tables是互斥的.因为lock tables会使任何挂起的事务隐含提交

    --master-data=2: 该选项将binlog的位置和文件名追加到输出文件中,如果是1 将会输出CHANGE MASTER命令,如果为2,输出的CHANGE MASTER 命令钱添加注释信息。该选项将打开--lock-all-tables选,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间),该选项自动关闭--lock-tables选项

    # /opt/app/mysql/bin/mysqldump -uroot -p -R --events --triggers=true  --single-transaction --master-data=2 sakila > sakila.sql

    2 数据目录拷贝----此略

    3 基于xtarbackup的备份

    rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

    yum -y install percona-xtrabackup

    安装后的软件包有

    [root@MASTER_03 bin]# rpm -ql percona-xtrabackup

    /usr/bin/innobackupex

    /usr/bin/xbcloud

    /usr/bin/xbcloud_osenv

    /usr/bin/xbcrypt

    /usr/bin/xbstream

    /usr/bin/xtrabackup

    /usr/share/doc/percona-xtrabackup-2.3.3

    /usr/share/doc/percona-xtrabackup-2.3.3/COPYING

    /usr/share/man/man1/innobackupex.1.gz

    /usr/share/man/man1/xbcrypt.1.gz

    /usr/share/man/man1/xbstream.1.gz

    /usr/share/man/man1/xtrabackup.1.gz

    具体用法

    1 创建备份用户

    mysql> grant reload,lock tables,replication client on *.* to 'dbbak'@'localhost' identified by 'bk2016' ;
    mysql> flush privileges;
    进行数据库全备

    mkdir -pv /data/dbbak

    cd /data/dbbak

    使用以下参数进行全库备份

    [root@MASTER_03 dbbak]# innobackupex --user=dbbak --password=bk2016 /data/dbbak/

    会在dbbak目录下生成一个以时间戳为准的目录

    2016-02-03_15-48-02

    在这个目录下有一个文件

    [root@MASTER_03 dbbak]# cat 2016-02-03_15-48-02/xtrabackup_checkpoints

    backup_type = full-backuped

    from_lsn = 0

    to_lsn = 1095181486

    last_lsn = 1095181486

    compact = 0

    recover_binlog_info = 0

    增量备份 创建一个库中建立一个表(建表才会导致LSN号变化)

    [root@MASTER_03 dbbak]# innobackupex --user=dbbak --password=bk2016 --incremental /data/dbbak/ --incremental-basedir=/data/dbbak/2016-02-03_15-48-02/

    生成一个新目录

    2016-02-03_16-01-28

    对比这个checkpoint

    [root@MASTER_03 dbbak]# cat 2016-02-03_16-01-28/xtrabackup_checkpoints

    backup_type = incremental

    from_lsn = 1095181486

    to_lsn = 1095181486

    last_lsn = 1095181486

    compact = 0

    recover_binlog_info = 0

    4  MySQL企业级的备份mysqlbakcup

    mysqlbackup --user=dba --password --port=3306  --with-timestamp --backup-dir=/export/backups   backup

    5基于LVM的快照备份---略

  • 相关阅读:
    批处理文件双击运行成功,程序调用却运行失败解决方案
    前端安全之加解密种类与HTTPS加密原理(二)
    node包管理nvm与pnpm(一)
    React状态管理—reduxAPI原理分析(三)
    动态规划原理与算法实践(二)
    双指针算法基本原理和实践(一)
    分治算法基本原理和实践(三)
    编程范式(一)
    Java基础
    前端模块化CommonJS、AMD、CMD、ES6模块(二)
  • 原文地址:https://www.cnblogs.com/olinux/p/5207148.html
Copyright © 2011-2022 走看看