mysqldump mysql数据库备份详解linux命令行

导出的sql文件,可以是任意名字,但是一般要使它在名称上可以区分出来

导出数据使用的用户名和其密码必须正确,且有操作该导出的数据库的权限
(一般使用root及其密码)

基础参数:
-u 连接数据库的用户
-p 连接数据库密码
-P连接数据库端口号

【1】导出全部数据库

mysqldump -u用户 -p密码 --events --ignore-table=mysql.events --all-databases > all.sql

mysqldump默认是不备份事件表的,只有加了–events 才会备份,否则会报错:
Skipping the data of table mysql.event. Specify the --events option explicitly.

【2】只导出数据库表结构不导出任何数据

mysqldump -u用户 -p密码 --all-databases --no-data > all.sql

【3】导出整个数据库及其数据

mysqldump -u用户 -p密码 数据库名称 > dbname.sql

【4】只导出数据库结构不含数据

mysqldump -u用户 -p密码 -d 数据库名 > dbname.sql

【5】导出数据库中的某数据表及其数据

mysqldump -u用户 -p密码 数据库名 数据表名 > tablename.sql

【6】只导出数据库中的某数据表的表结构不含数据

mysqldump -u用户 -p密码 -d 数据库名 数据表名 > tablename.sql

【7】导出某个数据库的多个数据表

mysqldump -u用户 -p密码 数据库名1 数据表名1 数据表名2 > tablename.sql

【8】导出多个数据库及其数据(导出哪些数据库,添加哪个数据库名)

mysqldump -u用户 -p密码 --databases 数据库名1 数据库名2 > dbname.sql

【9】导出全部数据库时,不导出某个数据库中指定的数据表

指定忽略多个表时,需要重复多次;每个表必须同时指定数据库和表名

mysqldump -u用户 -p密码 --all-databases --ignore-table=数据库名.表名 > notablename.sql

【10】备份压缩

mysqldump -u用户 -p密码 --all-databases | gzip > all.sql.gz

【11】在线不锁表,热备份

mysqldump -u用户 -p密码 --events --ignore-table=mysql.events --all-databases --skip-lock-tables --single-transaction --master-data=2 --flush-logs > all.sql

补充:

–skip-lock-tables ,不锁表

–single-transaction,适用于InnoDB表,会将导出操作封装在一个事务内,使得导出的数据是一个一致性快照。

为确保得到有效的备份文件,使用该参数备份期间应避免使用DDL(ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.)语句

– lock-all-tables导出时锁定所有表,可保证导出数据与数据库的一致性。但是,在线上数据库备份时,很少使用。

–master-data=2表示在dump过程中记录主库的binlog和pos点,并在dump文件中注释掉这一行

–master-data=1表示在dump过程中记录主库的binlog和pos点,并在dump文件中不注释掉这一行,恢复时会执行

当master_data和 single_transaction 同时使用时,会先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出.

 

本文由 我爱PHP169 作者:admin 发表,其版权均为 我爱PHP169 所有,文章内容系作者个人观点,不代表 我爱PHP169 对观点赞同或支持。如需转载,请注明文章来源。

发表回复