MySQL可以支持Master,Slave之间的动态Replication。这里就不研究了。简单备份主要依靠mysqldump来实现。
1. 创建具有backup权限的帐号:
因为backup脚本会明码显示密码,所以权限越低越好,以下是进行backup所需的的最小权限(针对Mysql 5.x)
mysql> GRANT LOCK TABLES, SELECT, FILE, RELOAD, SUPER, SHOW VIEW,CREATE VIEW
> ON *.*
> TO ‘dba_backup‘ @localhost
> IDENTIFIED BY ‘password123‘;
> flush privileges;
> quit
这样密码为password123的用户dba_backup就建好了。
2. 编辑数据库备份脚本
1) 建一个备份目录 mkdir /var/backup
2) 编辑 mysql_backup.sh
#!/bin/sh
# mysql_backup.sh: backup mysql databases and keep newest 5 days backup.
# —————————–
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
db_user=”dba_backup“
db_passwd=”password123“
db_host=”localhost”
#mysql>show databases; to obtain the databases name, list the name below
#for the db you wish to backup. e.g. databases=”db1 db2 db3″
databases=”db1″
# the directory for story your backup file.
backup_dir=”/var/backup”
# date format for backup file (dd-mm-yyyy)
time=”$(date +”%d-%m-%Y”)”
######………$(date +”%d-%m-%Y”)…date…..
# mysql, mysqldump and some other bin’s path
#MYSQL=”$(which mysql)”
#MYSQLDUMP=”$(which mysqldump)”
#MKDIR=”$(which mkdir)”
#RM=”$(which rm)”
#MV=”$(which mv)”
#GZIP=”$(which gzip)”
#########………………………………..
# if the directory for storing backup does not exist and not writeable, quit
test ! -w $backup_dir && echo “Error: $backup_dir is un-writeable.” && exit 0
# otherwise make the directory to store the newest backup
test ! -d “$backup_dir” && mkdir “$backup_dir”
#####………..$backup_dir………..
# get all databases
for db in $databases
do
mysqldump -u $db_user -h $db_host -p$db_passwd $db | gzip -9 > “$backup_dir/$time.$db.gz”
done
#delete the oldest backup 7 days ago
find $backup_dir -name “*.gz” -mtime +7 |xargs rm -rf
exit 0;
3) chmod +x ./mysql_backup.sh
3. 添加到Cron
crontab -e
加入
0 5 * * * /root/mysql_backup.sh
每天凌晨5点执行数据库备份
因为3点留给Drupal的Cron(以www-data身份运行), 4点留给logrotate(系统默认设置)
积极投身于开源事业的发展与推广,希望能够贡献自己的一点微薄之力!
[整理] 参考网友写的一个 MySQL 全备份 SHELL 脚本
2009年03月26日 星期四 20:55
已经在地测试过了,可以运行.其中稍作修改即可应用.
MySQL 备份和恢复策略
备份策略 使用mysqldump备份数据库
1. 创建备份目录
Shell> mkdir /tmp/mysqlbackup
2. 设置crontab任务,每天执行备份脚本
shell> crontab -e
#每个星期日凌晨3:00执行完全备份脚本
#minute hour mday month wday command
0 3 * * 0 /root/MySQLBackup/mysqlFullBackup.sh>/dev/null 2>&1
Shell> mkdir /root/MySQLBackup
Shell> vi /root/MySQLBackup/mysqlFullBackup.sh
Shell> chmod 744 /rootMySQLBackup/mysqlFullBackup.sh
mysqlFullBackup.sh注释:
#!/bin/sh
# 这是是注释,建议在 FreeBSD 实际应用时删掉中文注释,以免产生乱码
# 绿色的内容请根据需要修改 # ALL
#备份所的库 # db user
# 数据库的用户,通常是有能执行 mysqldump 命令权限的用户 DBUser=root
# 数据库密码 DBPass=hy0kl
# db host
# 取得当前主机的主机名 DBHost=`hostname -s`
# make sure you already created the backup directory
# 使用前请确认已经创建了备份目录 BackupPath=/tmp/mysqlbackup
# the path of mysqld
# mysql 的安装目录,寻找 bin 目录下的 mysqldump 命令 DBbinPath=/usr/local/bin/mysqldump
# error record log file
# 错误报告文件 ErrorLog=${BackupPath}/error.txt
# 执行备份
if ${DBbinPath} -u${DBUser} -p${DBPass} --opt --default-character-set=utf8 --extended-insert=false --triggers -R --hex-blob --all-databases --flush-logs --delete-master-logs --delete-master-logs > ${BackupPath}"/"${DBHost}"-"`date "+%Y-%m-%d"`".sql" ; then # 删除六天前旧的备份文件 find ${BackupPath}"/" -mtime +6 -exec rm {} \; else # 生成错误报告,如果备份失败 echo "-------------------" >> ${ErrorLog} echo `date "+%Y-%m-%d"` >> ${ErrorLog} echo "-------------------\n" >> ${ErrorLog}
exit fi
|
|
1 |
|
2009年03月27日 星期五 09:58 | 回复 http://www.bsdlover.cn/html/14/n-14.html crontab不执行的解决办法crontab不 执行,一般都是因为路径的问题,把里面的命令全改成完整路径即可。不过我遇到过一次比较奇怪的问题,路径没有问题,在别的机器上能执行的,可是在这个机器 上死活不执行,后来发现是cron停掉了,可能是因为频繁的修改cron吧, /usr/sbin/cron stop; /usr/sbin/cron start;以后就ok了。
|
2 |
|
2010年11月04日 星期四 20:53 | 回复
写得不错,来顶一个!
|
姓 名: |
mlzboy |
内 容: |
|
验证码: |
请点击后输入四位验证码,字母不区分大小写
|
|
|
相关推荐
Ubuntu 下设置 MySQL 自动备份的实例 Ubuntu 是一个流行的 Linux 操作系统,MySQL 是一个流行的关系型数据库管理系统。在实际应用中,数据库的备份是非常重要的,以防止数据丢失或损坏。下面是一个在 Ubuntu 下...
服务器上没做数据库的自动备份,那你就等着删库跑路了,文章教你如何在ubuntu、centos服务器上自动备份mysql,按步骤复制粘贴即可!
通过以上步骤,你就成功地在Linux环境中配置了一个简单的MySQL自动备份系统。这个系统可以根据需求进行扩展,例如添加对多个数据库的备份、使用加密存储备份、进行增量或差异备份等。对于大型或高可用性环境,可能...
3. 自动备份: 通过Cron定时任务定期执行备份脚本,确保数据安全。 **五、MySQL双向同步** MySQL的双向同步通常使用复制功能来实现,分为主-从复制和主-主复制。这里我们关注主-主复制,使得两个MySQL实例可以同时...
### MySQL数据库备份与还原知识点详解 #### 一、MySQL数据库备份的重要性 在现代数据库管理中,备份是一项至关重要的任务。它不仅可以帮助我们防止因意外事件(如硬件故障、人为错误或恶意攻击)而导致的数据丢失...
以下是关于使用脚本在Ubuntu 16.04上自动安装MySQL 5.7的详细步骤和相关知识点。 首先,你需要确保你的系统是最新的。运行以下命令更新系统包列表和安装任何可用的更新: ```bash sudo apt-get update sudo apt-...
现在,系统将每天自动备份名为 `pw85` 的数据库,并将备份文件以 `mysqldata_bak_YYYY_MM_DD.tar.gz` 的格式存储在 `/home/mysql_data` 目录下。如果需要恢复数据,只需解压缩这个文件,然后将数据导入到MySQL数据库...
下面将详细介绍如何在Linux系统上设置MySQL数据库的自动备份。 首先,我们需要安装一些必要的工具。在大多数Linux发行版中,`mysqldump`是默认安装的一部分,它用于导出MySQL数据库为SQL文件。如果系统中未安装,...
MySQL 8.0.25 自动化安装部署指南旨在帮助用户高效地在服务器上配置和启动 MySQL 数据库服务,确保整个过程无需手动干预。在本文中,我们将深入探讨自动化安装和部署 MySQL 8.0.25 的关键步骤、注意事项以及最佳实践...
首先,确保你的Linux服务器上已经安装了MySQL服务。如果你的服务器还没有安装MySQL,你需要通过包管理器如`apt-get`(对于Ubuntu/Debian)或`yum`(对于CentOS/RHEL)来安装它。安装过程通常包括输入以下命令: ```...
### Ubuntu 20.04 PXE 网络自动化部署详细步骤 #### 一、概述 PXE(Preboot Execution Environment,预启动执行环境)是一种标准的客户端计算机通过网络从服务器下载并运行启动程序的技术。本文将详细介绍如何在...
本文详细介绍了如何在Ubuntu系统上卸载旧版MySQL并安装新版MySQL的过程。从卸载旧版MySQL开始,到安装新的MySQL服务器及客户端工具,再到检查MySQL服务的状态,每一步都至关重要。最后还提到了一些安全性和实用性的...
在Ubuntu操作系统上安装和配置MySQL是一项基础且重要的任务,尤其对于开发者和系统管理员而言。MySQL是一种流行的开源关系型数据库管理系统,广泛应用于各种Web应用程序。以下是详细的步骤和相关知识点: 1. **安装...
本文将详细介绍如何在Linux环境下设置自动备份MySQL数据库的方法。 首先,我们需要了解备份的类型。MySQL数据库备份通常分为全备和增量/差异备份。全备是备份所有数据库或指定数据库的所有表,而增量/差异备份只...
MySQL自动增量备份是数据库管理中的重要一环,它能够确保在数据发生损坏或丢失时能够快速恢复,从而保障系统的正常运行。以下将详细介绍如何在本地和远程环境下设置MySQL的自动增量备份。 首先,我们来看看本地备份...
在Ubuntu 16.04上安装MySQL是一个相对简单的过程,尤其对于熟悉Linux系统的用户来说。MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它广泛应用于网站开发、数据分析和其他各种应用程序。下面是详细步骤和...
在Ubuntu 18.00系统中安装MySQL 5.7是一个相对标准的过程,但...通过遵循以上步骤,你应该能够在Ubuntu 18.00系统上顺利安装和配置MySQL 5.7,同时解决常见的连接和权限问题。记得在整个过程中备份你的数据,以防万一。
完成上述步骤后,你将在Ubuntu上成功安装了MySQL,并且配置了基本的运行环境。记得定期更新MySQL的安全设置,以及备份重要的数据库,以确保数据安全。在日常使用中,根据需求调整my.cnf配置文件以优化性能。如果你...
### Ubuntu系统下MySQL数据库安装与配置详解 ...希望本文能够帮助你在Ubuntu系统上顺利安装和使用MySQL数据库。在未来的工作中,你还可以继续深入学习MySQL的相关高级特性,如复制、备份恢复等,以更好地满足项目需求。