Mysql管理之二进制日志文件的管理

Mysql的二进制日志记录的是所有mysql数据库发生变更的信息,因此对数据库非常重要,二进制日志的作用我概括了一下主要包含如下几个方面:

1、可以用于数据库基于时间点的还原。

2、可以用来分析数据库发生更改的情况,比如程序的bug导致数据库数据更改等等。

3、二进制日志还可以用来重建数据库。

从上面的几点可以看出mysql的二进制日志还是非常重要的,在日常工作中,二进制日志又往往非常占空间,尤其是写入比较频繁的数据库,二进制日志更是增长迅猛。那么在DBA的日常工作中如何来管理二进制日志呢?接下来就来详细叙述一下我在日常工作中是如何管理二进制日志的。

我是通过如下方式来管理二进制日志的:

1.  通过shell脚本每小时做一次二进制日志flush操作

2.  通过shell脚本每小时进行一次二进制日志的备份工作,将一小时新产生的二进制日志迁移到nfs备份服务器,并压缩存放,脚本最后附上!

3.  在my.cnf配置文件中加上expire_logs_days = 5,这样mysql会自动删除5天前的日志。

设置步骤如下:

1、搭建NFS备份服务器。

搭建NFS非常简单,如下几步就可以完成:

yum -y install setup-*  initscripts-*  nfs-utils-*  portmap-*  quota-*

编辑/etc/exports,添加一行二进制日志的备份条目:

vim /etc/exports

/data/binlog_backup 192.168.3.135(rw,sync,no_root_squash)  *(ro)

让192.168.3.135这个IP可以读写,其他的只读。

配置完成之后重新启动portmap和nfs就可以了:

/etc/rc.d/init.d/portmap restart

/etc/rc.d/init.d/nfs restart

至此服务器端的NFS就设置完成了。接下来设置客户端就是我们的mysql服务器如何挂载:

/etc/rc.d/init.d/portmap start

mkdir /data/binlog_backup

mount -t nfs 192.168.3.92:/data/binlog_backup /data/binlog_backup

如果不启动客户端的portmap的话挂载的时候会报:mount.nfs: Input/output error,记得将mount的命令添加到/etc/rc.local中,不然下次重启服务器后会导致备份二进制日志失败。

2、将脚本放到mysql数据库上,并设置计划任务为每小时运行一次。

脚本内容如下:

cat bin_log_magment.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #Purpose:管理mysql二进制日志,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以后恢复和问题分析!
  3. #Author:carl_zhang
  4. #Date:2012-5-15
  5. #some variables 一些参数
  6. #定义数据库的相关信息
  7. USERNAME=root
  8. PASSWORD=zhang@123
  9. HOSTIP=localhost
  10. MYSQL=/usr/local/mysql/bin/mysql
  11. #设置二进制日志的路径
  12. BIN_LOG_DIR=/data/dbdata
  13. #设置二进制日志备份的路径
  14. BIN_LOG_BACKUP_DIR=/data/binlog_backup
  15. #定义一个常量来跳过最后一个日志文件
  16. COUNT=0
  17. #定义一个日志文件
  18. LOGFILE=$BIN_LOG_BACKUP_DIR/binlog_backup.log
  19. #找出二进制日志的名称前缀
  20. BINLOG_PREFIX=`grep "log-bin=" /etc/my.cnf | awk -F'=' '{print $2}'`
  21. #检查backup.file文件是否存在,第一次跑的时候如果没有这个会报错
  22. if [ ! -f "$BIN_LOG_BACKUP_DIR/backup.file" ];then
  23. touch $BIN_LOG_BACKUP_DIR/backup.file
  24. fi
  25. #运行文件比较之前先执行一下flush logs
  26. $MYSQL -u$USERNAME -p$PASSWORD -h$HOSTIP -e "flush logs"
  27. #比较二进制日志文件列表和已备份的二进制文件列表
  28. FILE_LIST=`comm -23 $BIN_LOG_DIR/$BINLOG_PREFIX.index $BIN_LOG_BACKUP_DIR/backup.file`
  29. #统计日志文件的个数
  30. FILE_COUNT=`comm -23 $BIN_LOG_DIR/$BINLOG_PREFIX.index $BIN_LOG_BACKUP_DIR/backup.file|wc -l`
  31. #程序正文
  32. #开始备份二进制日志文件
  33. for file in $FILE_LIST
  34. do
  35. BINLOG_NAME=`basename $file`
  36. let COUNT=$COUNT+1
  37. if [ $COUNT -eq $FILE_COUNT ];then
  38. #跳过最新的那个二进制日志文件
  39. echo "skip the lastest binlog file" >> $LOGFILE
  40. else
  41. cp $BIN_LOG_DIR/$BINLOG_NAME $BIN_LOG_BACKUP_DIR/
  42. if [ $? -eq 0 ];then
  43. echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME backup success" >> $LOGFILE
  44. else
  45. echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME backup faild, Please check it out" >> $LOGFILE
  46. exit 5
  47. fi
  48. #对二进制日志进行压缩存放
  49. gzip $BIN_LOG_BACKUP_DIR/$BINLOG_NAME
  50. if [ $? -eq 0 ];then
  51. echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME gzip success" >> $LOGFILE
  52. else
  53. echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME gzip faild, Please check it out" >> $LOGFILE
  54. exit 5
  55. fi
  56. echo ./$BINLOG_NAME >> $BIN_LOG_BACKUP_DIR/backup.file
  57. fi
  58. done

如果大家需要使用这个脚本,请自行更改对应的配置信息,比如IP地址,用户名密码、以及目录等等。

注意因为这里有mysql的用户名和密码,需要将脚本的权限设置成700,使用命令为:

chmod 700 bin_log_magment.sh

手工运行没有问题以后,添加到计划任务中去:

00 */1 * * *  /var/script/bin_log_magment/bin_log_magment.sh >/dev/null 2>&1

3、设置my.cnf配置文件,加上expire_logs_days = 5,并重启mysql。

这个就不详细叙述了,是个人都会了!

转载于:https://www.cnblogs.com/feihongwuhen/archive/2012/05/15/7169845.html

Mysql管理之二进制日志文件的管理相关推荐

  1. mysql二进制日志管理_MYSQL二进制日志管理脚本

    MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...

  2. mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...

  3. mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...

    mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...

  4. mysql二进制日志被删除无法启动_mysql二进制日志文件出错导致mysql服务无法启动...

    今天打开phpmyadmin发现连不上mysql数据库,重启mysql启动不起来,查看日志发现如下错误 mysqld: File '.\mysql-bin.000370' not found (Err ...

  5. 天堂2启动mysql就没了_启用二进制日志文件进行mysql数据恢复

    启用二进制日志文件进行mysql数据恢复 查看文件/etc/my.cnf中[mysqld]配置块的是否配置log-bin 项,用来记录数据库更改的日志, 然后设置要需要写入日志的数据库或者不要写入日志 ...

  6. 【CyberSecurityLearning 31】Linux网络信息查看与配置、日志文件的管理、备份及日志服务器的搭建

    目录 网络地址配置 1.确认系统的网卡信息和ip地址 2.关闭networkmanager服务 3.配置网络地址 通过配置文件配置网络地址(让配置的IP地址永久生效) 实验: 日志文件的管理与应急分析 ...

  7. MySQL二进制日志文件的用法_数据恢复

    文章目录 开启二进制日志功能 关闭/打开二进制日志记录 刷新二进制日志文件 查看二进制日志文件的存储位置 利用二进制日志文件恢复数据的本质 二进制日志提取/导出到脚本文件中 查看当前二进制日志的最后一 ...

  8. mysql二进制日志开启方法_mysql中如何开启binlog?开启二进制日志文件?binary log?

    需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启my ...

  9. C/C++开发,c/c++如何实现根据磁盘空间管理自己的日志文件案例

    目录 一.本地日志文件管理设计 二.案例实现 三.案例代码设计 四.编译实现 五.附录说明 一.本地日志文件管理设计 在前文"c++中如何利用VA_LIST 和单体模式,构建自己的log小系 ...

  10. 认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)

    binlog即binary log,二进制日志文件,也叫作变更日志(update log).它记录了数据库所有执行的DDL和DML等数据库更新事件的语句,但是不包含没有修改任何数据的语句(如数据查询语 ...

最新文章

  1. Weex快速上手教程(Weex Tutorial)
  2. Python小技巧——快速给大量文件命名
  3. 通过数组名遍历整个数组
  4. 京东商城上市带来的利与益
  5. sed -i 单引号中嵌套双引号_【函数应用】IF函数的多层嵌套
  6. Word2vec 详解
  7. 利用js实现文件上传
  8. sigmoid画图_博弈画图软件(Window版和MAC版)
  9. AI(adobe illustrator)怎么设置导出图片的像素尺寸
  10. 重庆地区外卖店铺分析系统的设计与实现
  11. html全景直播播放器,Insta360 Player(全景视频播放器) V2.3.6 官方版
  12. python用余弦相似度计算英文文本相似度
  13. 二次元高清无水印壁纸
  14. 求助:MATLAB中实现卷积运算和理论分析中的卷积运算有什么区别?
  15. 如何配置一台以机器学习、深度学习为用途的工作站?
  16. 2020小迪培训(第21天 WEB 漏洞-文件上传之后端黑白名单绕过)
  17. 机器学习——回归——一元线性回归
  18. phpunit 学习
  19. 【翻译篇】❀ 10. 链路负载均衡 ❀ FortiADC 管理手册 5.3.0
  20. [趣谈网络协议学习] 08 世界这么大,我想出网关:欧洲十国游与玄奘西行

热门文章

  1. MAC硬盘空间减少的隐藏杀手,VM到底是什么?
  2. 利用 Finder 清理Mac旧档案,释放空间
  3. iMovie for Mac如何创建分屏效果?
  4. 英国大学diploma(证书)期末考试挂科
  5. Vue cli 入门补充
  6. test luasql's postgresql driver performance (not better than pgbench)
  7. lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】
  8. [导入]警告:不能将项目“project”中的依赖项“file”复制到运行目录,因为它将改写引用“file”。...
  9. 虎牙面试官:String长度有限制吗?是多少?我:这太...
  10. 史上最便捷搭建 Zookeeper 的方法!