mysqldump是MySQL数据库自带的导出sql工具,可以导出原生sql,方便后续使用。
创建备份用户
1 2 3 4 5 6 7
| CREATE USER 'backup'@'%' IDENTIFIED BY 'password';
Grant select,lock tables,show view,trigger,event on database.* to 'backup'@'%';
ALTER USER 'backup'@'%' IDENTIFIED BY 'password';
|
备份格式
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名 > 文件名.sql
|
备份压缩
mysql导出的文件是字节流,可以通过管道进行压缩。
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名 | gzip > 文件名.sql.gz
|
解压:
1
| gzip < 文件名.sql.gz > 文件名.sql
|
如果cpu性能比较差,建议不压缩,或者备份完成后再压缩,不然备份速度非常慢
备份指定库
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql
|
备份同个库多个表
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名 --tables 表1 表2 .... > 文件名.sql
|
备份所有库
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --all-databases > 文件名.sql
|
附带drop表或库的备份
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --add-drop-table --add-drop-database 数据库名 > 文件名.sql
|
这样导入的时候,如果存在对应的库或表,会被先删除再导入。
备份结构,不备份数据
1
| mysqldump -h主机名 -P端口 -u用户名 -p密码 --no-data --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql
|
备份不锁表,记录binlog位置
1
| mysqldump -uroot -ppassword -hlocalhost -P3306 --master-data=2 --single-transaction --skip-tz-utc --all-databases > /tmp/db.sql
|