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 databasename2 databasename3 > 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 (这里是我们的项目中的还原数据库) 因为是多个数据库在一个压缩包里面,所以不能用各个数据库的name和password去还原,也不能写具体到那个数据库。
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 (这里是我们的项目中的还原数据库) 因为是多个数据库在一个压缩包里面,所以不能用各个数据库的name和password去还原,也不能写具体到那个数据库。