>

【88bifa必发唯一官网】linux系统下MYSQL备份苏醒,

- 编辑:www.bifa688.com -

【88bifa必发唯一官网】linux系统下MYSQL备份苏醒,

linux系统mysql数据库自动备份

数据库备份是非常重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少。

1. Mysql备份某个数据库的命令

 

一、 用命令实现备份

复制代码 代码如下:

1、建一个shell脚本 

MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份,下面假设要备份tm这个数据库:

################################################################## 
# 备份某个数据库 
################################################################## 

 

#mysqldump -u root -p tm > tm_050519.sql

# root 用户,创建备份目录 
mkdir -p /usr/local/cncounter/mysql_dump 
cd /usr/local/cncounter/mysql_dump 

   vi bak.sh 

按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_050519.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:

# 导出数据库,热备 
mysqldump -u root -pmypasssecret cncounter > cncounter_dump.sql.20140414_1333 

 

#mysqldump -u root -p tm | gzip > tm_050519.sql.gz

2. Mysql还原某个数据库的命令

  mysqldump -u用户名 -p密码 --database 数据库名 > data.sql 

系统崩溃,重建系统时,可以这样恢复数据:

复制代码 代码如下:

 

#mysql -u root -p tm < tm_050519.sql

################################################################## 
# 还原某个数据库 
################################################################## 
# 修改密码 
# mysqladmin -u root password "mypasssecret" 
# mysqladmin -u root password oldpass "mypasssecret" 

2、脚本授权 

从压缩文件直接恢复:

# 登录 
mysql -u root -pmypasssecret 

 

#gzip < tm_050519.sql.gz | mysql -u root -p tm

-- 热备只是备份数据库内部的表,以及数据 
use cncounter; 
source /usr/local/cncounter/mysql_dump/cncounter_dump.sql.20140414_1333; 
exit; 

   chmod x bak.sh 

当然,有很多MySQL工具提供更直观的备份恢复功能,比如用phpMyAdmin就很方便。但我认为,mysqldump是最基本、最通用的。

3. 使用crontab 定时备份Mysql

 

二、利用crontab,系统每天定时备份mysql数据库

3.1 备份脚本

3、使用crontab命令定期执行脚本 

内容提要】利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。

复制代码 代码如下:

 

利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。

##################################################################
# crontab 定时备份
##################################################################
#
# root 用户,创建执行脚本
mkdir -p /root/mysql_dump/data
cd /root/mysql_dump
touch mysql_back.sh
chmod 755 mysql_back.sh

   crontab -e 

1、创建保存备份文件的路径/mysqldata

# 编辑备份脚本
vim mysql_back.sh

 

#mkdir /mysqldata

################下面是备份脚本的内容
#!/bin/sh
# File: /root/mysql_dump/mysql_back.sh
# Database info
DB_NAME="cncounter"
DB_USER="root"
DB_PASS="mypasssecret"
# Others vars
# whereis mysqldump
# IS ` but not '
BIN_DIR="/usr/bin"
BCK_DIR="/root/mysql_dump/data"
DATE=`date %Y%m%d_%H%M%S`
# TODO
mkdir -p $BCK_DIR
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME
 > $BCK_DIR/$DB_NAME.dump_$DATE.sql

   在任务中输入: 

2、创建/usr/sbin/bakmysql文件

当然,执行的脚本也可以不用那么灵活: 其中行末尾的 反斜线() 的意思是shell 指令换行,如果写在单行内部,就不再需要.

 

#vi /usr/sbin/bakmysql

复制代码 代码如下:

   0 0 * * * /脚本路径/bak.sh 

输入

/usr/bin/mysqldump --opt -uroot -pmypasssecret cncounter
> /root/mysql_dump/data/cncounter.dump_`date %Y%m%d_%H%M%S`.sql

1、建一个shell脚本 vi bak.sh mysqldump -u用户名 -p密码 --database 数据库名 data.sql 2、脚本授权 chmod x bak.sh 3、使用...

rq=` date %Y%m%d `

dump出来的sql文件有可能很大,我们也可以开启 gzip 压缩,一般来说可以实现10倍压缩比例:也就是讲输出到文件的内容通过管道操作符让 gzip 程序处理一遍.

tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql

复制代码 代码如下:

或者写成

/usr/bin/mysqldump --opt -uroot -pmypasssecret cncounter | gzip
> /root/mysql_dump/data/cncounter.dump_`date %Y%m%d_%H%M%S`.sql.gz

rq=` date %Y%m%d `

3.2 添加到crontab

mysqldump --all-databases -u root -p密码 > /mysqldata/mysql$rq.sql

复制代码 代码如下:

/var/lib/mysql是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同

# 添加到crontab
crontab -e

/mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。

# 添加一行,root用户不需要指定执行的用户名,ESC,wq
1 1 * * * /root/mysql_dump/mysql_back.sh

3、修改文件属性,使其可执行

# 不一定需要重启crontab服务
# service crond restart

# chmod x /usr/sbin/bakmysql

3.3 crontab 简单说明

4、修改/etc/crontab

复制代码 代码如下:

#vi /etc/crontab

# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

在下面添加

# For details see man 4 crontabs

01 3 * * * root /usr/sbin/bakmysql

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

表示每天3点钟执行备份

可以发现,crontab 的执行周期有5个部分组成,其中第一个是分钟数,第二个是小时数,第三个是一个月中的第几天。。。 如果是 * 就表示每天都会调度。
user-name 部分,如果需要以其他用户调度,则可以指定,否则不能指定,比如 root 用户就不能指定 root,否则有调度日志,但是没有实际执行。

5、重新启动crond

. Mysql备份某个数据库的命令 复制代码 代码如下: ################################################################## # 备份某个数据库 #######################...

# /etc/rc.d/init.d/crond restart

完成。

这样每天你在/mysqldata可以看到这样的文件

mysql20040619.tar.gz

你直接下载就可以了。

cd /usr/local/mysql/bin/

mysqldump -u用户名 -p密码 --databases 库名 >/backdata/ddd07-11-15.sql

恢复语法

mysqladmin create target_db_name

mysql target_db_name < backup-file.sql

即 mysql 库名 < 文件名

完成,注意,-u后面没有空格, 你只需要把上面的中文换成你的相关信息就可以了!

一、...

本文由88bifa必发唯一官网发布,转载请注明来源:【88bifa必发唯一官网】linux系统下MYSQL备份苏醒,