• mysql备份及增量数据恢复&参数相关命令


    1.备份

    1.1)备份的基本语句

    mysqldump -u 用户名 -p 密码  数据库名>备份的文件名

    #可见备份记录的内容为drop,create,insert这类SQL语句,实质上是逻辑备份,且做更改的时候需要锁表;插入的时候一个个插入,减少IO。

    【补充】为保证备份内容不乱码,需保证客服端、服务端乃至Linux端的字符集

    1.2)备份选项 -B

     备份添加-B即增加了建库和连库的过程,如果drop掉了database,则通过此方法才会自动建库(不需指定库名)

     1.3)备份选项 gzip

     对于备份,可以采取压缩备份,减少备份文件所占空间

     

    1.4)备份多个库

    备多个库可以直接将多个库列出来。对于mysqldump的更多参数,可以将help的内容打出来研究~:

    1.5)分库备份的脚本实现

    mysql -uroot -p456 -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -p456 --events -B 1|gzip >/opt/bak/1.sql.gz#g'|bash

    #-E为不确认大小写

    分库分表通过for循环实现(简易版):

    vi fenku.sh

    1.6)备份指定库中的某个或某几个表

     备份单个表

    备份多个表

    分表备份缺点:文件多,很碎;因此建议如下:

    1.备一个完整全备,再做一个分库分表备份

    2.脚本批量恢复多个SQL文件

    1.7)备份选项 -d  &  -t

    备份数据库表结构               #由备份过程可以看到没有数据的存入

    备份数据库数据

    1.8)备份选项 -A

    备份整个库的内容

    1.9)备份选项 -F

    在备份中切割binlog

    【补充】如果做增量恢复时,不指定-F切割日志,可以通过--master-data重新定义全备日志开始备份的位置:

    若--master-data=2 后面要加-x,保持数据一致      (此方法为基于myisam)   #mysqldump -uroot -p456 -A -B --master-data=2 -x --events|gzip >/opt/all.sql.gz

    或--master-data=2 后面加--single-transaction        (此方法为基于innodb)   #mysqldump -uroot -p456 -A -B --master-data=2 --events --single-transaction|gzip >/opt/all.sql.gz(可以看到备份开始的文件和POS点,即恢复的点)

     -x :lock tables off

     -l :lock all tables for read

     --single-transaction :适合innodb事务数据库备份

    2.增量恢复

    2.1)在未登陆mysql库的情况下进行增量恢复

    2.2)在登陆mysql库后通过source命令恢复

    2.3)分库备份恢复可以通过脚本实现

    在bak目录下

    gzip -d *

    ls *.sql|sed 's#_bak.sql##g'

    for dbname in 'ls *.sql|sed 's#_bak.sql##g'' ; do mysql -uroot -p456 < ${dbname}_bak.sql;done

    3.mysql参数相关

    3.1)查看连接到数据库的用户,也可以看到进程状态

    mysql -uroot -p456 -e "show full processlist";

    3.2)查配置(或没在配置文件中配置的参数)

    3.3)查看全局状态(包括一些性能的统计等)

    【example】

    #等同于在mysql里执行 show global status like '%select%',但与show variables like '%select%'不同

    3.4)修改参数

    如:更改索引缓存空间

    在数据库里修改                                                                     # set global更改参数值,对于ON/OFF这种开关型参数不适用!

    在my.cnf中更改,通过数据库重启生效                                   #在配置文件中修改后,数据库里也会自动更改

    4.解析mysql binlog 增量备份

    命令:mysqlbinlog

    binlog的作用?用来记录mysql数据库的增、删、改、查等凡是造成数据库有更新的操作都会记录,而select 或show不会记录

    用mysqlbinlog实现拆库恢复(用-d指定数据库):

    mysqlbinlog -d oldboy mysql-bin.000020 >oldboy.sql

    less oldboy.sql

    可以指定binlog中的起始位置进行恢复:

    mysqlbinlog  mysqlbin.000020 --start-position=365 --stop-position=456 -r pos.sql

    而不建议指定时间点,因为一秒钟有可能发生多个操作(--start-datetime)。

    2018年10月30日

    祝好!

  • 相关阅读:
    linux下如何解压和压缩文件
    windows如何查看jdk的安装目录
    java.sql.SQLException: Data truncated for column 'seat_number' at row 1
    Error:(23, 0) Could not find method implementation() for arguments [directory 'libs'] on object of t
    grandle Project sync failed.please fix your project and try again
    java如何实现批量删除pdf指定的页数
    Java实现批量将word文档转换成PDF
    Linux下查看目录文件数和文件大小
    IDEA启动Springboot时,解决报错java.lang.NoClassDefFoundError: javax/servlet/Filter
    如何SpringBoot项目改为外置Tomcat启动
  • 原文地址:https://www.cnblogs.com/wangke2017/p/9675268.html
Copyright © 2020-2023  润新知