mysql的备份-彻底备份

mysql的备份分为:彻底备份,增量备份 mysql

记录下彻底备份吧。 sql

创建backup.sh,内容以下 shell

date_str=`date +%Y%m%d`
cd /date2/backup
/usr/local/mysql/bin/mysqldump -h localhost -u root -ppassword --socket=/tmp/mysql.sock -R -E -e\
        --max-allowed-packet=1048076 --net-buffer-length=16384 database\
        | gzip > /data2/backup/db_$date_str.sql.gz
在shell下\换行
创建目录
data2/backup
这个目录用于存放备份文件
文件格式db_2012-10-11.sql.gz

上述shell含义:
/usr/local/mysql/bin/mysqldump           mysqldump的命令
-h localhost     --host=host_name,-h host_name
从给定主机的MySQL服务器转储数据。默认主机是localhost。
-u root -ppassword
 --password[=password],-p[password]
链接服务器时使用的密码。若是你使用短选项形式(-p),不能在选项和密码之间有一个空格。若是在命令行中,忽略了--password或-p选项后面的 密码值,将提示你输入一个。
--socket=/tmp/mysql.sock
  --socket=path,-S path
当链接localhost(为默认主机)时使用的套接字文件。
-R
    --routines,-R
在转储的数据库中转储存储程序(函数和程序)。使用---routines产生的输出包含CREATE PROCEDURE和CREATE FUNCTION语句以从新建立子程序。可是,这些语句不包括属性,例如子程序定义者或建立和修改时间戳。这说明当重载子程序时,对它们进行建立时定义者应设置为重载用户,时间戳等于重载时间。

若是你须要建立的子程序使用原来的定义者和时间戳属性,不使用--routines。相反,使用一个具备mysql数据库相应权限的MySQL帐户直接转储和重载mysql.proc表的内容。
-E
 --extended-insert,-e
使用包括几个VALUES列表的多行INSERT语法。这样使转储文件更小,重载文件时能够加速插入。
 --max-allowed-packet=1048076
 max_allowed_packet
客户端/服务器之间通讯的缓存区的最大大小。最大为1GB。
 --net-buffer-length=16384
   net_buffer_length
客户端/服务器之间通讯的缓存区的初始大小。当建立多行插入语句时(如同使用选项--extended-insert或--opt),mysqldump建立长度达net_buffer_length的行。若是增长该变量,还应确保在MySQL服务器中的net_buffer_length变量至少这么大。
还可使用--set-variable=var_name=value或-O var_name=value语法设置变量。然而,如今不同意使用该语法。
   ---database,-B
转储几个数据库。一般状况,mysqldump将命令行中的第1个名字参量看做数据库名,后面的名看做表名。使用该选项,它将全部名字参量看做数据库名。
CREATE DATABASE IF NOT EXISTS db_name和USE db_name语句包含在每一个新数据库前的输出中。
| gzip > /data2/backup/db_$date_str.sql.gz
将文件存储至/data2/backup,并gzip

能够将当天的备份文件传输至另外一台ftp 数据库

ftp -n<<!
open 192.168.1.5
user whua password
binary
hash
cd /data/back
lcd /data2/backup/db
prompt
mput db_$date_str.sql.gz
close
bye
!

删除一个星期前备份数据 缓存

date_l_m=`date   -d   -7day   +%Y%m%d`
rm -f  /data2/backup/db/db_$date_l_m.sql.gz


能够在天天晚上12点执行.bachup.sh 服务器


建议使用增量备份 socket

相关文章
相关标签/搜索