在项目实施的过程中,经常会面临数据库迁移,导出和导出数据,如果用普通的mysql客户端备份,时间较长且容易出错。那么mysql快速备份及迁移,就成为数据库迁移的重中之重。
下面介绍我在项目实现过程中用到的方法。
1.为了方便,这边直接将需要执行的SQL语句写成脚本dbbak.sh。脚本内容如下:
#!/bin/sh
#bak dir
BACKUP_ROOT=备份路径
BACKUP_FILEDIR=$BACKUP_ROOT
#current date
DATE=$(date +%Y%m%d)
###backup db
DB_NAME=dfdb
DB_USER="用户名"
DB_PASS="密码"
DB_HOST="IP地址"
cd /usr/local/mysql/bin
#DB_NAME=dbname
./mysqldump -h$DB_HOST -P12306 -u$DB_USER -p$DB_PASS --default-character-set=utf8 -q -B dbname | gzip > $BACKUP_FILEDIR/dbname-$DATE.sql.gz
2.备份数据库,执行上述脚本文件,会生成 dbname-xxx.sql.zip 文件,即是备份好的数据库文件
3.下载备份好的 dbname-xxx.sql.zip 文件,上传到新的服务器中,然后执行gzip -d dbname-xxx.sql.zip 进行解压
4.切换到mysql 的 路径下, 比如 cd /usr/local/mysql/bin 然后 root 账户登录 ./mysql -u root -p 到 mysql> 的状态。
5.查看所有的数据库 show databases;(特别注意,如果迁移过来的数据的需要更改数据库名称,就要在第3步前修改备份文件里的数据库的名称)
如果有相同的数据库名称,需要先备份之前的数据库,否则后面数据迁移的过程中,会覆盖掉之前的数据。
6.创建新的数据库名称: CREATE DATABASE dbname;
7.切换到当前的数据库 :use dbname;
8.在mysql> 状态 source /mnt/dbname.sql //替换为上面解压的数据库文件实际路径及文件名称
至此数据库备份迁移完毕!