批量清除过期的binlog释放磁盘空间

方案,总共24台db,一台台进去清理肯定不行,得需要写一个脚本,进行批量操作,方案思路大概如下

1,  建立双master列表masterlist; 一个master一行。

2,远程获取master db上面的binlog位置以及对应master的master主机名(也许是ip地址)

3,拿到binlog位置以及master主机名,然后ssh远程清理掉远程master上面的binlog

4, 采用shell for循环操作step 2以及step 3。

clearbinlog.sh脚本如下

[python] view plain copy print?

  1. for masterdb in `cat master.db.full`;do
  2. #1 echo get the binlog position infomation
  3. str_log_files=`ssh $masterdb "/opt/mysql/product/5.5.25a/bin/mysql -uroot --password="" -e \"show slave status\G;\" |grep -i master_Log_File "`
  4. echo $str_log_files;
  5. log_file=`echo $str_log_files | awk ‘{print $2}‘`;
  6. echo $log_file;
  7. #2 echo get the master ip address or master hostname
  8. db01tmp=`ssh $masterdb "  /opt/mysql/product/5.5.25a/bin/mysql  -uroot  --password=""  -e \"show slave status\G;\" |grep -i Master_Host  "`;
  9. db01=`echo $db01tmp | awk ‘{print $2}‘`
  10. #3 begin to clear the old binlog
  11. ssh $db01 "/opt/mysql/product/5.5.25a/bin/mysql  -uroot  --password="" -e \"purge master logs to ‘$log_file‘;\""
  12. #4 check the disk space for master
  13. ssh $db01 "df -h"
  14. echo " "
  15. echo " -- -- -- ";
  16. done;

OK,run sh脚本

sh clearbinlog.sh 就可以开始清理所有db的binlog了。

最后再次check disk space,执行check_disk.sh脚本,脚本内容如下:

[html] view plain copy print?

  1. for masterdb in `master.db.full`;do
  2. ssh  $masterdb "df -h" |grep -i mysqldatadir;
  3. done;

执行sh check_disk.sh开始check

时间: 2024-08-28 07:13:30

批量清除过期的binlog释放磁盘空间的相关文章

mongo删除表或库后,释放磁盘空间

参考文档: http://bbs.csdn.net/topics/390906498 2-硬盘空间不足,如何释放已删除的mongodb集合 https://segmentfault.com/q/1010000002414576 3-mongo剔除大表之后的操作 http://www.myexception.cn/open-source/1441621.html 4-mongodb拷贝数据库copyDatabase().实现释放磁盘空间的方法. http://www.111cn.net/datab

mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。

下面我们一起来看看关于mongodb拷贝数据库copyDatabase().实现释放磁盘空间的方法,希望文章对各位同学会有所帮助. db.copyDatabase("from","to","127.0.0.1:16161"); 将127.0.0.1上的from库.拷贝到to库. 这样做有一个额外的好处.就是from库中可能是删除过数据的库.看我们知道删除数据时磁盘空间是不会被释放的.参考博客里的另一篇文章:mongodb删除集合后磁盘空间不释放

MySQL删除数据几种情况以及是否释放磁盘空间【转】

MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM .truncate table其实有点类似于drop table 然后creat,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等.所以速度上应该是接近drop table的速度; 3.delet

mongodb 释放磁盘空间

db.copyDatabase("from","to","127.0.0.1:16161"); 将127.0.0.1上的from库.拷贝到to库. 这样做有一个额外的好处.就是from库中可能是删除过数据的库.看我们知道删除数据时磁盘空间是不会被释放的.参考博客里的另一篇文章:mongodb删除集合后磁盘空间不释放 肯能造成占用很大磁盘空间.虽然可以用    db.repairDatabase()修复数据.但这种方法有两个不好的地方.1.在生产上

MongoDB repairDatabase 释放磁盘空间

repairDatabase是官方文档中认为唯一可以回收硬盘空间的方法. repairDatabase is the appropriate and the only way to reclaim disk space. 虽然可以用 db.repairDatabase()修复数据.但这种方法有两个不好的地方.1.在生产上操作如果意外停止可能会造成数据无法恢复的危险.2.如果磁盘空间不足,小于现在这个db时间占有的空间,这种情况是用不了 db.repairDatabase()的. 注意,repai

如何批量清除128组节点db上面的过期的binlog,释放磁盘空间。(转)

如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了.大概思路:在 一台db跳转机上面, 写一个脚本,访问slave,远程获取正在复制的master上面的binlog位置, 然后再远程去purge master上面的binlog. 1,  建立slave dbserver列表 slavelist; 一个slave一行. 2,远程获取slave db上面的binlog位置以及slave的master主机名(也许是ip地址) 3,拿到binlog位置以及mast

清理:db上面的过期的binlog,释放磁盘空间。 (转)

如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了.大概思路:在 一台db跳转机上面, 写一个脚本,访问slave,远程获取正在复制的master上面的binlog位置, 然后再远程去purge master上面的binlog. 1,  建立slave dbserver列表 slavelist; 一个slave一行. 2,远程获取slave db上面的binlog位置以及slave的master主机名(也许是ip地址) 3,拿到binlog位置以及mast

mongodb drop不释放磁盘空间

点击(此处)折叠或打开 use demodb //使用demodb,以下假设操作的collection是foo db.foo.remove({"id":"123456"}) //删除一条数据 db.foo.remove() //删除foo中的所有记录,但是foo还存在,show collection还可以看到foo db.foo.drop() //删除foo这个collection,(show collection已经看不到foo了)但是查看数据文件发现大小不变,M

Linux 删除文件后空间不释放磁盘空间

在Linux操作系统下,有个没用的文件占用了400G,于是删除掉. [[email protected] log]# rm -rf messages [[email protected] log]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/sda3       545G  438G  101G  82% /tmpfs            32G     0   32G   0% /dev/shm/dev/sda1