Mysql dump
Posted 風£飛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql dump相关的知识,希望对你有一定的参考价值。
mysqldump参数说明
-A:--all databases 备份所有数据库
-B:会在备份的数据中增加建库(create)及"use库"的语句,可以直接接多个库名,同时备份多个库
-F 刷新binlog日志,生成新binlog文件,将来增量恢复从这个binlog文件,当备份多个库时每个库都要会刷新一次binlog,如果想只刷新一次binlog,可加--lock-all-tables或--master-data参数开始(完整恢复=全备+临界点binlog)
-x 是锁表,为什么要锁表?主要是确保备份数据的完整性,不要出现“锯齿状”数据,尽量在业务低谷时备份或内部专门用于备份的从数据库 在锁表
-l 对所有表加读锁。(默认是打开的,用--skip-lock-tables来关闭,上面的选项会把关闭-l选项)
-d 只备份库表结构(SQL语句形式)没有行数据
-t 只备份表内行数据(SQL语句形式)没有表结构
-q 直接导出不写入内存(Defaults to on; use --skip-quick to disable.)
-T 将库表和数据分离成不同的文件,行数据是纯文本,表结构是SQL语句,5.6版本默认没有权限操作,需修改my.cnf参数
-S 多实例指定socket
--master-data={1|2}在备份结果中增加binlog日志文件名及对应的binlog位置点(即CHANGE MASTER 语句),等于1为不注释可执行 ,等于2为注释信息,该参数执行时会打开--lock-all-tables功能
--single-transaction 适合InnoDB数据数据库备份,它有Acid 特性,隔离性:执行dump后,只能看到之前的数据,之后插入的被隔离
--compact 减少无用输出---去掉备份文件中注释的SQL语句,适合调试,生产中不建议使用
--single-transaction 备份期间不锁表,又能保证数据一致性(基于innodb引擎),例如给每个人照相,“快照”
[[email protected] ~]# mysqldump -A -B >/server/backup/all.sql
[[email protected] ~]# mysqldump -B mysql oldboy >/server/backup/mysql_oldboy.sql 备份多个库
[[email protected] ~]# mysqldump -t oldboy --compact>/server/backup/oldboy_t.sql
mysql> show variables like ‘log_bin‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
1 row in set (0.02 sec)
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
log_bin = oldboy_bin
innodb:
mysqldump -A -B --master-data=2 --single-transaction -R --trigger|gzip >/server/backup/all.sql.gz
混合引擎:
innodb:
mysqldump -A -B --master-data=2 -R --trigger|gzip >/server/backup/all.sql.gz
解压方法:
gzip -d /server/backup/all.sql.gz
zcat /server/backup/all.sql.gz >/server/backup/all.sql
[[email protected] backup]# gzip -d all.sql.gz 解压完删除压缩包
[[email protected] backup]# zcat all.sql.gz >all.sql 解压完不删除压缩包
[[email protected] backup]# mysql <all.sql
[[email protected] backup]# mysql -e "show databases;"
[[email protected] backup]# mysql -e "source /server/backup/all.sql;"
[[email protected] backup]# mysql -e "show databases;select * from oldboy.test;"
按照位置截取binlog内容的优点是精确,但是要花费时间寻找位置,例如:要截取oldboy-bin.000009文件从位置365到位置456的日志,命令如下。
mysqlbinlog oldboy-bin.000009 --start-position=365 --stop-position=456 -r pos.sql
提示:开始位置点必须在binlog里存在,结尾位置点可以不存在。
若指定了开始位置,不指定结束位置,请问结束位置是?可通过如下命令查看:
mysqlbinlog oldboy-bin.000009 --start-position=365 -r pos.sql
若指定了结束位置,不指定开始位置,请问开始位置是?可通过如下命令查看:
mysqlbinlog oldboy-bin.000009 --stop-position=456 -r pos.sql
所谓的位置点,就是mysqlbinlog解析文件里的不同行行首的“# at 数字”标识的数据
下面语句标识截取oldboy-bin.000009文件中从‘2014-10-16 17:14:15‘时间到‘2014-10-16 17:15:15‘时间的数据。
mysqlbinlog oldboy-bin.000009 --start-datetime=‘2014-10-16 17:14:15‘ --stop-datetime=‘2014-10-16 17:15:15‘ -r time.sql
若指定了开始时间,不指定结束时间,请问结束时间是?可通过如下命令查看:
mysqlbinlog oldboy-bin.000009 --start-datetime=‘2014-10-16 17:14:15‘ -r time.sql
若指定了结束时间,不指定开始时间,请问开始时间是?可通过如下命令查看:
mysqlbinlog oldboy-bin.000009 --stop-datetime=‘2014-10-16 17:15:15‘ -r time.sql
提示:所谓的时间点就是mysqlbinlog解析文件里的不同行行首的“#170303 9:44:22”标识的数据。
在后文增量恢复案例会有mysqlbinlog命令的实战应用。
网站用户授权:
读写分离:
mysql主
mysql从
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.7
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.8
方法1:
主库上对web用户授权如下:
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.7
权限:SELECT, INSERT, UPDATE, DELETE
命令:GRANT SELECT, INSERT, UPDATE, DELETE ON `web`.* TO ‘web‘@‘10.0.0.%‘ identified by ‘oldboy123‘;
从库上对web用户授权如下:
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.8
权限:SELECT
提示:回收 INSERT, UPDATE, DELETE。
方法2:
主从库上对web用户授权如下:
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.7
权限:SELECT, INSERT, UPDATE, DELETE
命令:GRANT SELECT, INSERT, UPDATE, DELETE ON `web`.* TO ‘web‘@‘10.0.0.%‘ identified by ‘oldboy123‘;
从库加read-only=1
方法3:
二是忽略授权库mysql同步,主库的配置参数如下:
binlog-ignore-db = mysql
replicate-ignore-db = mysql
主库上对web用户授权如下:
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.7
权限:SELECT, INSERT, UPDATE, DELETE
命令:GRANT SELECT, INSERT, UPDATE, DELETE ON `web`.* TO ‘web‘@‘10.0.0.%‘ identified by ‘oldboy123‘;
从库上对web用户授权如下:
用户:web 密码:oldboy123 端口:3306 主库VIP:10.0.0.8
权限:SELECT
以上是关于Mysql dump的主要内容,如果未能解决你的问题,请参考以下文章
mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令