Mysql数据库备份和还原

来源:互联网 发布:域名如何绑定服务器 编辑:程序博客网 时间:2024/05/01 08:22

1. 命令备份和还原数据库

1.1命令备份数据

1备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

2备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

 

3直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

 

4备份MySQL数据库某个()

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

 

5同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2databasename3 > multibackupfile.sql

 

6仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

 

7备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

1.2命令还原数据库

    1还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

2还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

例如:恢复我们实验室的数据库,到40上有备份文件的目录去执行:

gunzip < backupfile.sql.gz |mysql –uroot(这样就行了)

 

3将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql–host=*.*.*.* -C databasename

 

   4)将多个数据库同时还原

gunzip < backupfile.sql.gz | mysql -uroot (这里是我们的项目中的还原数据库)因为是多个数据库在一个压缩包里面,所以不能用各个数据库的namepassword去还原,也不能写具体到那个数据库。

   5)单独的数据库恢复

mysql -uaqtas -paqtas websim < ams_websim_dump_0910.sql

gunzip < ams_websim_dump_0910.sql.gz |mysql -uaqtas -paqtas websim

2. 程序自动备份数据库

2.1备份数据

以下是一个数据库备份的.sh文件

#!/bin/bash

#

#Backup database

#

# bakup directory

export BACK_DIR=/home/Jenny/backup(申明备份文件存放的位置)

 

# mysql user name & password

database_user=aqtas

database_pass=aqtas

database_name_aqtas=aqtas

database_name_aqvue=aqvue(需要备份的两个数据库)

hostname=10.1.10.40

 

# get current time

current_time=`date +"%Y%m%d%H%M%S"`

(%Y ,数字, 4 ;%m, 数字(01……12);%d月份中的天数, 数字(00……31);

%H 小时(00……23) ;%M(00.......59);%S(00……59))

# generate bakup file name for database

database_bakup_aqtas="aqtas-sql-bak_${current_time}.sql"(备份文件的名称)

database_bakup_aqvue="aqvue-sql-bak_${current_time}.sql"

 

# generate bakup file name for database(可以备份成压缩包的格式)

database_bakup_aqtas="aqtas-sql-bak_${current_time}.sql.gz"

database_bakup_aqvue="aqvue-sql-bak_${current_time}.sql.gz"

 

# bakup database

#backup aqtasdb,aqvuedb

mysqldump -h${hostname} -u${database_user} -p${database_pass} ${database_name_aqtas} > $BACK_DIR/${database_bakup_aqtas}

 

mysqldump -h${hostname} -u${database_user} -p${database_pass} ${database_name_aqvue} > $BACK_DIR/${database_bakup_aqvue}

 

# bakup database(这里也可以把多个数据库备份成一个压缩文件)

#backup aqtasdb,aqvuedb

mysqldump -h${hostname} -u${database_user} -p${database_pass} $databases {database_name_aqtas} {database_name_aqvues} | gzip > $BACK_DIR/${database_bakup_aqtas}

 

 

# restore database

# localhost databse name&password

localhost_database_username_aqtas=aqtas

localhost_database_password_aqtas=aqtas

localhost_database_username_aqvue=aqvue

localhost_database_password_aqvue=aqvue

 

#restore aqtasdb,aqvuedb to localhost

mysql -u $localhost_database_username_aqtas -p $localhost_database_password_aqtas <$BACK_DIR/${database_bakup_aqtas}

mysql -u $localhost_database_username_aqvue -p $localhost_database_password_aqvue <$BACK_DIR/${database_bakup_aqvue}

 

# delete bakup files 7 days ago

#find $BACK_DIR -name "jira*" -ctime +7 -type f -exec rm -f {} \;

#find $BACK_DIR -name "testlink*" -ctime +7 -type f -exec rm -f {} \;

2.2还原数据库

        gunzip < backupfile.sql.gz | mysql -uroot (这里是我们的项目中的还原数据库)因为是多个数据库在一个压缩包里面,所以不能用各个数据库的namepassword去还原,也不能写具体到那个数据库。

分享到: