• MySQL备份-mysqldump


    一先建立备份账号

    create user 'backup'@'localhost' identified by 'pass4word';

    二赋予权限

    grant select,reload,lock tables,replication client,show view,event,process on *.* to 'backup'@'localhost';

    附加,查看创建表的语句

    show create table table_name;

     三备份单个数据库

     mysqldump -ubackup -ppass4word --master-data=2 --single-transaction --routines --triggers --events tk_test >tk.sql

     


    详解

    备份分类

    按照是否能继续提供服务

    • 热备 :在线备份,能读能写.
    • 冷备 :离线备份

    按照备份数据库对象分类

    • 物理备份:对数据库目录的拷贝,速度较快,对于内存表只备份结构。
    • 逻辑备份:备份的结果为SQL语句.适合于所有存储引擎。相比物理备份而言速度较慢。

        

    按照备份数据量

    • 全量备份
    • 增量备份

     备份内容和备份工具

    需要备份的内容:文件,二进制日志,事务日志,配置文件,操作系统上和MySQL相关的配置

    备份工具:

    mysqldump:逻辑备份工具.要求MySQL服务在线. MyIsam(温备,可读不可写), InnoDB(热备,可读可写)

    cp :冷备份

    lvm快照:几乎热备.注意点是 ,先flush table,lock table,创建快照,释放锁,复制数据.因为要先flush table 和lock table,这对于MyISAM来说很简单很容易实现.但对于InnoDB来说,因为事务的原因,锁表后可能还有缓存中的数据在写入文件中,所以应该监控缓存中的数据是否真的已经完全写入数据文件中,之后才能进行复制数据

    xtrabackup:开源 .MyISAM(温备),InnoDB(热备),速度较快


    语法选项

    • mysqldump [OPTIONS] database_name [tables]   
      mysqldump -ubackup -ppass4word  tk_test2 tk_test >back.sql
    • mysqldump [OPTIONS] --databases [OPTIONS]  DB1 [DB2 DB3 ..]

    • mysqldump -ubackup -ppass4word --database  tk_test2 tk_test >back.sql
    • mysqldump [OPTIONS] --all-databases [OPTIONS]
      mysqldump -ubackup -ppass4word --all-databases > m2.sql;

     连接选项

    -u , --user=name          #指定用户名

    -S, --socket=name       #指定套接字路径

    -p, --password[=name]          #指定密码

    -P, --port=#            #指定端口号

    -h, --host=name         #指定主机名

     

    -r ,--result-file=name

    将结果保存到指定的文件中,在Linux中等同于覆盖重定向.在windows中因为回车符 的原因,使用该选项比重定向更好

    筛选选项
    --all-databases, -A

    指定dump所有数据库,

    --databases, -B

    指定需要dump的库,该选项后所有内容都被当成数据库名,在输出文件中的每个数据库前会加上建库语句和use语句

    --ignore-table=db_name.tbl_name

    导出时忽略指定数据库中的指定表,同样可以用于忽略视图,要忽略多个则多次写该选项

    -d, --no-data

    不导出表数据,可以用在仅导出表结构的情况

    --hex-blob

    将binary varbinary,blob,bit类型导出为十六进制

    --events,-E

    导出时间调度器

    --routines,-R

    导出存储过程和函数,但不会导出它们的属性值,若要导出它们的属性,可以导出mysql,proc表然后reload

    --triggers

    导出触发器,默认已开启

    --tables

    覆盖 --databases选项,导出指定表,但这样只能导出一个库中的表.格式为--tables database_name table_name1 table_name2

    --where='where_condition' ,-w 'where_conditdion'

    指定筛选条件并导出表中符合筛选的数据.如--where="user='张三'"

    字符集选项

    --default-character-set=charset_name

    在导出数据的过程中,指定导出的字符集.客户端服务端字符集不同导出时可能乱码,默认使用utf8

    --set-charset

    在导出结果中加上 set names charset_name语句.默认启用

    复制选项

    --master-data[=value]

    该选择主要用来建立以个replication,当值为1时,导出文件中记录change master语句;

    当值为2时,change master语句被写成注释语句,默认值为空

    该选项会自动忽略--lock-tables,当没有使用 --single-transaction时自动启用 --lock-all-tables


     

    比如要导出we7库下member表中部分数据,完整的加where语句的用法 

     将会导出ims_kz_mgcjbp_member表中 id >3300 并且id 小于3360下的所有数据

    mysqldump -uroot -proot --master-data=2 --single-transaction --events --triggers --routines --where 'id >3300 and id <3360' we7 ims_kz_mgcjbp_member > member.sql

     --tab,-T

    为每个表在给定路径创建tab分割的文本文件, 注意:仅仅用于Mysqldump和mysqld服务器运行在相同机器上

    mysqldump -uroot -proot --master-data=2 --single-transaction --events --triggers --routines --where 'id >3300 and id <3360'   we7 ims_kz_mgcjbp_member --tab='/data/backup'

    上面的命令则会在data/backup 目录下生成 ims_kz_mgcjbp_member.sql,ims_kz_mgcjbp_member.txt文件.

     mysqldump使用建议

    从性能角度考虑:在需要导出大量数据的时候,使用--quick选项可以加速导出,但导入熟读不变,如果是innodb表,则可以同时加上--no-autocommit选项,这样大数据量导入时将极大提升性能

  • 相关阅读:
    flutter android 开发笔记(三.flutter和android数据交互)
    flutter android 开发笔记(二.module集成,混合页面)
    flutter android 开发笔记(一.集成)
    svn主干开辟分支、分支合并到主干
    svn主干开辟分支、分支合并到主干
    打包aar时把依赖的jar打包进aar中
    as修改已有项目的svn地址
    Flutter踩坑日记(一)
    android中两个不同名称的app不能同时安装
    aar、jar、so的引入和aar打包包含so、aar、jar文件
  • 原文地址:https://www.cnblogs.com/aln0825/p/15063786.html
Copyright © 2020-2023  润新知