美文网首页
MySQL备份与恢复

MySQL备份与恢复

作者: 吃可爱长大鸭 | 来源:发表于2019-12-10 20:32 被阅读0次

    MySQL 日志

    img

    错误日志

    作用:解决MySQL故障,排错
    
    默认是否开启:开启
    
    路径/名字:$datadir/$hostname.err
    
    [root@db01 data]# mysqladmin variables|grep 'error'
    

    编辑配置文件

    [root@db01 ~]# vim /etc/my.cnf
    [mysqld]
    log_error=/application/mysql/data/$hostname.err
    

    查看方式

    mysql> show variables like 'log_error';
    

    一般查询日志

    作用:记录mysql所有执行成功的SQL语句信息,可以做审计用,但是我们很少开启。
    
    默认是否开启:关闭
    
    路径/名字:$datadir/$hostname.log
    
    [root@db01 data]# mysqladmin variables |grep 'gen'
    general_log        OFF 
    general_log_file  /application/mysql-5.6.40/data/db01.log 
    ​
    mysql> show variables like '%gen%';
    +------------------+-----------------------------------------+
    | Variable_name    | Value                                   |
    +------------------+-----------------------------------------+
    | general_log      | OFF                                     |
    | general_log_file | /application/mysql-5.6.40/data/db01.log |
    +------------------+-----------------------------------------+
    ​
    vim /etc/my.cnf
    general_log=1
    

    慢日志

     show processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    |  2 | root | localhost | NULL | Query   |    0 | init  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+
    ​
    mysql> show full processlist;
    +----+------+-----------+------+---------+------+-------+-----------------------+
    | Id | User | Host      | db   | Command | Time | State | Info                  |
    +----+------+-----------+------+---------+------+-------+-----------------------+
    |  2 | root | localhost | NULL | Query   |    0 | init  | show full processlist |
    +----+------+-----------+------+---------+------+-------+-----------------------+
    
    作用:  1)是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件
    
            2)通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的
    

    默认是否开启:关闭

    路径/名字:$datadir/$hostname-slow.log
    
    [root@db01 ~]# mysqladmin variables |grep 'slow'
    slow_query_log OFF
    slow_query_log_file /application/mysql-5.6.40/data/db01-slow.log
    

    如何开启:

    [root@db01 ~]# vim /etc/my.cnf
    [mysqld]
    #指定是否开启慢查询日志
    slow_query_log = 1
    #指定慢日志文件存放位置(默认在data)
    slow_query_log_file=/application/mysql/data/slow.log
    #设定慢查询的阀值(默认10s)
    long_query_time=0.05
    #不使用索引的慢查询日志是否记录到日志
    log_queries_not_using_indexes
    #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
    min_examined_row_limit=100(鸡肋)
    

    模拟慢查询

    mysql> use test
    mysql> create table city select * from world.city;
    mysql> insert into city select * from city;
    ​
    mysql> show processlist;
    +----+------+-----------+------+---------+------+--------------+-------------------------------------+
    | Id | User | Host      | db   | Command | Time | State        | Info                                |
    +----+------+-----------+------+---------+------+--------------+-------------------------------------+
    |  2 | root | localhost | NULL | Query   |    0 | init         | show processlist                    |
    |  5 | root | localhost | test | Query   |    9 | Sending data | insert into city select * from city |
    +----+------+-----------+------+---------+------+--------------+-------------------------------------+
    2 rows in set (0.01 sec)
    ​
    mysql> kill 5;
    Query OK, 0 rows affected (0.00 sec)
    ​
    ​
    [root@db01 ~]# yum  localinstall -y percona-toolkit-3.0.11-1.el6.x86_64.rpm
    

    MySQL 备份

    1.做备份就是为了恢复
    
    2.第一个是保护公司的数据
    
    3.尽量减少数据的丢失(公司的损失)
    

    备份类型

    1.冷备
    
    停服务,做备份
    
    2.温备
    
    (不停服务)在备份的过程中,会锁表,用户无法往表中写入数据
    
    3.热备
    
    (不停服务)在备份过程中,不会锁表,用户随意写数据
    

    备份策略

    **1.全量备份**
    
    将所有的数据,做备份
    
    **2.增量备份**
    
    基于上一次数据备份的,新数据备份
    
    **3.差异备份**
    
    基于全备数据的,新数据备份
    

    备份工具

    1.逻辑备份

    1.mysqlbinlog
    2.mysqldump
    3.into outfile(导出数据结果)
    4.binlog(备份SQL语句,DML,DCL,DDL,DTL)
    5.replication(主从复制-延时从库)
    

    2.物理备份

    1.cp /application/mysql/data
    2.Xtrabackup
    
    ### MySQL逻辑备份-mysqldump
    
    mysqldump 
    -u:指定用户
    -p:指定密码
    -h:指定主机域
    -S:指定socket文件
    -P:指定端口
    

    1.全备参数:-A

    [root@db02 ~]# mysqldump -A > /tmp/full.sql
    

    2.指定库备份:-B(指定多个库)

    [root@db02 ~]# mysqldump -B zls1 > /tmp/zls1.sql
    

    多了一条建库语句,use语句

    mysql < /tmp/zls1.sql
    

    3.什么都不加:备份库中的表

    [root@db02 ~]# mysqldump zls1 > /tmp/zls1_1.sql
    
    mysql> create database zls1;
    mysql> use zls1; source /tmp/zls1_1.sql
    ​
    mysql zls1 < /tmp/zls1_1.sql
    

    4.备份时,刷新binlog:-F

    [root@db01 ~]# mysqldump -A -F > /tmp/full_F.sql
    ​
    [root@db01 ~]# mysqldump -B mysql zls  -F > /tmp/full_F.sql
    

    5.打点备份:--master-data=2

    =2是注释
    [root@db02 ~]# mysqldump -A --master-data=2 > /tmp/full1.sql
    ​
    =1 不注释
    [root@db02 ~]# mysqldump -A --master-data=1 > /tmp/full1.sql
    ​
    =0 关闭
    [root@db02 ~]# mysqldump -A --master-data=0 > /tmp/full1.sql
    

    6.热备参数:--single-transaction(快照备份)

    [root@db02 ~]# mysqldump -A --master-data=2 --single-transaction > /tmp/full2.sql
    

    7.-R(备份函数,存储过程),--triggers

    [root@db02 ~]# mysqldump -A -R --triggers --master-data=2 --single-transaction > /tmp/full2.sql
    

    8.压缩备份:gzip

    [root@db02 ~]# mysqldump -A -R --triggers --master-data=2 --single-transaction > /tmp/full2.sql
    ​
    ​#解压到数据库
    zcat /tmp/full_2019-12-10.sql.gz | mysql -uroot -p123
    start-position 
    

    相关文章

      网友评论

          本文标题:MySQL备份与恢复

          本文链接:https://www.haomeiwen.com/subject/mwxngctx.html