Mysql备份:

库备份

1)库的备份

[root@localhost /]# mysqldump -uroot -p  db2 > /db2.sql

                                                                    库名    导出来的文件

库的还原

[root@localhost /]# mysql -uroot -p db2 < /db2.sql

                                                     得提前创建好db2库

2)库的备份

mysqldump -uroot -p123456 -B test > /tmp/test_B.sql    作用是在导出的文件中添加建库和切换库的语句。

                     库名    导出来的文件

(mysqldump -uroot -p123456 -B test|gzip  > /tmp/test_B.sql.gz  备份时压缩备份文件

备份多个库:

mysqldump -uroot -p123456 -B mysql zhang | gzip > /tmp/mul_B.sql.gz

                        多个库

库的还原:

mysql -uroot -p123456 < /tmp/test_B.sql     因此还原时不用提前创建好库并不用指定库名。

分库备份:

cat fenkubak.sh

#!/bin/sh

for dbname in `mysql -uroot -p123456 -e "show databases" | grep -Evi "database|information_schema|mysql"`

do

   mysqldump -uroot -p123456 -B --events $dbname|gzip > /tmp/${dbname}.sql.gz                                                  金庸新著

done

表备份:

1)表的备份

[root@localhost /]# mysqldump  -u  root  -p  db2  user >  db2_user.sql

                                                                         库名  表名    导出来的文件名(导出到当前目录下)

表的还原:(先切换库,再还原)

mysql>use db

mysql>source     /db2_user.sql

2)多个表备份

mysqldump -uroot -p123456 zhang t1 ming > /tmp/two_table.sql

                    库    多个表

表的还原:(先切换库,再还原)

mysql>use db

mysql>source     /tmp/two_table.sql


分库分表备份:

#!/bin/sh

USER=root

PASSWD=onetwothree

SOCKET=/data/3306/mysql.sock

MYLOGIN="mysql -u$USER -p$PASSWD -S$SOCKET"

MYDUMP="mysqldump -u$USER -p$PASSWD -S$SOCKET"

DATEBASE="$($MYLOGIN -e "show databases;"|egrep -vi "Data|_schema|mysql")"

for dbname in $DATEBASE

do

  TABLE="$($MYLOGIN -e "use $dbname;show tables;"|sed '1d')"

  for tname in $TABLE

  do

    MYDIR=/server/backup/$dbname/${dbname}_$(date +%F)

    [ ! -d $MYDIR ] && mkdir -p $MYDIR

    $MYDUMP $dbname $tname |gzip >$MYDIR/${dbname}_${tname}_$(date +%F).sql.gz

  done

done