zoukankan      html  css  js  c++  java
  • mysql之冷备和mysqldump、mydumper、xtrabackup备份

    1.冷备流程:

    停库备份,冷备份一般用于非核心业务,这类业务一般都允许停库。

    在停止数据库后,将数据文件拷贝出来,然后对原始数据文件进行备份。

    流程:

    1.关闭数据库备份          2.拷贝数据文件

    3.压缩数据文件           4.重启数据库

    2.热备

    热备份分逻辑备份和物理备份.,逻辑备份的是SQL语句,将数据库里面的数据,转储为SQL文件.

    在线备份,一般是使用mysqldumpxtrabackup进行备份和恢复

    Mysqldump适合规模比较小的库,业务并不繁忙的数据库,一般都是选择mysqldump

    Mysqldumpmydumper都是逻辑备份工具,xtrabackup是物理备份工具.

    Mysqldumpmysql自带的工具,xtrabackuppercona公司开发的工具.

    如果数据量大于100G,逻辑备份恢复比较慢,可以优先考虑物理备份.

            2.1 mysqldump备份原理及参数介绍

    mysqldump是 官方工具,本身mysql自带,不用安装.
    Mysqldump备份原理:将数据库的数据,查询出来,然后通过拼接语句,形成sql文件.mysqldump是逻辑备份.

    如何保证备份的一致性,以及mysqldump参数的讲解:

    --single-transaction:可以保证在不加锁的情况下,备份一致性数据.

    参数原理:在备份的时候mysqldump---->mysqld(客户端连接到服务器端),在备份会中,--single-transaction会显式的将会话的事务隔离级别改为RR隔离级别,并且开启一个事务,RR隔离级别下,备份数据都是开启事务的时候的数据的快照,于是保证了备份的一致性.

    故一般备份情况下加这个参数来保证数据的一致性.

    优点: 1.不加锁 2.可以保证数据的备份一致性

    实际在数据备份的时候,获取binlog位置的时候,是需要加锁加锁--获取binlog位置--解锁--备份数据.加锁只是在获取binlog位置的一瞬间然后释放,在备份开始后的时间是不加锁的.

    --master-data 1|2  一般用2 , 加注释,作用是打印备份的数据的binlog pos点到备份文件头部.可通过查看备份文件知道备份的pos.

    head -n 35 test.txt 查看文本前35行一般就看查看到pos.

    于是在保证备份一致性(不加锁)的情况下语句是:

    mysqldump --single-transaction  --master-data=2

    可通过mysqldump --help查看其它参数信息.

    -A, --all-databases 作用是备份所有数据库(包括mysql数据库)

    --add-drop-database 和 --add-drop-table(--skip-add-drop-table) 参数:意思是如果库或者表已经存在,就删除掉尽量在恢复之前,就是手动删掉数据.

    -c, --complete-insert  完整insert (不是简写的,全写:insert into t1 (id,name) values(1,'mxt');)

    -B, --databases   指定备份的数据

    -K, --disable-keys  作用是使索引失效,防止大批量数据插入的开销.

    -h  作用是连接哪个主机.(host.)

    -x, --lock-all-tables  ----备份加锁.(一般不用)

    -l, --lock-tables   Lock all tables for read.(加锁,一般不用)

    --max-allowed-packet=#  mysqldumpmysqld都需要设置,mysqld允许最大的数据包,加到配置文件max-allowed-packet=32M(mysqldmysqldump里都设置.)

    -d, --no-data      ----------只备份表结构

    -q, --quick       --------- 不经过内存,如果内存比较小,直接落盘到文件.(可以减少对内存的占用)

    --replace      ------ insert into 更改成 replace  INTO.

    --hex-blob     -------- 表里面有二进制的列(blob text字段) ,需要备份加这个参数.

    --triggers  ------ 备份触发器

    -E, --events  ---------备份事件

    上面大多数参数对MYISAM存储引擎不起作用,因为其不支持事务,没有RR模式,故无法保证事务一致性,故备份需加锁.

    mysqldump备份特点:

    1.简单,不需要额外安装,sql文件易读(.sql  .txt ....是文本文件,文件后缀不能决定文件的性质)

    2.该工具单线程,不能并发备份恢复 ,因为是逻辑备份,数据量越大,恢复越慢.

           2.2mysqldump备份及恢复语句

    备份所有数据库:

    mysqldump -uroot -p -S /tmp/mysql3306.sock --master-data=2 --single-transaction  -A > /tmp/all.sql

     

    备份单个数据库:

    mysqldump -uroot -p -S /tmp/mysql3306.sock --master-data=2 --single-transaction  -B test1 > /tmp/all.sql

     

    导出表:

    mysqldump -uroot -p -S /tmp/mysql3306.sock --master-data=2 --single-transaction  -B test1 --tables t3 > t1.sql

     

    导出表结构:

    mysqldump -uroot -p -S /tmp/mysql3306.sock --master-data=2 --single-transaction  -A -d > /tmp/all.sql

     

    mysqldump导入数据:

    方法1.  mysql -uroot -proot -S /tmp/mysql3306.sock < all.sql

    方法2.  mysql > source /tmp/all.sql

    对于恢复数据:  尽量不要跨机房和网段等恢复,尽量将备份文件拷贝到mysqld所在机器上,进行恢复.

      2.3 mydumper介绍

    由来:Mydumper也是逻辑备份.备份时过程与mysqldump相似,都是瞬间开启RR模式然后释放锁,保证了数据的一致性.弥补了mysqldump只能单线程备份的特点,其设计中可以多线程拷贝数据,.但消耗资源.并且mysqldump是第三方开发工具,使用时需要安装.

    /usr/local/bin/mydumper 备份工具

    /usr/local/bin/myloader 恢复工具

    Mydumper进行备份时,有一个主线程和多个备份线程完成.不用加参数-single-transaction--master-datea=2等参数.

    /usr/local/bin/mydumper 备份工具

    /usr/local/bin/myloader 恢复工具

    Mydumper进行备份时,有一个主线程和多个备份线程完成.不用加参数-single-transaction--master-datea=2等参数.

     1.mydumper的安装

    安装mydumper步骤:

     1.yum -y install cmake pcre-devel gcc-c++ glib2-devel zlib*

     2.tar zxvf mydumper-0.9.1.tar.gz

     3.cd mydumper-0.9.1

     4.mkdir build

     5.cd build

     6.cmake ..

     7.make

     8.make install

    安装完成后再ls  /usr/local/bin里有该命令.

    其中mydumper是逻辑备份工具,myloader是逻辑恢复工具.

    查看使用方法报错: mydumper --help报错。

    解决方法:

    执行:  ls -l /usr/local/mysql/lib/libmysqlclient.so.20*

    执行:  ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/

    vim /etc/ld.so.conf在里面添加一行:  export LD_LIBRARY_PATH=/usr/local/mysql/lib.里面内容如下:

    include ld.so.conf.d/*.conf

    export LD_LIBRARY_PATH=/usr/local/mysql/lib

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/lbg-database/p/10109926.html
Copyright © 2011-2022 走看看