MySql定時備份腳本


今天數據庫有掛了,真心傷不起!又花了一下午時間學習寫了一個定時保存數據的腳本文件,所以記錄一下!

1,每天4點備份mysql數據;

2,為節省空間,刪除超過3個月的所有備份數據;

3,刪除超過7天的備份數據,保留3個月里的 10號 20號 30號的備份數據;

[root@iZ28c26l6pkZ ~]# cd data

[root@iZ28c26l6pkZ ~]# cd /data/dbdata

[root@iZ28c26l6pkZ dbdata]# vim backup_mysq.sh

#輸入腳本文件

#

/alidata/server/mysql/bin/mysqldump --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql
find /data/dbdata/mysqlbak/ -mtime +7 -name '*[1-9].sql' -exec rm -rf {} \;
find /data/dbdata/mysqlbak/ -mtime +92 -name '*.sql' -exec rm -rf {} \;

#這里原來是這樣的!

######這個mysql.5.6會報一個錯誤

mysqldump -uroot -p123456 --all-databases  > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql
find /data/dbdata/mysqlbak/ -mtime +7 -name '*[1-9].sql' -exec rm -rf {} \;
find /data/dbdata/mysqlbak/ -mtime +92 -name '*.sql' -exec rm -rf {} \;

#######

測試一下

[root@iZ28c26l6pkZ dbdata]# ./backup_mysql.sh

-bash: ./backup_mysql.sh: Permission denied

###############原因是#####################

在官網文檔找到了緣由,大家可以點擊這里看看:http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html

MySQL users should use the following guidelines to keep passwords secure.

    When you run a client program to connect to the MySQL server, it is inadvisable to specify your password in a way that exposes it to discovery by other users. The methods you can use to specify your password when you run client programs are listed here, along with an assessment of the risks of each method. In short, the safest methods are to have the client program prompt for the password or to specify the password in a properly protected option file.

英文有點爛,但大概讀懂意思,翻譯過來大意是在命令行下如果要使用密碼可以在執行命令后的提示輸入里輸入密碼,或者在指定的安全文件內指定密碼。那安全文件時哪個呢?文檔對此給出了答案:

Store your password in an option file. For example, on Unix, you can list your password in the [client] section of the .my.cnf file in your home directory:

可以在my.cnf內指定,於是打開我的my.cnf,在[mysqldump]下增加:

user=root
password=root

然保存 運行我那個就可以了 

然后再寫一個定時

[root@iZ28c26l6pkZ ~]# crontab -e

###

0 4 * * * /data/dbdata/backup_mysql.sh

####

crontab: installing new crontab

然后就ok了

 #######mysql5.4遇到微問題##########

/usr/local/mysql/bin/mysqldump -uroot -pxxxxx --all-databases > all.sql

mysql用mysqldump導出數據庫時提示“-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.”

這是因為mysqldump默認是不備份事件表的,只有加了--events 才會,解決辦法:

加上--events --ignore-table=mysql.events參數即可;

/usr/local/mysql/bin/mysqldump -uroot -pxxxxx --events --ignore-table=mysql.events --all-databases > all.sql


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM