Mysqldump mysql
Mysqldump客户端程序执行逻辑备份,能够生产一组SQL语句,这些语句能够执行重现原始数据库对象定义和表数据;它能够转存一个或多个数据库进行备份或者转移到其余数据库。Mysqldump命令也能生成csv文件或其余分隔符的文本,后者XML格式文件;sql
Mysqldump必须有SELECT 选项for dumptable,SHOW VIEW权限for 存储视图,TRIGGER 存储触发器;shell
导入dump文件的时候,你必须有这些语句的执行权限;数据库
性能和可伸缩性考虑安全
Mysqldump的优势包括查看或编辑输出前的方便和灵活性,你能够为了开发或者DBA工做克隆一个数据库,或者生产轻量级的测试数据库。对于大量的数据,即便备份花费时间少,可是恢复的时候也会花费大量时间;服务器
调用语法socket
数据量大的状况下,推荐物理备份,以原有格式备份数据文件,而且快速导入;性能
若是你的表主要是InnoDB的,或者Myisam和InnoDB混合的,考虑使用Mysqlbackup命令。它为InnDB提供最小的中断性能。Mysqlbakcup也能够备份Myisam和其余引擎;测试
Mysqldump如今能够一行行地获取表内容,或者获取整个表数据,获取的时候会将数据加载到内存中,数据量大的状况下,加载过多数据会发生问题,这个时候就能够--quick(--opt)选项来一行行地获取数据;ui
语法调用:
有三种方法使用mysqldump:
Mysqldump[option] db_name [tb1_name …] 备份库中某些表
Mysqldump[option] --databases db_name… 备份指定数据库
Mysqldump[option] --all-databases 备份整个数据库
查看你的版本语法支持:mysqldump --help
选项-语法(字母顺序)
--add-drop-database
--add-drop-table
--add-drop-trigger
--add-locks 对每一个转存的表进行LOCK和UNLOCK操做;
--all-databases 备份全部数据库
--bind-address 指定mysql地址
--comment 增长注释
--compress 压缩全部信息
--databases 将全部名称参数解释为数据库名称
--debug 记录debug log信息
--debug-check 退出的时候打印debug信息
--default-character-set 指定默认字符集
--delete-master-logs dump后删除全部二进制日志
--flush-logs 开始存储以前刷新日志文件
--force 及时发生错误也继续执行
--help 显示帮助信息
--host 链接的host地址
--ignore-error 忽略指定错误
--ignore-table 忽略指定表
--lock-all-tables 锁定全部库的全部表
--lock-tables dump前,锁定全部表
--log-error 记录告警和错误
--no-create-db 不记录create database语句
--no-create-info 不记录create table语句
--no-data 不记录表内容
--order-by-primary 以主键或第一个惟一索引排序
--password 当链接服务器的时候输入密码
--port 指定端口
--protocol 指定协议
--quick
--replace
--secure-auth 不以老的格式发送密码给服务器
--set-charset 指定字符集
--single-transaction
--skip-add-drop-table 每一个CREATE TABKE前,跳过DROPTABLE
--skip-add-lock 不加锁
--skip-comments 不加注释
--skip-set-charset 跳过字符集设置
--skip-trigger 跳过触发器复制
--ssl 启用加密链接
--ssl-mode 以安全模式链接
--triggers 复制触发器
--user
--verbose
--where
--xml 产生xml文件
链接选项
--bind-address=ip_address 链接到指定地址
--compress, -C 压缩server和client间发送的全部信息
--host=host_name, -h host_name
--password[=password], -p[password]
--port=port_num, -P port_num
--protocol={TCP|SOCKET|PIPE|MEMORY}
--socket=path, -S path
--user=user_name, -u user_name 提供用户名
max_allowed_packet C/S间通讯支持的最大buffer,默认24M,最大1G
选项-文件
--defaults-file=file_name 使用file_name而不是全路径名
案例:
备份整个数据库文件
shell> mysqldump db_name > backup-file.sql
将dump文件加载到sql
shell> mysql db_name < backup-file.sql
从新加载的另外一方式:
shell> mysql -e "source /path-to-backup/backup-file.sql"db_name
一个命令导出几个实例
shell> mysqldump --databases db_name1 [db_name2...] > my_databases.sql
dump全部数据库
shell> mysqldump --all-databases >all_databases.sql
InnoDB中,提供在线备份
shell> mysqldump --all-databases --master-data--single-transaction > all_databases.sql
mysqldump能够用于升级/降级的兼容性测试:
mysqldump--all-databases --no-data --routines --events > dump-defs.sql
由于没有导入数据,因此速度快,当验证兼容性正常的时候,再行导入数据
mysqldump--all-databases --no-create-info > dump-data.sql
限制
默认状况下不会复制INFORMATION_SCHEMA,performance_schema信息
SCHEMA主要用于收集服务器性能参数,且库里表的存储引擎均为PERFORMANCE_SCHEMA
这张数据表保存了MySQL服务器全部数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。
若是想要复制这些信息,必须加上—databases选项去指定这2个库;
验证
Step1 作备份mysqldump--databases itdb > itdb.txt 备份itdb库
cat itdb.txt能够查看里面内容
Step2: 删除itdb库;
Step3: itdb恢复 mysql < itdb.txt
Step4: 验证