centos自动备份mysql

时间:2022-02-09 01:49:28

手动备份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