mysql数据库备份和导出实践

一、一般的数据库备份与还原

docker exec -i a63163746faf mysqldump -uroot -pcpic1024 --single-transaction mbc-crawl > /tmp/mbc-crawl.sql
a63163746faf代表mysql容器ID,因为我的mysql服务是用docker部署的,所以需要先连接docker容器。当然也可以先进入docker容器再进行备份操作,例如:

docker exec -it a63163746faf /bin/bash

mysqldump -uroot -pcpic1024 --single-transaction mbc-crawl > /tmp/mbc-crawl.sql

略有不同的是前面的备份(导出)命令是在主机上操作的,所以导出的sql文件是在主机的/tmp目录下。而后面的命令是先进入容器后执行的备份命令,所以导出的sql文件是在容器的/tmp目录下。

如果想把容器里的sql文件拷贝到主机上,可以先退出容器回到主机,然后执行下面的命令

docker cp a63163746faf:/tmp/mbc-crawl.sql  /tmp/mbc-crawl.sql

把sql文件导入(还原)到新的数据库中,首先是创建新数据库,然后执行命令source /tmp/mbc-crawl.sql

 

二、压缩备份与还原

压缩备份:

docker exec -i a63163746faf mysqldump -uroot -p -P3306 -q -Q --set-gtid-purged=OFF --default-character-set=utf8 --hex-blob --skip-lock-tables --databases mbc-crawl 2>/tmp/abc.err |gzip >/tmp/mbc-crawl.sql.gz

压缩还原:

这个需要在容器里面执行,所以需要先把压缩文件拷贝到容器里,比如放到/tmp目录下。然后执行下面的命令
gunzip -c /tmp/mbc-crawl.sql.gz |mysql -uroot -pcpic1024 -vvv -P3306 --default-character-set=utf8 mbc-crawl 1> /tmp/abc.log 2>/tmp/abc.err

注意备份和还原的数据库名称必须是相同的,比如这里的mbc-crawl。否则会还原失败。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章