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 对观点赞同或支持。如需转载,请注明文章来源。