mysqldump命令搭配source命令完成数据库迁移备份
mysqldump 命令使用
需保证mysqld在运行中,
这个命令的目的是将数据库导出到文件中,例如
mysqldump -uusername -ppassword database > db.sql
注意该命令不是在MySQL客户端(即MySQL命令行)执行的,而是在系统命令执行,
该命令默认会在当前所在的文件夹下(即执行命令的文件夹下)生成对应的 .sql 文件,或者指定保存在某个文件夹下,例如,> /home/ubuntu/db.sql
source命令使用
在MySQL客户端中,使用 source 命令可以执行一个 .sql 文件,(前提是该数据库存在,并且被选中)例如
source 文件路径(/home/ubuntu/db.sql)
这两个命令搭配使用,可以快速完成数据库的迁移操作。
在docker中使用的注意事项
在实际项目开发中,可能会使用docker来启动MySQL服务,此时docker中的MySQL服务无法通过source 命令直接读取到外部的文件来进行数据库迁移操作,以下是解决方法
1. 使用 docker cp 命令将外部的 .sql 文件复制到容器内部,
docker cp /home/ubuntu/db.sql mysql(容器名称):/db.sql
然后再执行 source 命令,source /db.sql 即可
2. 使用挂载卷的方式,将 SQL 文件挂载到容器中的目录下,使得主机文件在容器内直接可访问
docker run -d --name mysql -p 3306:3306 -v /home/ubuntudb.sql:/docker-entrypoint-initdb.d/db.sql -e MYSQL_ROOT_PASSWORD=123456 mysql