## 数据库备份归档,还原
#### mysqldump
``` Bash
# 仅导出表结构
mysqldump -h localhost -uroot -p -d database table > table.sql
# 导出表结构和数据‘
mysqldump -h localhost -uroot -p database table --where="id<100" > table.sql
# 或者
mysqldump -uroot -p --databases db1 db2 --tables tb1 tb2 tb3 > table.sql
```
#### mysql
``` Bash
mysql -uroot -p -Damdb < table.sql
```
#### shell 定时备份归档
backup.sh
``` Bash
#!/bin/bash
# 要备份的数据库名,多个数据库用空格分开
dbname=(db1 db2)
# 备份文件要保存的目录
basepath='/opt/backup/mysqldata/'
#用户名及密码
dbuser='root'
dbpwd='xxxxxx'
if [ ! -d "$basepath" ]; then
mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${dbname[*]}
do
# 备份数据库生成SQL文件
/bin/nice -n 19 /usr/bin/mysqldump -h127.0.0.1 -u$dbuser -p$dbpwd --databases $db > $basepath$db-$(date +%Y%m%d).sql
# 将生成的SQL文件压缩
/bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d%H%M).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
#将备份文件copy到远程备份机
#/usr/bin/scp -r $basepath$db-$(date +%Y%m%d%H%M).sql.tar.gz root@xxx.xxx.xxx.xxx:/opt/mysqlbackup/
# 删除7天之前的备份数据
find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
done
# 删除生成的SQL文件
rm -rf $basepath/*.sql
```