• mysql-DBA(1)-数据库备份恢复-导入导出-日志解释


    1.备份类型






    log: hdd
    data :ssd 

    2.数据库工具





     

    3.逻辑备份和物理备份




    ,备份和导出都慢,缓冲池有污染。

    逻辑备份:把所有的命令转换成sql语句。



    修改配置文件:

    3.1MySQLDUMP


    -A 备份所有
    -B 备份哪个数据库
    --master-data=1 同步

    1. #备份 数据库表 test 到aaa 保存到文本 backup.sql中
    2. mysqldump --single-transaction -B test aaa >backup.sql

    内容:


    备份参数:
    1.备份成文件,里面就是sql语句
    2.routine:
    3.trigger 触发器
    4.event: 定时任务
    5.-B 数据库



    1.有-B 表示备份数据库 test 为  数据库 aaa 备份的结果是:backup.sql
       tar czf backup20170509.tar.gz backup.sql
      lz4_decompress
     qpress

    2.只备份一张表的话:
    没有-B  表示备份的是数据库test 下面的表aaa

    3.直接输出为一个备份文件,且是压缩过的。

    4.-w 备份条件 -w"C=12"


     


    3.2 备份示例


     

    =1记录所有操作.
     

    3.3xtrabackup




    4.导入导出


    从表sbtestl 中导出数据到 sbtest.dat,id <1000000;

    设置文件: set global secure_file_priv='/tmp/';
    打开文件: vim   /etc/my.cnf
    重启mysql





    1.选择数据库sbtest
    2.选择数据表,导出数据。
    3.导出的目录: /tmp/下

     


    4.1导出


    4.2导入
     

    5.性能优化


     




     

    MYSQL复制



    6.Mysql日志

    物理复制:数据一致。
    逻辑一致: 100万行,但数据不一定一致。


    二进制日志:

     

    是否打开二进制日志?


    vim /etc/my.cnf
    log_bin=bin  //二进制日志都是以bin 为开头的
    cd /mdata/mysql_test_data/


    bin.000099  6位-7位 不会循环
    bin.0000100

    1.生成日志

    1.操作行为:显示日志:show master status;
    2.刷新日志:flush binary logs;
    3.操作行为:显示日志 show master status           

    2.查看日志内容:


    原始日志:

    结束:rotate
     

    表中插入2个数据,
    未操作前:

    操作以后 事务变成487 产生了333个字节。


    查看日志 show binlog events in 'bin.000025';


     


    1.事件类型说明:
       query:执行sql语句
       table_map:id=284
       write_rows:插入记录 不是sql语句 
       Xid:提交,事务号

    2.解析日志:mysqlbinlog  bin.000025
      这行记录:base64方便传输



    看具体内容的命令:
    通过帮助查找参数:mysqlbinlog --help | less



    --base64-ouput=never 表示不输出。


    --base64-ouput=decode-rows  -v 表示解析每行的数据。




    这不是sql语句,执行不了的。
    insert不行

    replace一条记录:值已经改了。





    查看  :mysqlbinlog --base64-output=decode-rows -v bin.000025
              mysqlbinlog --base64-oytput=decode-rows -vv bin.000025

    insert into a values(400,400);
    mysqlbinlog --base64-output=decode-rows -v bin.000026

    delete from a where a<400;
    query开始
    Write_rows 变成 Delete_rows:


    update a set b=500 where b=400;

    缺点:大。
    优点:一致。

    set binlog_format='statement';

    update a set b=500 where b=400;

    看日志只能看到每行的记录,但是不能看到执行的sql语句。如何知道每行操作的sql语句?
    设置参数为1

    示例:
    用数据库 aaa,
    1.插入数据(100,100)
    2.插入数据(200,200)
    3.更新 a  设置b=400

    日志:




    在写之前有个rows_query类型









                                  





     


     




     

  • 相关阅读:
    Springcloud:二、Eureka介绍+上手(搭建EurekaServer注册中心+服务注册+服务拉取)
    Jenkins学习笔记5
    【办公类-16-05-01】“大班游戏活动室排班表——班主任版21周”(python 排班表系列)
    通俗易懂了解大语言模型LLM发展历程
    搜索与回溯算法,贪心算法
    部署k8s集群
    【图论 树 深度优先搜索】2246. 相邻字符不同的最长路径
    关于刷题时使用数组的小注意事项
    Javascript中integrity属性安全验证
    pandas是什么以及pandas的三种数据结构Series、DataFrame、MultiIndex的创建方式函数代码
  • 原文地址:https://blog.csdn.net/aggie4628/article/details/136451104