zoukankan      html  css  js  c++  java
  • mysql 数据库备份的多种方式

    一、使用mysqldump进行备份

    1、完整备份所有数据库

    mysqldump -u root -p --all-databases > E:/all.sql
    

    在mysql8之前,存储过程和事件存储在mysql.proc和mysql.event表中。

    从mysql8开始,相应对象的定义存储在数据字典中,这些表不会被备份。

    要将存储过程和事件也包含,请使用如下语句:

    mysqldump -u root -p --all-databases --routines --events > E:/all.sql
    

    2、时间点恢复

    要获得时间点恢复,应该指定--single-transaction 和 --master-data

    --single-transaction 在备份之前,会将事务隔离级别设为REPEATABLE READ模式,并执行 START TRANSACTION 来提供一致的备份。

    --master-data 将服务器的二进制日志的位置输出到 sql 文件。

    mysqldump -u root -p --all-databases --routines --events --single-transaction --master-data > E:/all.sql
    

    --master-data = 2表示在导出过程中,记录当前库的binlog和pos点,并在导出文件中注释这一行。

    --master-data = 1表示在导出过程中,记录当前库的binlog和pos点,并在导出文件中不注释这一行。

    3、在从库导出时,记录主库的二进制日志位置

    mysqldump -u root -p --all-databases --routines --events --single-transaction --dump-slave > E:/all.sql
    

    --dump-slave = 2表示在导出过程中,记录主库的binlog和pos点,并在导出文件中注释这一行。

    --dump-slave = 1表示在导出过程中,记录主库的binlog和pos点,并在导出文件中不注释这一行。

    4、指定数据库和表导出

    mysqldump -u root -p --databases 数据库 > E:/bak.sql
    mysqldump -u root -p --databases 数据库 --tables 数据表 > E:/bak.sql
    

    5、忽略表

    mysqldump -u root -p --databases 数据库 --ignore-table=数据库.数据表 > E:/bak.sql
    

    6、指定行

    mysqldump -u root -p --databases 数据库 --tables 数据表 --where="条件" > E:/bak.sql
    

    或者用limit限制结果集

    mysqldump -u root -p --databases 数据库 --tables 数据表 --where="条件 LIMIT 条数" > E:/bak.sql
    

    7、导出远程服务器

    mysqldump -u root -p -h 主机IP --all-databases --routines --events --triggers > E:/all.sql
    

    8、用于与其他服务器合并数据的备份

    mysqldump -u root -p --databases 数据库 --skip-add-drop-table --replace > E:/bak.sql
    

    --skip-add-drop-table: 不会将drop table语句写入导出文件中。

    --replace:将使用replace into语句而不是insert语句导出。

    二、使用mysqlpump进行备份

    1、并行处理,通过指定线程数量加速备份过程

    mysqlpump --default-parallelism=8 > E:/all.sql
    

    2、也可以指定每个数据库的线程数

    mysqlpump -u root -p --parallel-schemas=4:数据库 --default-parallelism=2 > E:/all.sql
    

    3、排除或包含数据库

    mysqlpump -u root -p --include-databases=%t > E:/bak.sql

    对以 t 结尾的所有数据库进行备份,多个数据库用逗号分隔,数据库名可以使用%或_通配符。

    除此之外,还有类似--include-events,--include-routines,--include-tables,--include-triggers,--include-users等

    mysqlpump -u root -p --exclude-databases=a% > E:/bak.sql
    

    排除以 a 开头的数据库进行备份,多个数据库用逗号分隔,数据库名可以使用%或_通配符。

    除此之外,还有类似--exclude-events,--exclude-routines,--exclude-tables,--exclude-triggers,--exclude-users等

    4、备份用户

    mysqlpump -u root -p --exclude-databases=% --users > E:/user.sql

     可以通过--exclude-users来排除某些用户

    mysqlpump --exclude-databases=% --exclude-users=root --users > E:/user.sql
    

    5、压缩备份

    通过使用--compress-output = lz4 或 --compress-output = zlib

    mysqlpump -u root -p --compress-output=lz4 > E:/all.lz4
    mysqlpump -u root -p --compress-output=zlib > E:/all.zlib

     通过如下语句进行解压

    lz4_decompress E:/all.lz4 all.sql
    zlib_decompress E:/all.zlib all.sql
    

      

    三、使用mydumper进行备份

    mydumper需要单独安装,官网:https://github.com/maxbube/mydumper/releases

    1、完全备份

    mydumper -u root --password=密码 --outputdir 导出路径
    

    2、备份单独的表

    mydumper -u root --password=密码 -B 数据库 -T 数据表 --triggers --events --routines --outputdir 导出路径
    

    3、使用正则表达式来备份特定数据库

    mydumper -u root --passoword=密码 --regex '^(?!(mysql|test))' --outputdir 导出路径
    

    从备份中排除mysql和test数据库。

     4、备份大表

    mydumper -u root --password=密码 -B 数据库 -T 数据表 --triggers --events --routines --rows=100000 -t 8 --trx-consistency-only --outputdir 导出路径
    

    --rows 表示将表分成多少行的块

    --trx-consistency-only 如果是innodb,将使锁定最小化。

    -t 指定线程数量

    5、压缩备份

    mydumper -u root --password=密码 -B 数据库 -T 数据表 -t 8 --trx-consistency-only --compress --outputdir 导出路径
    

    6、仅备份数据

    通过--no-schemas选项来跳过 schema 并且仅备份数据

    mydumper -u root --password=密码 -B 数据库 -T 数据表 -t 8 --no-schemas --compress --trx-consistency-only --outputdir 导出路径
    

      

    四、使用普通文件进行备份

    可以通过直接复制数据目录中的文件来进行备份,需先关闭mysql,复制文件,然后启动mysql。

    五、使用xtrabackup进行备份

    https://www.percona.com/downloads/XtraBackup/LATEST/

    1、全量备份

    xtrabackup --defaults-file=/etc/my.cnf --host=主机IP --user=用户名 --password=密码 --port=端口 --backup --parallel=3 --target-dir=备份目录
    

    --defaults-file 数据库配置文件

    --backup 执行备份操作

    --parallel 备份时并发的线程数

    --target-dir 备份文件的目录

    2、增量备份

    xtrabackup --defaults-file=/etc/my.cnf 
    --host=主机IP 
    --user=用户名 
    --password=密码 
    --port=3306 
    --backup 
    --parallel=3 
    --target-dir=增量备份目录 
    --incremental-basedir=全量备份目录 

     增量备份是基于全量备份的,--incremental-basedir 指向全量备份目录

  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/jkko123/p/10186776.html
Copyright © 2011-2022 走看看