`

使用mysqldump备份数据库

 
阅读更多

mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。 mysqldump 比直接拷贝要慢些。关于mysqldump的更详细解释见最后的附录。

对于中等级别业务量的系统来说,备份策略可以这么定:第一次 完全 备份,每天一次增量备份,每周再做一次 完全 备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave 机器上做备份。

备份策略布置:

(1) 、创建备份目录

Shell> mkdir /tmp/mysqlbackup

Shell> mkdir /tmp/mysqlbackup/daily

(2) 、启用二进制日志

采用 binlog 的方法相对来说更灵活,省心省力,而且还可以支持增量备份。

启用 binlog 时必须要重启 mysqld。首先,关闭 mysqld,打开  /etc/ my.cnf,加入以下几行:

[mysqld]

log-bin

然后启动 mysqld 就可以了。运行过程中会产生  HOSTNAME-bin .000001 以及  HOSTNAME-bin .index,前面的文件是 mysqld 记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除。关于 binlog  的更详细 信息请查看手册。

(3)、配置SSH密钥登录,用于将MySQL备份传送到备份服务器(如果备份服务器为Windows,请跳过此部)。

1)、在MySQL所在服务器(192.168.0.20)生成SSH密钥

[root@lab ~]#  ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):    //直接回车

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:

c2:96:9f:2d:5a:8e:08:42:43:35:2f:85:5e:72:f8:1c root@lab

 

2)、在备份服务器(192.168.0.200)上创建目录,修改权限,并传送公钥。

[root@lab ~]#  ssh 192.168.0.200 "mkdir .ssh;chmod 0700 .ssh"

The authenticity of host '192.168.0.200 (192.168.0.200)' can't be established.

RSA key fingerprint is 37:57:55:c1:32:f1:dd:bb:1b:8a:13:6f:89:fb:b8:9d.

Are you sure you want to continue connecting (yes/no)?  yes

Warning: Permanently added '192.168.0.200' (RSA) to the list of known hosts.

root@192.168.0.200's password:       //输入备份服务器的root密码

[root@lab ~]#  scp .ssh/id_rsa.pub 192.168.0.200:.ssh/authorized_keys2

root@192.168.0.200's password: 

id_rsa.pub                                             100%  218     0.2KB/s   00:00    

3)、测试SSH登录

[root@lab ~]#  ssh 192.168.0.200        //测试SSH登录

Last login: Fri Nov 16 10:34:02 2007 from  192.168.0.20

[root@lib ~]# 

 

(4)、设置crontab任务,每天执行备份脚本

shell> crontab -e

#每个星期日凌晨3:00执行完全备份脚本

0 3 * * 0 /root/MySQLBackup/mysqlFullBackup.sh >/dev/null 2>&1

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /root/MySQLBackup/mysqlDailyBackup.sh >/dev/null 2>&1

 

mysqlFullBackup.sh注释:

#!/bin/sh

# Name:mysqlFullBackup.sh

# PS:MySQL DataBase Full Backup.

# Write by:i.Stone

# Last Modify:2007-11-17

#

# Use mysqldump --help get more detail.

#

# 定义变量,请根据具体情况修改

# 定义脚本目录

scriptsDir=`pwd`

# 定义数据库目录

mysqlDir=/usr/local/mysql

# 定义用于备份数据库的用户名和密码

user=root

userPWD=111111

# 定义备份目录

dataBackupDir=/tmp/mysqlbackup

# 定义邮件正文文件

eMailFile=$dataBackupDir/email.txt

# 定义邮件地址

eMail=alter@somode.com

# 定义备份日志文件

logFile=$dataBackupDir/mysqlbackup.log

DATE=`date -I`


echo "" > $eMailFile

echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile

cd $dataBackupDir

# 定义备份文件名

dumpFile=mysql_$DATE.sql

GZDumpFile=mysql_$DATE.sql.tar.gz


# 使用mysqldump备份数据库,请根据具体情况设置参数

$mysqlDir/bin/mysqldump -u$user -p$userPWD \

--opt --default-character-set=utf8 --extended-insert=false \

--triggers -R --hex-blob --all-databases \

--flush-logs --delete-master-logs \

--delete-master-logs \

-x > $dumpFile


# 压缩备份文件

if [[ $? == 0 ]]; then

  tar czf $GZDumpFile $dumpFile >> $eMailFile 2>&1

  echo "BackupFileName:$GZDumpFile" >> $eMailFile

  echo "DataBase Backup Success!" >> $eMailFile

  rm -f $dumpFile


# Delete daily backup files.

  cd $dataBackupDir/daily

  rm -f *


# Delete old backup files(mtime>2).

  $scriptsDir/rmBackup.sh


# 如果不需要将备份传送到备份服务器或备份服务器为Windows,请将标绿的行注释掉

# Move Backup Files To Backup Server.

#适合Linux(MySQL服务器)到Linux(备份服务器)

  $scriptsDir/rsyncBackup.sh

  if (( !$? )); then

    echo "Move Backup Files To Backup Server Success!" >> $eMailFile

    else

    echo "Move Backup Files To Backup Server Fail!" >> $eMailFile

  fi


else

  echo "DataBase Backup Fail!" >> $emailFile

fi

# 写日志文件

echo "--------------------------------------------------------" >> $logFile

cat $eMailFile >> $logFile

# 发送邮件通知

cat $eMailFile | mail -s "MySQL Backup" $eMail

分享到:
评论

相关推荐

    Winform中使用mysqldump实现选择部分表定期备份mysql数据库源码.rar

    Winform中使用mysqldump实现选择部分表定期备份mysql数据库源码.rar Winform中使用mysqldump实现选择部分表定期备份mysql数据库源码.rar Winform中使用mysqldump实现选择部分表定期备份mysql数据库源码.rar Winform...

    Mysql数据备份与mysqldump增量备份.docx

    备份策略有两种,一种是直接拷贝数据库文件,另一种是使用 mysqldump 备份数据库。本文主要对 MyISAM 表做备份恢复。 直接拷贝数据文件是最直接、快速、方便的备份方法,但缺点是基本上不能实现增量备份。为了保证...

    mysqldump备份mysql数据库.docx

    备份数据库 mysqldump 提供了多种备份方式,可以备份整个数据库、指定的表或指定的数据。 1. 导出整个数据库的结构和数据:`mysqldump -u "root" -p "pw" [db_Name] > d:\*.sql` 2. 只导出表结构:`mysqldump -u ...

    mysql自动定时备份数据库的方法

    方法一:使用 mysqldump 工具备份数据库 mysqldump 是 MySQL 附带的一个工具,用于将数据库导出为 SQL 文件。可以使用 mysqldump 来备份数据库,并将备份文件保存到指定的目录下。 优点: * 备份和恢复操作比较...

    mysqldump java远程备份mysql数据库 cmd备份

    MySQL是世界上最流行的关系型数据库管理系统之一,而mysqldump工具是MySQL提供的一个命令行实用程序,用于备份数据库或导出数据。在这个5.6.12版本中,我们可以利用它进行远程数据库备份,这对于数据库管理和维护至...

    数据库应用技术:数据备份与恢复.pptx

    四、使用Mysqldump备份数据库 Mysqldump是 MySQL 数据库备份的常用工具。可以使用 mysqldump 对某个表进行完全备份,也可以对某个库进行完全备份。备份时需要指定用户名、密码、数据库名、表名等信息。 例如,使用 ...

    技术干货 利用zabbix监控mysqldump定时备份数据库是否成功.pdf

    本文将详细介绍如何使用Zabbix这一强大的监控工具来监控mysqldump备份过程,以确保数据库备份的可靠性。 1. **创建测试数据库和备份脚本** - 首先,在MySQL中创建一个名为`test`的数据库,并在其中创建一个名为`...

    详解 linux mysqldump 导出数据库、数据、表结构

    导出完整的数据库备份: mysqldump -h127.0.0.1 -P3306 -uroot -ppassword --add-locks -q dbname > dbname.sql 说明:–add-locks:导出过程中锁定表,完成后回解锁。-q:不缓冲查询,直接导出至标准输出  导出...

    users.mdb配置文件

    1、配置一个数据库 创建一个 Maria DB 数据库,名为 Contacts,要求: 将users.mdb导入到数据库 ,数据库只能被 localhost 访问 ...使用mysqldump备份数据库Contacts,备份时压缩,文件名:Contacts_年-月-日.sql.gz

    使用mysqldump命令导出MYSQL数据库

    `mysqldump`是一个强大的命令行工具,它允许用户备份、导出MySQL数据库的数据和结构。这个工具对于开发人员和系统管理员来说是必不可少的,因为它提供了在不同环境之间迁移数据的能力,也可以用于定期备份,防止数据...

    定时备份数据库,及问题总结 亲测有效

    【定时备份数据库】是保障数据安全的重要措施,尤其是在企业级应用中,确保数据的完整性和可恢复性至关重要。本文将详细介绍如何在Linux环境下,利用MySQL数据库的`mysqldump`工具实现定时备份,并提供了一个亲测...

    mysql数据库备份还原实战操作步骤-mysqldump备份还原

    一、备份数据库 mysqldump 是 MySQL 提供的一种备份工具,使用 mysqldump 可以将 MySQL 数据库中的数据导出到一个文件中,以便在需要时恢复数据库。下面是使用 mysqldump 进行备份的基本语法: mysqldump -h ${sql...

    mysqldump备份数据库时排除某些库的实例

    在MySQL环境中,`mysqldump` 是一个用于备份数据库的实用程序,它能够将数据库中的数据和结构转换为SQL语句,以便于备份或在其他服务器上恢复数据。在某些场景下,例如在设置主从复制时,我们可能只需要备份部分...

    技术干货 利用zabbix监控mysqldump定时备份数据库是否成功.docx

    【技术干货】利用Zabbix监控mysqldump定时备份数据库是否成功 在现代企业中,数据库备份是一项至关重要的任务,确保数据的安全性和可恢复性。本文将详细介绍如何使用开源监控系统Zabbix监控mysqldump工具执行的...

    利用Zabbix监控mysqldump定时备份数据库状态.docx

    这里的关键在于使用`mysqldump`命令备份数据库,并将结果的返回值写入到`/tmp/bak_result.txt`文件中。如果备份成功,则该文件中的值为`0`;若备份失败,则为非`0`值。 **注意:**确保给予脚本执行权限: ```bash ...

    java 定时备份数据库

    如果你的项目使用了SSM,你可以在Spring的配置文件中定义一个定时任务,使用Spring的`@Scheduled`注解,这样可以将数据库备份任务集成到Spring容器中。例如: ```java import org.springframework.scheduling....

    mysql使用mysqldump备份和还原

    首先,`mysqldump`备份数据库的基本命令格式如下: ```shell mysqldump [选项] [数据库名] > [备份文件名.sql] ``` 这里的选项包括但不限于: - `-u [username]`:指定连接数据库的用户名。 - `-p[password]`:...

    mysql数据库单表备份和调用mysqldump.exe进行数据库备份

    单表备份指的是仅备份数据库中的某个表。这种备份方式适用于只需要备份特定表的情况。使用`mysqldump`进行单表备份的方法如下: ```bash mysqldump -u [username] -p [database_name] [table_name] > [output_file]...

    MySQL数据库常用命令

    使用mysqldump备份数据库 mysqldump 是 MySQL 数据库备份的命令行工具。使用 mysqldump,可以备份整个数据库、单个数据库、单个表甚至单个数据。mysqldump 的基本语法为:`mysqldump -h host -u user -p password ...

    [技术干货] 利用zabbix监控mysqldump定时备份数据库是否成功.docx

    接下来,我们需要编写一个shell脚本(bak.sh),用于执行mysqldump备份。脚本通常包含以下内容: ```bash #!/bin/bash mysqldump -u 用户名 -p密码 -h 数据库IP test > /tmp/test_$(date +\%Y\%m\%d\%H\%M).sql ...

Global site tag (gtag.js) - Google Analytics