centos自动备份mysql

手动备份mysql命令

mysqldump -u root -p mydatabase > /root/mydatabase.sql

备份数据库排除某些数据表
mysqldump -u root -p mydatabase --ignore-table=数据库.表1 --ignore-table=数据库.表2 > /root/mydatabase.sql(排查表的数据库名称必须有)

备份指定表
mysqldump -u root -p mydatabase --tables table_name1 table_name2 table_name3 > /root/mydatabase.sql(排查表的数据库名称必须有)

还原

mysql -u root -p mydatabase < /root/mydatabase.sql

还原数据库时指定字符集
mysql -u root -p --default-character-set=utf8 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

 
 
 
 
 
 
posted @ 2019-02-15 13:51  day959  阅读(881)  评论(0编辑  收藏  举报