linux实现mysql数据库每天自动定时备份

      自身是使用阿里云服务器操作,操作不同视情况而定。

1、查看磁盘空间情况:

既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败,数据丢失的恶果!

存储到当前磁盘这是最简单,却是最不推荐的;服务器有多块硬盘,最好是把备份存放到另一块硬盘上;有条件就选择更好更安全的存储介质;

# df -h

2、创建备份文件

mkdir /data/mysqlbackup
cd /data/mysqlbackup 

3、编写备份脚本代码: vi dbbackup.sh 

#!/bin/sh
#-h后面改为自己的ip
#-u后面改为自己的数据库账号
#-p后面改为自己的数据库密码,有字符需要加""
#demand_database改为你想要备份的数据库名称
echo "开始备份数据库";
#导出所有数据库 username 替换为自己mysql登陆名,password123登陆密码
## mysqldump -h106.14.XX.XXX -uusername -p"password123" --all-databases > /data/mysqlbackup/databaseName`date +%Y-%m-%d_%H%M%S`.sql;

#导出指定数据库并压缩
mysqldump -h106.14.XX.XXX -uusername -p"password123"  demand_database| gzip > /data/mysqlbackup/databaseName`date +%Y-%m-%d_%H%M%S`.sql.gz;

 cd  /data/mysqlbackup;

#删除3天前的备份文件
 rm -rf `find . -name '*.sql.gz' -mtime 3`;


echo "备份完成";

4、更改备份脚本权限 

chmod +x dbbackup.sh 

5、用crontab定时执行备份脚本代码: crontab -e 

若每天晚上2点00备份,添加如下代码:

00 2 * * * /data/mysqlbackup/dbbackup.sh    

具体时间可以自己设置请参考http://man.linuxde.net/crontab 

6、测试任务是否执行

任务执行失败了,可以通过以下命令查看任务日志:

tail -f /var/log/cron

7、mysqldump  几个参数

mysqldump  -uroot –proot --quick --no-create-info --extended-insert --default-character-set=utf-8 test>test.sql

参数说明:
--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出当前cache到内存中
--no-create-info:不要创建create table语句
--extended-insert:使用包括几个values列表的多行insert语法,这样文件更小,IO也小,导入数据时会非常快
--default-character-set=utf-8:按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码

8、错误情况 :

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

1、密码有字符是否加了双引号"password";

2、添加自身ip地址:-h106.14.XX.XXX


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章