#!/bin/sh
mysql -ureplication -p123456 -h 127.0.0.1 -P3301 -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY)';
mysql -ureplication -p123456 -h 127.0.0.1 -P3302 -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY)';
exit
===================
在Mysql中,如果启用mysql-bin日志记录,则Mysql的变更修改都会被记录到日志文件中:
mysql> show global variables like ‘%bin%’;
+———————————+———————-+
| Variable_name | Value |
+———————————+———————-+
| binlog_cache_size | 32768 |
| innodb_locks_unsafe_for_binlog | OFF |
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 104857600 |
| sync_binlog | 0 |
+———————————+———————-+
7 rows in set (0.00 sec)
如果使用了配置文件,则可以修改 /etc/my.cnf 把里面的log-bin这一行注释掉,重启mysql服务即可关闭bin日志的记录。
一个客户的数据库,积累了大量的bin日志:
mysql> show binary logs;
+——————+———–+
| Log_name | File_size |
+——————+———–+
| mysql-bin.000064 | 3175623 |
| mysql-bin.000065 | 104857696 |
| mysql-bin.000066 | 30124812 |
| mysql-bin.000067 | 104857882 |
+——————+———–+
240 rows in set (0.00 sec)
如果没有主从复制,可以通过reset master的方式,重置数据库日志,清除之前的日志文件:
mysql> reset master;
Query OK, 0 rows affected (8.51 sec)
但是如果存在复制关系,应当通过PURGE的方式来清理bin日志:
语法如下:
PURGE {MASTER | BINARY} LOGS TO ‘log_name’
PURGE {MASTER | BINARY} LOGS BEFORE ‘date’
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
例如:
PURGE MASTER LOGS TO ‘mysql-bin.010′;
PURGE MASTER LOGS BEFORE ’2008-06-23 15:00:00′;
清除3天前的 binlog
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
BEFORE变量的date自变量可以为’YYYY-MM-DD hh:mm:ss’格式。MASTER和BINARY是同义词。
如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。
要清理日志,需按照以下步骤:
1. 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
2. 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
3. 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。
4. 制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)
5. 清理所有的日志,但是不包括目标日志,因为从服务器还要跟它同步
常用的命令:
mysql>show slave hosts — 查看所有连接到Master的Slave信息
mysql>show master status — 查看Master状态信息
mysql>show slave status — 查看Slave状态信息
mysql>show binary logs — 查看所有二进制日志
mysql>show binlog events [IN log_file] — 查看二进制日志中的事件
分享到:
相关推荐
总结起来,本文介绍了一个实用的Linux Shell脚本,用于定时清理MySQL的Locked进程,有效地提升了数据库的稳定性和效率。结合`crontab`,我们能够实现对MySQL的自动维护,这对于大型网站或业务系统来说至关重要,确保...
MySQL数据库在Linux环境下的定时备份是确保数据安全和业务连续性的重要环节。下面将详细介绍如何通过自定义的Shell脚本和Linux的定时任务(Cron)来实现这一目标。 首先,确保你的Linux服务器上已经安装了MySQL服务...
本文主要介绍的是Linux使用定时任务每周定时清理45天以前日志。服务器每天会产生很大的日志文件,为了不使硬盘被日志文件塞满,因此需要定期清理日志文件。这时我们可以写一个shell脚本用来清理某个路径下45天以前的...
本文将深入解析如何配置和使用一个名为“linux下mysql定时备份整理.pdf”的脚本,该脚本能够帮助你设置每日凌晨的MySQL数据库备份,并自动清理超过5天的旧备份。 首先,我们需要了解脚本的基本结构。此脚本主要由...
总的来说,通过上述步骤,你可以在Linux上设置一个自动化的MySQL数据库备份系统,同时确保旧备份文件得到定期清理。记得定期检查备份的完整性和正确性,确保在需要时能够恢复数据。这是一项重要的系统维护任务,对...
在Linux环境下,实现MySQL数据库的每日自动定时备份是一项基本的运维任务。下面将详细介绍如何在Linux上设置这个功能。 首先,理解备份的必要性至关重要。备份的主要目的是预防数据丢失,这可能是由于人为错误、...
1. **编写备份脚本**(如`backup.sh`):这个脚本可能包含了备份数据库的命令,例如使用mysqldump(对于MySQL)或pg_dump(对于PostgreSQL)等工具。脚本可能还会包括压缩备份文件、清理旧备份等功能。 ```bash #...
- **binlog文件说明**:MySQL会自动生成名为`HOSTNAME-bin.000001`的二进制日志文件,记录所有数据更新操作,以及对应的索引文件`HOSTNAME-bin.index`。 3. **设置定时任务(crontab)** - **完全备份**:设置每周...
/usr/local/mysql/bin/mysql -A MAIN -u root -pdmm2009 (*) FROM JHF_USER_LOGIN_LOG WHERE UPDATE_DATE (CURRENT_DATE - INTERVAL 3 DAY);' DELETE FROM JHF_USER_LOGIN_LOG WHERE UPDATE_DATE (CURRENT_DATE - ...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mysql/bin:/opt/php7/bin:/opt/memcached/bin:/root/bin ``` 然后在 crontab 文件中使用这个环境变量,如下: ``` * * * * * ...
log-bin=mysql-bin binlog_format=mixed ``` 这两行分别定义了二进制日志的开启和日志格式。为了禁用二进制日志,你需要在这两行前面添加`#`号进行注释,如下所示: ``` #log-bin=mysql-bin #binlog_format=...
LogFile=/root/back/mysql/mysqlbak.log DATE=$(date +%Y%m%d%H%M%S) # 输出日志信息 echo " " >> $LogFile echo " " >> $LogFile echo "-------------------------------------------" >> $LogFile echo $(date +...
在高并发环境下,使用PHP脚本配合MySQL可以定期检查并清理长时间运行的进程。你可以创建一个名为`mysqld_kill_sleep.sh`的脚本,用PHP定时执行,自动杀死那些等待时间超过特定阈值(比如30秒)且不是由`root`用户...
通过这些脚本,你可以实现对Linux系统文件和MySQL数据库的自动备份,同时定期清理旧的备份文件,确保磁盘空间的有效利用。记住,安全备份是系统稳定运行的关键,因此务必定期检查和测试备份的完整性和可恢复性。
使用`mysqldump`进行全量备份后,如果需要进行增量备份,必须启用MySQL的二进制日志功能(`log-bin`)。在进行备份时,使用`--single-transaction`、`--flush-logs`和`--master-data=2`选项,这样不仅能获取到数据...
这些任务可能包括但不限于备份数据库、清理缓存、定时发送邮件等。利用Crontab(简称为crontab)工具来设置定时任务是一种非常常见且有效的方法。本篇将详细介绍如何在CentOS系统中通过Crontab来实现PHP脚本的定时...
本文将详细介绍如何利用Shell脚本在Linux系统上实现MySQL数据库的定时自动备份,并通过FTP协议上传至远程服务器。 #### 目标需求分析 目标是开发一个脚本,该脚本能定期执行MySQL数据库的备份,并将这些备份文件...
- 应用日志:使用`xtrabackup --apply-log`或`innobackupex --apply-log`将备份文件与备份后发生的事务同步,使其达到一致状态。 - 压缩备份:为了节省存储空间,备份文件通常会通过gzip或bzip2进行压缩。 - 验证...