zoukankan      html  css  js  c++  java
  • MySQL的备份

    MySQL的备份

    开启MySQL的log_bin

    执行查看mysqllog_bin状态

     

    > show variables like 'log_bin%';
    
    +---------------------------------+--------------------------------+
    
    | Variable_name                   | Value                          |
    
    +---------------------------------+--------------------------------+
    
    | log_bin                         | OFF                             |
    
    | log_bin_basename                |                           |
    
    | log_bin_index                   |                            |
    
    | log_bin_trust_function_creators | OFF                            |
    
    | log_bin_use_v1_row_events       | OFF                            |
    
    +---------------------------------+--------------------------------+

     

    开启log_bin日志

          打开mysql配置文件:

        root@ubuntu:~# vi /etc/mysql/mysql.conf.d/mysqld.cnf

      开启log_bin日志

        server-id               = 1

        log_bin                 = /var/log/mysql/mysql-bin.log

      server-id表示单个结点的id,这里由于只有一个结点,所以可以把id随机指定为一个数,这里将id设置成1。若集群中有多个结点,则id不能相同。

      第二句是指定binlog日志文件的名字为mysql-bin,以及其存储路径。

    重启MySQL:

              service mysql restart

    重新查看log_bin状态:

    > show variables like 'log_bin%';
    
    +---------------------------------+--------------------------------+
    
    | Variable_name                   | Value                          |
    
    +---------------------------------+--------------------------------+
    
    | log_bin                         | ON                             |    # log_bin日志开启
    
    | log_bin_basename                | /var/log/mysql/mysql-bin       |
    
    | log_bin_index                   | /var/log/mysql/mysql-bin.index |
    
    | log_bin_trust_function_creators | OFF                            |
    
    | log_bin_use_v1_row_events       | OFF                            |
    
    +---------------------------------+--------------------------------+

    log_bin日志操作的常用命令

    查看日志文件:

    > show master status;
    
    +------------------+----------+--------------+------------------+-------------------+
    
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    
    +------------------+----------+--------------+------------------+-------------------+
    
    | mysql-bin.000003 |      154 |              |                  |                   |
    
    +------------------+----------+--------------+------------------+-------------------+

    创建新的日志文件:

     

    > flush logs;    # 创建一个新的日志文件用于记录
    
    Query OK, 0 rows affected (0.01 sec)
    
    > show master status;
    
    +------------------+----------+--------------+------------------+-------------------+
    
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    
    +------------------+----------+--------------+------------------+-------------------+
    
    | mysql-bin.000004 |      154 |              |                  |                   |
    
    +------------------+----------+--------------+------------------+-------------------+

     

    查看日志文件个数:

    > show binary logs;
    
    +------------------+-----------+
    
    | Log_name         | File_size |
    
    +------------------+-----------+
    
    | mysql-bin.000001 |       177 |
    
    | mysql-bin.000002 |       177 |
    
    | mysql-bin.000003 |       201 |
    
    | mysql-bin.000004 |       154 |
    
    +------------------+-----------+

    重置日志文件:

    > reset master;    # 重置日志文件后,日志文件恢复为最初的一个
    
    Query OK, 0 rows affected (0.01 sec)
    
    > show binary logs;
    
    +------------------+-----------+
    
    | Log_name         | File_size |
    
    +------------------+-----------+
    
    | mysql-bin.000001 |       154 |
    
    +------------------+-----------+

    MySQL数据的备份与恢复(通过log_bin日志)

      向mydb数据库的stu表中插入数据:

    > insert into stu values(1, '张三'),
    
        -> (2, '李四');
    
    Query OK, 2 rows affected (0.01 sec) Records: 2  Duplicates: 0  Warnings: 0

    查看log_bin日志文件

      因为log_bin日志文件是二进制文件,普通方式打开会乱码,用mysql自带的mysqlbinlog命令打开。重定向到more分页显示。

        root@ubuntu:/var/log/mysql#mysqlbinlog mysql-bin.000001 | more

      解码查看日志文件

        root@ubuntu:/var/log/mysql# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001    # 日志文件中记录着增删改的操作

    备份mydb数据库:

      root@ubuntu:~# mysqldump -u root -p mydb>mydb.sql

    # 继续增删改操作:
    
    > insert into stu values(3, '王舞');    # 增
    
    Query OK, 1 row affected (0.00 sec)
    
    > update stu set name='张三2' where id=1;    # 改
    
    Query OK, 1 row affected (0.00 sec)
    
    # 误操作删库:
    
    > delete from stu;
    
    Query OK, 3 rows affected (0.00 sec)
    
    # 先通过导入备份数据恢复到最近一次备份的时候的数据:
    
    root@ubuntu:~# mysql -u root -p mydb<mydb.sql    # 恢复最近的备份数据
    
    > select * from stu;    # 恢复了最近的备份数据
    
    +----+--------+
    
    | id | name   |
    
    +----+--------+
    
    |  1 | 张三   |
    
    |  2 | 李四   |
    
    +----+--------+

    然后再备份log_bin日志:

      root@ubuntu:/var/log/mysql# mysqlbinlog --stop-position=882 mysql-bin.000003 | mysql -u root -p    # 备份log_bin日志,停止点在删除前的位置点882

    > select * from stu;    # 数据库备份后执行的增、改操作的内容恢复
    
    +----+---------+
    
    | id | name    |
    
    +----+---------+
    
    |  1 | 张三2   |
    
    |  2 | 李四    |
    
    |  3 | 王舞    |
    
    +----+---------+
  • 相关阅读:
    javascript取最小值方法 apply
    c# 通过字符串获取与字符串同名的变量的值
    访问者地图 地址收藏
    自定义Dialog(一)
    android应用多主题
    maven setting 文件
    手动安装cloudera cdh4.2 hadoop + hbase + hive(三)
    手动安装cloudera cdh4.2 hadoop + hbase + hive(一)
    使用Hive读取Hbase中的数据
    手机共享电脑网络
  • 原文地址:https://www.cnblogs.com/wgbo/p/10112852.html
Copyright © 2011-2022 走看看