自动备份MYSQL数据库删除五天前的旧档和上传到其他服务器
来源:互联网 发布:安卓机推荐2017 知乎 编辑:程序博客网 时间:2024/04/27 20:02
参考以下网页:
http://blog.csdn.net/daniel_ustc/article/details/9395971
http://www.opsers.org/server/linux-automatically-backup-the-mysql-shell-script-on-a-regular-basis.html
工作原理是使用mysql的mysqldump工具来导出数据库为.sql文件,然后将所有导出的文件打包归档。
然后我们在shell脚本中使用 scp命令把备份文件复制到另外一台备份机器。
一,备份脚本
二,排程
由于机器本身没有安装cron服务,先透过yum先安装
# yum install vixie-cron
# yum install crontabs
说明:
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
安装vixie-cron时,一般会自动加载安装crontabs
加入开机自动启动:
#chkconfig --level 35 crond on
#/sbin/service crond start
三,设置排程
#vi /etc/crontab
#backup mysql db
3 0 * * * root /home/backup/mysql_backup.sh
四,设置scp
本机执行
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 回车空密码
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
56:68:73:d4:be:a1:fe:4f:f6:9b:d9:a2:75:o1:d0:a0 root@ng
The key's randomart image is:
+--[ RSA 2048]----+
...
+-----------------+
#cd ~/.ssh
# scp id_rsa.pub root@172.16.1.1:/root/.ssh/authorized_keys
五,恢复数据库
恢复数据备份文件:
非压缩备份文件恢复:
#mysql -u root -p databasename < name2008010103.sql
从压缩文件直接恢复:
# zcat mrbs.2014-04-22_16_16_32.gz | mysql -uroot -ppassword -Dmrbs
其它问题:
# ./mysql_backup.sh
mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'information_schema' when using LOCK TABLES
指令增加如下:
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db --single-transaction | $GZIP -9 > "$fpath/$db.$time.gz"
--single-transaction
或
--skip-lock-tables
http://blog.csdn.net/daniel_ustc/article/details/9395971
http://www.opsers.org/server/linux-automatically-backup-the-mysql-shell-script-on-a-regular-basis.html
工作原理是使用mysql的mysqldump工具来导出数据库为.sql文件,然后将所有导出的文件打包归档。
然后我们在shell脚本中使用 scp命令把备份文件复制到另外一台备份机器。
一,备份脚本
点击(此处)折叠或打开
- #!/bin/sh
- # mysql_backup.sh: backup mysql databasesand keep newest 5 days backup.
- #
- # db_user is mysql username
- # db_passwd is mysql password
- # db_host is mysql host
- # —————————–
- db_user="root"
- db_passwd="ocs"
- db_host="localhost"
- # the directory for story your backup file.
- backup_dir="/home/backup/"
- # date formatfor backup file (dd-mm-yyyy)
- time="$(date +"%Y-%m-%d_%H_%M_%S")"
- today="$(date +"%Y-%m-%d")"
- fpath=$backup_dir$today
- echo $fpath
- if[ ! -d $fpath ];then
- mkdir $fpath
- fi
- # mysql, mysqldumpand some other bin's path
- MYSQL="/usr/bin/mysql"
- MYSQLDUMP="/usr/bin/mysqldump"
- MKDIR="/bin/mkdir"
- RM="/bin/rm"
- MV="/bin/mv"
- GZIP="/bin/gzip"
- # the directory for story the newest backup
- test ! -d "$backup_dir/bk/" && $MKDIR "$backup_dir/bk/"
- # check the directory for store backup is writeable
- test ! -w $backup_dir && echo"Error: $backup_dir is un-writeable." && exit 0
- # get all databases
- all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')"
- for dbin $all_db
- do
- $MYSQLDUMP -u $db_user-h $db_host -p$db_passwd $db--single-transaction| $GZIP -9 > "$fpath/$db.$time.gz"
- done
- #
- cd $backup_dir
- tar czf Mysql.$time.tar.gz $today
- rm -rf $today
- mv Mysql.$time.tar.gz $backup_dir/bk/
- #scp to other server
- scp $backup_dir/bk/Mysql.$time.tar.gz root@172.16.86.1:/var/www/html/work/bak/
- # delete the oldest backup
- #find $backup_dir -type f-mtime +4 -name "*.gz" -exec rm -f {} \;
- find $backup_dir/bk-name "*.gz"-type f -mtime+5 -exec rm-f {}\; > /dev/null 2>&1
- exit 0;
二,排程
由于机器本身没有安装cron服务,先透过yum先安装
# yum install vixie-cron
# yum install crontabs
说明:
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
安装vixie-cron时,一般会自动加载安装crontabs
加入开机自动启动:
#chkconfig --level 35 crond on
#/sbin/service crond start
三,设置排程
#vi /etc/crontab
#backup mysql db
3 0 * * * root /home/backup/mysql_backup.sh
四,设置scp
本机执行
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 回车空密码
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
56:68:73:d4:be:a1:fe:4f:f6:9b:d9:a2:75:o1:d0:a0 root@ng
The key's randomart image is:
+--[ RSA 2048]----+
...
+-----------------+
#cd ~/.ssh
# scp id_rsa.pub root@172.16.1.1:/root/.ssh/authorized_keys
五,恢复数据库
恢复数据备份文件:
非压缩备份文件恢复:
#mysql -u root -p databasename < name2008010103.sql
从压缩文件直接恢复:
# zcat mrbs.2014-04-22_16_16_32.gz | mysql -uroot -ppassword -Dmrbs
其它问题:
# ./mysql_backup.sh
mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'information_schema' when using LOCK TABLES
指令增加如下:
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db --single-transaction | $GZIP -9 > "$fpath/$db.$time.gz"
--single-transaction
或
--skip-lock-tables
0 0
- 自动备份MYSQL数据库删除五天前的旧档和上传到其他服务器
- 自动备份MySQL数据库并删除五天前旧档和上传到其它服务器
- 自动备份MySQL数据库并删除五天前旧档和上传到其它服务器
- Debian下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本
- Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本
- CentOS Linux自动备份MySQL数据库到远程FTP服务器并删除指定日期前的备份Shell脚本
- 服务器程序和数据库的定期备份,删除,传输到其他服务器上
- mysql数据库自动备份并上传到服务器
- 让linux每天定时备份MySQL数据库并删除五天前的备份文件
- linux用mysqldump每天定时备份MySQL数据库并删除五天前的备份文件
- 让linux每天定时备份MySQL数据库并删除五天前的备份文件
- 让linux每天定时备份MySQL数据库并删除五天前的备份文件
- 让linux每天定时备份MySQL数据库并删除五天前的备份文件
- Windows下通过FTP自动备份数据到服务器并删除指定天数前的备份
- window下备份数据库到LinuxFTP服务器上并自动删除7天前数据备份文件
- mysql自动备份数据库,同时ftp上传到指定服务器(scp远程获取本地备份)
- SQL SERVER 设置自动备份和删除旧的数据库文件
- SQL2005 自动备份和自动删除三天前的备份
- nodejs npm常用命令
- 关于genymotion的 unable to start the virtual device 问题整合
- 编写高效的CSS选择符
- Ajax-------第一天的基础
- 理解Angular中的$apply()和$digest()
- 自动备份MYSQL数据库删除五天前的旧档和上传到其他服务器
- 通过配置Flavors和自定义buildConfigField进行多个服务器地址打包
- QT中PRO文件写法的详细介绍!
- git学习
- Tomcat安装与使用
- 【Halcon】显示图片+opencv转halcon
- velocity基础教程--2自定义ResourceLoader实现字符模板
- 最近比较流行LUA闭包,顺便了解下原理并记录使用方式
- android greenDao 编译问题总结