zoukankan      html  css  js  c++  java
  • mysql定时备份、二进制日志

    备份命令:

      备份全部数据库:mysqldump -uroot -proot --all-databases > /backups/data.sql

      备份指定数据库:mysqldump -uroot -proot --databases test01 > e:/test01.sql

      备份远程指定数据库:mysqldump -h192.168.3.47 -uroot -proot --databases test > e:/test.sql

    修改配置文件my.conf:为了在使用mysqldump命令时能省略输入密码执行 mysqldump --all-databases > /backups/data.sql

      

    定时备份,创建任务 shell:

    #!/bin/bash
    # 文件名
    dd=`date +"%Y%m%d%H%M%S"` # 保存备份个数 number=15 # 备份保存路径 backup_dir=/usr/local/mysql/mysql57/backups # 将要备份的数据库 database_name=test # 如果文件夹不存在则创建 if [ ! -d $backup_dir ]; then mkdir -p $backup_dir; fi # 执行备份命令 mysqldump --defaults-extra-file=/etc/my.cnf $database_name > $backup_dir/$database_name-$dd.sql # 写创建备份日志 echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt # 找出需要删除的备份 delfile=`find $backup_dir -name "*.sql" | head -1` # 判断现在的备份数量是否大于$number count=`find $backup_dir -name "*.sql" | wc -l` if [ $count -gt $number ] then # 删除最早生成的备份,只保留number数量的备份 rm $delfile # 写删除文件日志 echo "delete $delfile" >> $backup_dir/log.txt fi

      添加权限:chmod +x backups.sh

      创建定时任务:

        crontab -e 输入命令后回车,进入vim 编辑模式,增加如下配置

          0 1 * * * /usr/local/mysql/mysql57/backups.sh  每天1点执行

        crontab -l 显示crontab文件(显示已设置的定时任务)

        crontab -r 删除crontab文件(删除定时任务)

        crontab -ir 删除crontab文件提醒用户(删除定时任务)

        service crond start //启动服务
        service crond stop //关闭服务
        service crond restart //重启服务
        service crond reload //重新载入配置
        service crond status //查看服务状态

    mysql二进制日志:

      二进制日志(Binary Log)也可叫作变更日志(Update Log),是 MySQL 中非常重要的日志。主要用于记录数据库的变化情况,即 SQL 语句的 DDL 和 DML 语句,不包含数据记录查询操作。

      如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。

      结合定时备份,可以很大程度应对数据库数据丢失。

      查看二进制功能是否开启,默认是关闭的:SHOW VARIABLES LIKE 'log_bin';

      启动和设置二进制日志:

        在配置文件中添加 log-bin 选项来开启二进制日志

          [mysqld]
          log-bin=/dir/[filename]

          其中,dir 参数指定二进制文件的存储路径;filename 参数指定二进制文件的文件名,其形式为 filename.number,number 的形式为 000001、000002 等。

          每次重启 MySQL 服务后,都会生成一个新的二进制日志文件,这些日志文件的文件名中 filename 部分不会改变,number 会不断递增。如果启动失败,检查一下 /dir 是否有权限(chown -R mysql:mysql /usr/local/mysql/mysql57/bin_log)

          除了 filename.number 文件,MySQL 还会生成一个名为 filename.index 的文件,这个文件存储着所有二进制日志文件的列表,可以用记事本打开该文件。

        查看二进制日志文件内容

          mysqlbinlog filename.number

        二进制日志还原数据库的命令

          mysqlbinlog filename.number | mysql -uroot -proot

          使用 mysqlbinlog 命令进行还原操作时,必须是编号(number)小的先还原。例如,mylog.000001 必须在 mylog.000002 之前还原。

        my.ini 中的 [mysqld] 组下面有几个设置参数是关于二进制日志的

          expire_logs_days=10    定义 MySQL 清除过期日志的时间
          max_binlog_size=1​00M     定义单个文件的大小限制

      实际工作中,二进制日志文件与数据库的数据文件不放在同一块硬盘上,这样即使数据文件所在的硬盘被破坏,也可以使用另一块硬盘上的二进制日志来恢复数据库文件。两块硬盘同时坏了的可能性要小得多,这样可以保证数据库中数据的安全。

  • 相关阅读:
    linux 查看系统版本
    SSL协议详解
    DIV+CSS圆角边框
    初识CoreData与详解
    initWithCoder: 与initWithFrame:的区别
    RAC初体验
    NSNotificationKVOlockdelegate的区别和用法
    Objective-O Runtime 运行时初体验
    UUID
    Swift微博编写感
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/15369087.html
Copyright © 2011-2022 走看看