手动备份mysql命令
mysqldump -u root -p mydatabase > /root/mydatabase.sql
还原
mysql -u root -p mydatabase < /root/mydatabase.sql
自动备份脚本
backupdir=/home/databack
#备份文件后缀时间
#time=_` date +%Y_%m_%d_%H_%M_%S `
time=_` date +%Y_%m_%d `
#需要备份的数据库名称
db_name=mydatabase
#mysqldump命令使用绝对路径
/usr/bin/mysqldump $db_name | gzip > $backupdir/$db_name$time.sql.gz
#删除7天之前的备份文件
find $backupdir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据
#find
/data/dbdata/mysqlbak/
-mtime +7 -name
'*[1-9].sql'
-
exec
rm
-rf {} \;
#find
/data/dbdata/mysqlbak/
-mtime +92 -name
'*.sql'
-
exec
rm
-rf {} \;
find $backupdir -name $db_name"*[1-9].sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
vi /etc/my.cnf
[mysqldump] quick max_allowed_packet = 16M #在这里输入user及password,在执行mysqldump命令就不用输入用户名和密码了 user=root password=123456
运行dababack.sh报错:mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
解决办法:
vi /etc/my.cnf
在mysqld下添加一行代码 skip-grant-tables
问题解决。
设置定时任务
00 02 * * * /home/databack/databack.sh