#!/bin/bash backupdir=/home/q/www/yshow.qunar.com/backup/ time=` date +%Y%m%d%H ` /home/q/mysql/cellar/mysql57/bin/mysqldump -h127.0.0.1 -P3306 -u root -pYSHOW yshow | gzip > $backupdiryshow_$time.sql.gz exec /bin/su -c "find $backupdir -name "yshow_*.sql.gz" -type f -mtime +5 -delete"
问题 5.6 版本在命令行中输入密码报错mysql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
解决办法:
my.cnf中添加配置git
[mysqldump] user=your_backup_user_name password=your_backup_password
修改完配置文件后, 只须要执行mysqldump 脚本就能够了。备份脚本中不须要涉及用户名密码相关信息。github
编写sql语句检验是否出错sql
DELETE FROM _mysql_session_store WHERE expires < TIMESTAMPDIFF(SECOND, '1970-1-1 8:0:0', NOW())*1000;
使用存储过程建立函数数据库
mysql> show variables like '%event_sche%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
```
没有的话使用 set global event_scheduler=1;
开启
重启数据库生效需求改 my.cnf
文件bash
[mysqld] event_scheduler=ON //这一行加入mysqld标签下
mysql> delimiter // mysql> create procedure clear_expire() -> begin -> DELETE FROM _mysql_session_store WHERE expires < TIMESTAMPDIFF(SECOND, '1970-1-1 8:0:0', NOW())*1000; -> end// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ;
mysql> create event clear_expire -> on schedule every 1 day -> on completion preserve disable -> do call clear_expire(); Query OK, 0 rows affected (0.00 sec)
查看定时任务状态 & 开启或关闭session
mysql> SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS; +--------------+---------------------+----------------+----------------+----------+ | event_name | event_definition | interval_value | interval_field | status | +--------------+---------------------+----------------+----------------+----------+ | clear_expire | call clear_expire() | 1 | DAY | DISABLED | +--------------+---------------------+----------------+----------------+----------+ 1 row in set (0.00 sec) mysql> alter event clear_expire on completion preserve enable; Query OK, 0 rows affected (0.00 sec)
清理过时数据函数