MySQL备份与恢复详解(一)

新博客网站1

新博客网站2

一,逻辑备份

  1. 工具:mysqldump,mydumper,PHPMyAdmin
  2. Schema和数据存储在一起,巨大的sql语句,单个巨大的备份文件

(1).mysqldump

    Schema和数据存储一起、巨大的SQL语句、单个巨大的备份文件

    mysqldump: 客户端,通过mysql协议连接至mysqld;

        -A, --all-databases

        MyISAM, InnoDB: 温备
             -x, --lock-all-tables:锁定所有库的所有表  备份全部时建议使用
             -l, --lock-tables:锁定备份的表  部分备份时建议使用

        InnoDB 热备:
            --single-transaction:启动一个大的单一事务实现备份

        -B, --databases db_name1 db_name2 ...:备份指定的数据库

        -C, --compress:压缩传输;

    命令的语法格式:
        mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表
        mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]:备份一个或多个库
        mysqldump [OPTIONS] --all-databases [OPTIONS]:备份所有库


    其它选项:

        -E, --events:备份指定库的事件调度器;
        -R, --routines:备份存储过程和存储函数;
        --triggers:备份触发器


        --master-data[=#]:
            1:记录CHANGE MASTER TO语句;此语句未被注释;
            2:记录为注释语句;

        --flush-logs, -F:锁定表之后执行flush logs命令;从而做日志滚动

    注意:二进制日志文件与数据文件不应该放置于同一磁盘;为什么? 应该用riad10

(2).实战

#mysqldump + 二进制日志
mysqldump -uroot -all-databases --lock-all-tables --master-data=2 > /root/all.sql
#less查看二进制文件的位置
mysqlbinlog --start-position=245 /var/lib/mysql/mysql-bin.000001 > instart.sql
导入all.sql后再导入instart.sql既可
还原操作,应该先关闭二进制日志,没有必要再写一次日志,临时关闭可以使shell环境变量

二,基于lvm2的备份

  1. 请求锁定所有表 flush tables with read lock;
  2. 记录二进制日志文件及事件位置 flush logs;mysql -e 'show master status' > /root/pos.date +%F
  3. 为逻辑卷创建快照, lvcreate -L 500 -n mydata-snap -p r -s /dev/myvg/mydata
  4. 释放锁,unlock tables;
  5. 挂载快照卷
  6. 备份数据文件从快照卷
  7. 备份二进制文件,先滚动一下,在原卷备份 cp时使用-a 选项

你可能感兴趣的:(MySQL备份与恢复详解(一))