zoukankan      html  css  js  c++  java
  • Mysqldump逻辑备份与恢复

    文档结构:

    mysqldump备份影响性能,可能会把内存里面的热数据给冲刷掉,5.7后,新增一个参数,innodb_buffer_pool_dump_pct,控制每个innodb_buffer中转存活跃的使用innodb buffer pages的比例,只有当数据在1s内再次被访问时,才能放到热区域内,避免热数据被刷掉,默认值25%。

     

    重要的参数说明:

    --single-transaction

    用于保证innodb 备份数据时的一致性,配合RR隔离级别一起使用;当发起事物时,读取一个事实的快照,直到备份结束时,都不会读取到本事物开始之前提交的任何数据(这个参数相当重要)

    --all-databases  (-A)

     备份所有数据库。

    --master-data

    该参数有1和2,如果等于1 ,就会在备份出来的文件中添加一个change master的语句(后期配置搭建主从架构);如果值等于2,就会在备份出来的文件中添加一个change master语句,并在语句前面添加注释符号(后期配置搭建主从架构)。

    --dump-slave

    该参数用于从库端备份数据,在线搭建新的从库时使用。

    该参数也有1,2两个值,值为1是,也是在备份出来的文件中添加一个change master的语句;值为2时,则会在change master命令前增加注释信息。

    --no-create-info(-t)

    备份过程中,只备份表数据,并不备份表结构。

    --no-data

    备份过程中,只备份表结构,并不备份表数据。

    --complete-insert

    使用完整的insert语句会包含表中的列信息,这么做可以提高插入效率。

    --databases

    备份多个数据库。

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --set-gtid-purged=OFF --databases sys test > sys_test.sql

    --default-character-set

    字符集,MYSQL目前默认字符集,要与备份出的表的字符集保持一致。

    --quick

    相当于加 sql_no_query,意味着并不会读取缓存中的数据。

    --where=name

    按条件备份出想要的数据。

    备份所有数据库

    /usr/local/mysql5.7/bin/mysqldump --single-transaction -S /tmp/mysql3307.sock --set-gtid-purged=OFF -uroot -pmysql -A >all_20180524.sql

    5.7已经开启了GTID,备份过程中不想带GTID信息,加上--set-gtid-purged=OFF

    恢复全库的过程

    先删除test 测试库

     

    mysql -S /tmp/mysql3307.sock -uroot -pmysql < all_20180524.sql

     

    查看恢复后的数据库:

     

    备份单个数据库test的过程:

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF  test > 20180524test.sql

     

    恢复单库test的过程:

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | mysql              |

    | performance_schema |

    | sys                |

    | test               |

    +--------------------+

    5 rows in set (0.00 sec)

    mysql> drop database test;

    Query OK, 9 rows affected (0.18 sec)

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | mysql              |

    | performance_schema |

    | sys                |

    +--------------------+

    4 rows in set (0.00 sec)

    mysql> create database test;

    Query OK, 1 row affected (0.00 sec)

    mysql -S /tmp/mysql3307.sock -uroot -pmysql test < 20180524test.sql

     

    mysql> use test;

    Reading table information for completion of table and column names

    You can turn off this feature to get a quicker startup with -A

    Database changed

    mysql> show tables;

    +----------------+

    | Tables_in_test |

    +----------------+

    | t              |

    | t1             |

    | t2             |

    | t3             |

    | t4             |

    | tt             |

    | ttt            |

    | zs             |

    | zs1            |

    +----------------+

    9 rows in set (0.00 sec)

    备份单表:

    mysql> select TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS from information_schema.TABLES where table_schema='test';

    +--------------+------------+------------+--------+------------+

    | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | TABLE_ROWS |

    +--------------+------------+------------+--------+------------+

    | test         | t          | BASE TABLE | InnoDB |          6 |

    | test         | t1         | BASE TABLE | InnoDB |     971290 |

    | test         | t2         | BASE TABLE | InnoDB |          3 |

    | test         | t3         | BASE TABLE | InnoDB |          3 |

    | test         | t4         | BASE TABLE | InnoDB |          3 |

    | test         | tt         | BASE TABLE | InnoDB |          4 |

    | test         | ttt        | BASE TABLE | InnoDB |          2 |

    | test         | zs         | BASE TABLE | InnoDB |          3 |

    | test         | zs1        | BASE TABLE | InnoDB |          4 |

    +--------------+------------+------------+--------+------------+

    9 rows in set (0.00 sec)

     

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF test t1 >20180524_t1.sql

    恢复表的过程:

    先删除,在恢复。

     

    mysql -S /tmp/mysql3307.sock -uroot -pmysql test < 20180524_t1.sql

     

    注意:

    单表恢复的时候,不需要写表的名字,只需要写库的名字。

    备份test库t1表的where 条件

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF test t1 --where='RECEIVETIME >="2018-08-31 00:00:00" and  RECEIVETIME <="2018-10-09 00:00:00"' >/data_returnreport.sql

    备份test库t1表的结构

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF -d test t1 > 20180504t1_meta.sql

     

    或者

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF --no-data test t1 > 20180504t1_meta01.sql

     

    把-d 换成--no-date

    备份test库中t表中数据信息:

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF -t test t1 >20180524t1_data.sql

     

    从表结构备份和表数据备份中恢复单表

     

    先恢复表结构,在往里面导数据

     

    查看表结构:

     

    恢复数据:

    mysql -S /tmp/mysql3307.sock -uroot -pmysql test <20180524t1_data.sql

     

    备份test库指定条件数据

    mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF test t1 --where="id>45000" >20180524_t_part.sql

     

    注意:

    where 后面建议为双引号,以防止不识别条件。

    查看备份文件:

     

  • 相关阅读:
    如何优雅的使用mybatis
    Spring Data JPA、MyBatis还有Hibernate有什么区别
    微服务RPC框架选美
    微服务 Rpc和Rest协议
    开源PaaS工具CloudFoundry落地阿里云
    JS中的位置和宽度:clientWidth、offsetWidth、scrollWidth等区别
    vue cli3.X项目打包
    前端实现文件下载功能
    vue elementui 页面监控form表单数据变化
    vue 刮刮乐功能实现
  • 原文地址:https://www.cnblogs.com/hmwh/p/9083399.html
Copyright © 2011-2022 走看看