mysql的备份-完全备份

mysql的备份分为:完全备份,增量备份

记录下完全备份吧。

建立backup.sh,内容如下

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


建议使用增量备份

你可能感兴趣的:(mysql的备份-完全备份)