MySQL mysqldump备份恢复

目录

1. 备份类型

2. 逻辑备份VS物理备份 

3. mysqldump工具

3.1 备份命令格式

3.2 备份选项

3.3 备份全库(结构和数据)

3.4 备份全库(仅结构) 

3.5 备份全库(仅数据) 

3.6 备份单个数据库(结构和数据)

3.7 备份单个数据库(仅结构)

3.8 备份单个数据库(仅数据)

3.9 备份多个指定数据库(多个数据库以空格间隔)

3.10 备份多张表

3.11 排除某些表

3.12 指定where条件

3.13 压缩备份

3.14 压缩备份至远程服务器

3.13 一致性导出

3.14 备份原理

3.15 详细过程解释

3.16 原理总结

4.恢复

4.1 mysql命令恢复

4.2 source命令恢复

4.3 备份并用gzip压缩

4.4 备份并用bzip压缩


1. 备份类型

2. 逻辑备份VS物理备份 

3. mysqldump工具

        mysqldump是MySQL自带的逻辑备份工具,连接MySQL数据库,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。mysqldump命令还可以生成CSV、其他分隔文本或XML格式的输出。它是单线程备份恢复。

3.1 备份命令格式

mysqldump [options] db_name [tbl_name ...] > 脚本名.sql
mysqldump [options] --databases db_name ... > 脚本名.sql
mysqldump [options] --all-databases > 脚本名.sql

3.2 备份选项

选项简写描述
--add-drop-database在每个CREATE DATABASE语句之前添加DROP DATABASE语句
--add-drop-table在每个CREATE TABLE语句之前添加DROP TABLE语句
--add-drop-trigger在每个CREATE TRIGGER语句之前添加DROP TRIGGER声明
--add-locks在每张导出的表前后用LOCK TABLES和UNLOCK TABLES语句包裹
--all-databases-A导出所有数据库的所有表
--allow-keywords允许创建的列名是关键字
--apply-slave-statements在CHANGE MASTER语句之前包括STOP SLAVE,在输出结束时包括START SLAVE
--bind-address​使用指定的网络接口连接到MySQL Server
--character-sets-dir安装字符集的目录
--comments-i将注释添加到dump file
--compact提供较少的详细输出(对调试有用)。禁用结构注释和页眉/页脚构造,相当于一个参数包,其中包含了--skip-add-drop-table,--skip-add-locks,--skip-comments,--skip-disable-keys,--skip-set-charset,以产生更紧促的输出
--compatible与其他数据库兼容,或与旧版本MySQL兼容,值为ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, or no_field_options,多个值用逗号分隔
--complete-insert-c在CREATE TABLE语句中包括所有MySQL特定的表选项
--compress-C在客户端和服务器之间启用压缩传递所有信息
--create-options-a在CREATE TABLE语句中包括所有MySQL特性选项(默认为打开状态,可以使用--skip-create-options禁用)
--databases-B指定要备份的数据库
--debug-#写入调试日志
--debug-check程序退出时打印调试信息
--debug-info程序退出时打印调试信息,内存和CPU统计信息
--default-auth使用的密码验证插件
--default-character-set指定默认字符集
--defaults-extra-file除了读取常用选项文件外,还读取命名选项文件
--defaults-file只读取命名选项文件
--defaults-group-suffix组后缀
--delete-master-logs在复制源服务器上,执行dump(备份)操作后删除二进制日志,自动启用
--disable-keys-Kdisable and enable keys包围INSERT语句
--dump-date输出结尾显示dump完成时间,默认为on;使用--skip dump date可禁用
--dump-slave

该选项将导致主的binlog位置和文件名追加到导出数据的文件中。设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,在命令前增加说明信息。该选项将会打开--lock-all-tables,除非--single-transaction被指定。该选项会自动关闭--lock-tables选项。默认值为0

--enable-cleartext-pluginEnable/disable明文身份验证插件
--events-E导出events 
--extended-insert-e使用多行INSERT语法
--fields-enclosed-by指定包裹字段的字符
--fields-escaped-by指定转义字符
--fields-optionally-enclosed-by指定包裹字段的字符,对纯数字无影响不加字符包裹
--fields-terminated-by指定字段之间的字符
--flush-logs-F

导出之前刷新日志,假如一次导出多个数据库(使用选项--databases或者--all-databases),将会逐个数据库刷新日志。除使用--lock-all-tables或者--master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用--lock-all-tables 或者--master-data 和--flush-logs。

--flush-privileges在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。
--force-f遇到sql报错继续执行
--get-server-public-key从服务器请求RSA公钥
--help-?查看帮助
--hex-blob使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB
--host-h要导出的MySQL服务器ip
--ignore-error指定忽略的错误,错误号以逗号分隔
--ignore-table不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=db.t1 --ignore-table=db.t2
--include-master-host-port使用了--dump-slave时在CHANGE MASTER语句中加入MASTER_HOST和MASTER_PORT。
--insert-ignore用INSERT IGNORE 而非INSERT ,以忽略主键或唯一键的重复数据。
--lines-terminated-by指定换行符
--lock-all-tables-x提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项
--lock-tables-l导出之前锁定所有表
--log-error附加警告和错误信息到给定文件
--login-path从.mylogin.cnf登录文件读取登录参数。可通过mysql_config_editor创建登录文件。
--master-data

该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息。该选项将打开--lock-all-tables 选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。(在主执行)

--max-allowed-packet发送或接收服务器的最大数据包长度
--net-buffer-lengthTCP/IP及socket通讯的buffer大小
--no-autocommit在INSERT前后添加set autocommit=0和commit
--no-create-db-n若使用了--all-databases或--databases,则不在输出中添加CREATE DATABASE
--no-create-info-t不使用CREATE TABLE 重建备份的表
--no-data-d只导出表结构,不导出表数据
--no-defaults不读取选项文件
--no-set-names-N相当于 --skip-set-charset
--no-tablespaces-y不导出任何表空间信息,不在输出中使用CREATE LOG FILE和CREATE TABLESPACE
--opt--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset,和--disable-keys几个选项合起来的简写形式。
--order-by-primary将备份的表中的行按主键排序或者第一个唯一键排序
--password-p连接MySQL用户的密码
--pipe在Windows上通过命名管道连接server
--plugin-dir客户端插件的目录,用于兼容不同的插件版本
--port-PMySQL连接端口
--print-defaults输出默认选项
--protocol连接MySQL使用的协议
--quick-q备份时逐行读取表而非一次全部读取行后缓冲在内存中。在备份大表时有用。不缓冲查询,直接导出到标准输出
--quote-names-Q用反引号(`)引用表和列名。(默认为on;使用--skip-quote-names禁用。)若使用了ANSI_QUOTES则用“””包围。特别的,可能需要在—compatible后开启该选项
--replace用REPLACE替代INSERT INTO.(REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
--result-file-r将结果输出到指定的文件
--routines-R导出routines(存储过程和函数)
--secure-auth如果客户端使用旧的(4.1.1之前的)协议,则拒绝客户端连接到服务器。MySQL 5.7.5 该参数已弃用。始终为TRUE,不能修改
--server-public-key-pathRSA公钥目录
--set-charset将“SET NAMES default_character_SET”添加到输出中。(默认为on;使用–skip-set-charset关闭)
--set-gtid-purged确定是否在结果中添加SET @@GLOBAL.GTID_PURGED。若为ON但在server中没有开启GTID则发生错误。若OFF则什么都不做。若AUTO则server中开启GTID那么添加上述语句,反之不加。
--shared-memory-base-name共享内存连接的共享内存名称(仅限Windows)
--single-transaction在备份前设置事务隔离级别为REPEATABLE READ并向server发送START TRANSACTION语句。仅对事务型表如InnoDB有用。与--ock-tables互斥。对于大文件备份--single-transaction与--quick结合使用。
--skip-add-drop-table禁用--add-drop-table, 在CREATE TABLE之前不添加DROP TABLE语句
--skip-add-locks禁用--add-locks
--skip-comments禁用--comments
--skip-compact禁用--compact
--skip-disable-keys禁用--disable-keys
--skip-extended-insert禁用--extended-insert
--skip-mysql-schema导出时不删除schema,默认要删除schema,在MySQL 5.7.36中增加此参数
--skip-opt禁用--skip-opt
--skip-quick禁用--quick
--skip-quote-names禁用--quote-names
--skip-set-charset禁用--set-charset
--skip-triggers不导出triggers
--skip-tz-utc禁用-- tz-utc
--socket-S连接本机server所使用的socket
--ssl使用加密连接
--ssl-ca包含受信任SSL认证列表的文件
--ssl-capath包含受信任SSL认证列表文件的目录
--ssl-cert包含X.509证书的文件
--ssl-cipher一系列用于SSL加密的所允许的密码
--ssl-crl包含废弃证书的列表
--ssl-crlpath包含废弃证书列表的目录
--ssl-key包含X.509密钥的文件
--ssl-mode与服务器连接所需的安全状态
--ssl-verify-server-cert已废弃. 使用--ssl-mode=VERIFY_IDENTITY 替代
--tab-T为给定的每个表创建以制表符分隔的文本文件路径。 创建.sql和.txt文件,.sql文件为表结构,.txt为表数据。注意:这只适用如果mysqldump在与mysqld相同的机器上运行服务器。
--tables覆盖--databases (-B)参数,指定需要导出的表名
--tls-version用于加密连接的允许TLS协议
--triggers导出表trigger
--tz-utc在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。(默认开启,用--skip-tz-utc禁用)
--user-u连接MySQL的用户
--verbose-v 输出多种平台信息,详细信息
--version-V显示mysqldump版本信息并退出
--where-w仅导出与where条件中匹配的行。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来
--xml-X导出XML格式

3.3 备份全库(结构和数据)

mysqldump -uroot -p123456 --all-databases > /backup/all_db.sql
或者
mysqldump -uroot -p123456 -A > /backup/all_db.sql

3.4 备份全库(仅结构) 

mysqldump -uroot -p123456 -A -d > /backup/all_metadata.sql
或者
mysqldump -uroot -p123456 --all-databases --no-data > /backup/all_metadata.sql

3.5 备份全库(仅数据) 

mysqldump -uroot -p123456 --all-databases --no-create-info > /backup/all_data.sql
或者
mysqldump -uroot -p123456 -A -t > /backup/all_data.sql

3.6 备份单个数据库(结构和数据)

mysqldump -uroot -p123456 zs > /backup/zs.sql

3.7 备份单个数据库(仅结构)

 mysqldump -uroot -p123456 zs -d > /backup/zs_metadata.sql
或者
 mysqldump -uroot -p123456 zs --no-data > /backup/zs_metadata.sql

3.8 备份单个数据库(仅数据)

mysqldump -uroot -p123456 zs -t > /backup/zs_data.sql
或者
mysqldump -uroot -p123456 zs --no-create-info > /backup/zs_data.sql

3.9 备份多个指定数据库(多个数据库以空格间隔)

mysqldump -uroot -p123456 --databases db1 db2 > /backup/somedbs.sql
或者
mysqldump -uroot -p123456 -B db1 db2 > /backup/somedbs.sql

3.10 备份多张表

mysqldump -uroot -p123456 -B zs --tables aa z1  > /backup/aa_z1.sql
或者
mysqldump -uroot -p123456 zs aa z1  > /backup/aa_z1.sql

3.11 排除某些表

导出DB中其余表结构和数据

mysqldump -uroot -p123456 zs --ignore-table=zs.aa --ignore-table=zs.t1  > /backup/ignoe.sql

3.12 指定where条件

导出表的部分数据(多张表都需有where条件后的字段)

mysqldump -uroot -p123456 zs z1 t1 -w 'a<=4'  > /backup/where.sql

3.13 压缩备份

mysqldump -uroot -p123456 -B zs python --single-transaction --master-data=2 --triggers | gzip > /backup/zs_python.sql.tar.gz

3.14 压缩备份至远程服务器

mysqldump -uroot -p123456 -B zs python --single-transaction --master-data=2 --triggers -E -R | gzip | ssh root@192.168.26.101 'cat > /tmp/zs_python.sql.tar.gz'

3.13 一致性导出

 导出的时候为了一致性,一般加上参数--single-transaction,可以在配置文件中加上该参数

[mysqldump]
single-transaction

3.14 备份原理

版本为MySQL 5.7.44

#设置general_log日志输出到表,然后执行mysqldump导出
set global log_output = 'TABLE'
set global general_log = 1;

#mysqldump执行完毕后关闭general_log
set global general_log = 0;
#执行语句
mysqldump -uroot -p123456 -B zs python --single-transaction --triggers -E -R > /backup/zs_python.sql

查看mysql.general_log表日志

+-----------+--------------+------------------------------------------------------------------------------------------------------+
| thread_id | command_type | left(argument,100)                                                                                   |
+-----------+--------------+------------------------------------------------------------------------------------------------------+
|        23 | Connect      | root@localhost on  using Socket                                                                      |
|        23 | Query        | /*!40100 SET @@SQL_MODE='' */                                                                        |
|        23 | Query        | /*!40103 SET TIME_ZONE='+00:00' */                                                                   |
|        23 | Query        | SHOW VARIABLES LIKE 'gtid_mode'                                                                      |
|        23 | Query        | FLUSH /*!40101 LOCAL */ TABLES                                                                       |
|        23 | Query        | FLUSH TABLES WITH READ LOCK                                                                          |
|        23 | Query        | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ                                              |
|        23 | Query        | START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */                                               |
|        23 | Query        | SHOW MASTER STATUS                                                                                   |
|        23 | Query        | UNLOCK TABLES                                                                                        |
|        23 | Query        | SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SC |
|        23 | Query        | SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FR |
|        23 | Query        | SHOW VARIABLES LIKE 'ndbinfo\_version'                                                               |
|        23 | Init DB      | zs                                                                                                   |
|        23 | Query        | SHOW CREATE DATABASE IF NOT EXISTS `zs`                                                              |
|        23 | Query        | SAVEPOINT sp                                                                                         |
|        23 | Query        | show tables                                                                                          |
|        23 | Query        | show table status like 'aa'                                                                          |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `aa`                                                                               |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `aa`                                                                                |
|        23 | Query        | show fields from `aa`                                                                                |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `aa`                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `zs`                                                                                             |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 'aa'                                                                              |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | show table status like 't1'                                                                          |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `t1`                                                                               |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `t1`                                                                                |
|        23 | Query        | show fields from `t1`                                                                                |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `zs`                                                                                             |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 't1'                                                                              |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | show table status like 'z1'                                                                          |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `z1`                                                                               |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `z1`                                                                                |
|        23 | Query        | show fields from `z1`                                                                                |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `z1`                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `zs`                                                                                             |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 'z1'                                                                              |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | RELEASE SAVEPOINT sp                                                                                 |
|        23 | Query        | show events                                                                                          |
|        23 | Query        | use `zs`                                                                                             |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | SHOW FUNCTION STATUS WHERE Db = 'zs'                                                                 |
|        23 | Query        | SHOW PROCEDURE STATUS WHERE Db = 'zs'                                                                |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Init DB      | python                                                                                               |
|        23 | Query        | SHOW CREATE DATABASE IF NOT EXISTS `python`                                                          |
|        23 | Query        | SAVEPOINT sp                                                                                         |
|        23 | Query        | show tables                                                                                          |
|        23 | Query        | show table status like 'Orders'                                                                      |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `Orders`                                                                           |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `Orders`                                                                            |
|        23 | Query        | show fields from `Orders`                                                                            |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `Orders`                                                      |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `python`                                                                                         |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 'Orders'                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | show table status like 't'                                                                           |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `t`                                                                                |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `t`                                                                                 |
|        23 | Query        | show fields from `t`                                                                                 |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `t`                                                           |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `python`                                                                                         |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 't'                                                                               |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | show table status like 'y'                                                                           |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `y`                                                                                |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `y`                                                                                 |
|        23 | Query        | show fields from `y`                                                                                 |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `y`                                                           |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `python`                                                                                         |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 'y'                                                                               |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | show table status like 'z'                                                                           |
|        23 | Query        | SET SQL_QUOTE_SHOW_CREATE=1                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | show create table `z`                                                                                |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | show fields from `z`                                                                                 |
|        23 | Query        | show fields from `z`                                                                                 |
|        23 | Query        | SELECT /*!40001 SQL_NO_CACHE */ * FROM `z`                                                           |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | use `python`                                                                                         |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SHOW TRIGGERS LIKE 'z'                                                                               |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Query        | ROLLBACK TO SAVEPOINT sp                                                                             |
|        23 | Query        | RELEASE SAVEPOINT sp                                                                                 |
|        23 | Query        | show events                                                                                          |
|        23 | Query        | use `python`                                                                                         |
|        23 | Query        | select @@collation_database                                                                          |
|        23 | Query        | SET SESSION character_set_results = 'binary'                                                         |
|        23 | Query        | SHOW FUNCTION STATUS WHERE Db = 'python'                                                             |
|        23 | Query        | SHOW PROCEDURE STATUS WHERE Db = 'python'                                                            |
|        23 | Query        | SET SESSION character_set_results = 'utf8'                                                           |
|        23 | Quit         |                                                                                                      |
+-----------+--------------+------------------------------------------------------------------------------------------------------+

3.15 详细过程解释

#1.MySQLdump 工具连接MySQL服务端
root@localhost on  using Socket

#2.修改当前SESSION的SQL模式为空;避免对备份产生影响
/*!40100 SET @@SQL_MODE='' */

#3.设置time_zone为+00:00
/*!40103 SET TIME_ZONE='+00:00' */

#4.查询是否开启GTID
SHOW VARIABLES LIKE 'gtid_mode'

#5.刷新表,减少FTWRL锁的等待时间
FLUSH /*!40101 LOCAL */ TABLES

#6.因为开启了--master-data=2,这时就需要flush tables with read lock锁住全库为只读,
  记录当时的master_log_file和master_log_pos点
  这里有一个疑问?
  执行flush tables操作,并加一个全局读锁,那么以上两个命令貌似是重复的,
  为什么不在第一次执行flush tables操作的时候加上锁呢?
  是为了避免较长的事务操作造成FLUSH TABLES WITH READ LOCK操作迟迟得不到
  锁,但同时又阻塞了其它客户端操作,减少FTWRL锁的等待时间。
FLUSH TABLES WITH READ LOCK

#7.--single-transaction参数的作用,设置事务的隔离级别为可重复读,
  即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,
  也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,
  对该dump线程的数据并无影响,然而这个还不够,还需要看下一条
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ

#8.获取当前数据库的快照,这个是由mysqldump中--single-transaction决定的。
# WITH CONSISTENT SNAPSHOT能够保证在事务开启的时候,第一次查询的结果就是
  事务开始时的数据A,即使这时其他线程将其数据修改为B,查的结果依然是A。简而言之,就是开启事务并对所有表执行了一次SELECT操作,这样可保证备份时,
  在任意时间点执行select * from table得到的数据和
  执行START TRANSACTION WITH CONSISTENT SNAPSHOT时的数据一致。
 【注意】,WITH CONSISTENT SNAPSHOT只在RR隔离级别下有效
START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */

#9.这个是由--master-data决定的,记录了开始备份时,binlog的状态信息,
  包括MASTER_LOG_FILE和MASTER_LOG_POS
SHOW MASTER STATUS

#10.释放FLUSH TABLES WITH READ LOCK锁
UNLOCK TABLES

#11.获取undo文件信息
SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('zs','python'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME 

#12.获取数据文件信息
SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('zs','python')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME

#13.查看ndb版本信息
SHOW VARIABLES LIKE 'ndbinfo\_version'

#14.开始导出zs数据库
zs

#15.查看创建zs数据库的语句加上IF NOT EXISTS子句
SHOW CREATE DATABASE IF NOT EXISTS `zs`

#16.在一个事务中,sp检查点为了释放表元数据锁
SAVEPOINT sp

#17.获取数据库表信息 
show tables

#18.获取表的状态信息
show table status like 'aa'

#19.sql_quote_show_create,有两个值(1,0),默认是1,表示表名和列名会用``包着的
SET SQL_QUOTE_SHOW_CREATE=1

#20.设置字符集为binary,为了更好的备份表结构,将字符集先设置成binary,避免出错
SET SESSION character_set_results = 'binary'

#21.获取表创建语句
show create table `aa`

#22.设置字符集为utf8,开始备份表数据时将字符集设置为数据库的字符集。
SET SESSION character_set_results = 'utf8'

#23.获取表的字段信息
show fields from `aa`
show fields from `aa`

#24.查询表数据,结合show fields from `country`的字段信息生成insert into语句,开始导出表
SELECT /*!40001 SQL_NO_CACHE */ * FROM `aa`

#25.设置字符集为binary
SET SESSION character_set_results = 'binary' 
use `zs`
#查看zs数据库字符集编码
select @@collation_database

#26.查询触发器,导出触发器
SHOW TRIGGERS LIKE 'aa'
SET SESSION character_set_results = 'utf8'

#27.回滚至sp检查点,释放表aa的元数据锁,使其他操作可以作用在表aa,比如创建索引等等
ROLLBACK TO SAVEPOINT sp

#28.以下是重复操作步骤18~27,对其他表进行导出
show table status like 't1'
SET SQL_QUOTE_SHOW_CREATE=1
SET SESSION character_set_results = 'binary' 
show create table `t1` 
SET SESSION character_set_results = 'utf8' 
show fields from `t1`
show fields from `t1`
SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`
SET SESSION character_set_results = 'binary' 
use `zs` 
select @@collation_database
SHOW TRIGGERS LIKE 't1'
SET SESSION character_set_results = 'utf8' 
ROLLBACK TO SAVEPOINT sp 
show table status like 'z1'
SET SQL_QUOTE_SHOW_CREATE=1
SET SESSION character_set_results = 'binary' 
show create table `z1` 
SET SESSION character_set_results = 'utf8' 
show fields from `z1`
show fields from `z1`
SELECT /*!40001 SQL_NO_CACHE */ * FROM `z1`
SET SESSION character_set_results = 'binary' 
use `zs`

#查看zs数据库编码
select @@collation_database
SHOW TRIGGERS LIKE 'z1'
SET SESSION character_set_results = 'utf8' 
ROLLBACK TO SAVEPOINT sp

#29.导出完一个数据库的表和触发器会释放检查点
RELEASE SAVEPOINT sp

#30.完成一个数据库所有表的备份之后,最后备份的数据库中的事件、函数、存储过程
show events
use `zs`
select @@collation_database
SET SESSION character_set_results = 'binary'
SHOW FUNCTION STATUS WHERE Db = 'zs'
SHOW PROCEDURE STATUS WHERE Db = 'zs'
SET SESSION character_set_results = 'utf8'

#31.开始导出python数据库,重复15~30步骤
python
SHOW CREATE DATABASE IF NOT EXISTS `python` 
SAVEPOINT sp
show tables 
show table status like 'Orders' 
SET SQL_QUOTE_SHOW_CREATE=1 
SET SESSION character_set_results = 'binary'
show create table `Orders`
SET SESSION character_set_results = 'utf8'
show fields from `Orders` 
show fields from `Orders` 
SELECT /*!40001 SQL_NO_CACHE */ * FROM `Orders` 
SET SESSION character_set_results = 'binary'
use `python`
select @@collation_database 
SHOW TRIGGERS LIKE 'Orders' 
SET SESSION character_set_results = 'utf8'
ROLLBACK TO SAVEPOINT sp
show table status like 't'
SET SQL_QUOTE_SHOW_CREATE=1 
SET SESSION character_set_results = 'binary'
show create table `t` 
SET SESSION character_set_results = 'utf8'
show fields from `t`
show fields from `t`
SELECT /*!40001 SQL_NO_CACHE */ * FROM `t`
SET SESSION character_set_results = 'binary'
use `python`
select @@collation_database 
SHOW TRIGGERS LIKE 't'
SET SESSION character_set_results = 'utf8'
ROLLBACK TO SAVEPOINT sp
show table status like 'y'
SET SQL_QUOTE_SHOW_CREATE=1 
SET SESSION character_set_results = 'binary'
show create table `y` 
SET SESSION character_set_results = 'utf8'
show fields from `y`
show fields from `y`
SELECT /*!40001 SQL_NO_CACHE */ * FROM `y`
SET SESSION character_set_results = 'binary'
use `python`
select @@collation_database 
SHOW TRIGGERS LIKE 'y'
SET SESSION character_set_results = 'utf8'
ROLLBACK TO SAVEPOINT sp
show table status like 'z'
SET SQL_QUOTE_SHOW_CREATE=1 
SET SESSION character_set_results = 'binary'
show create table `z` 
SET SESSION character_set_results = 'utf8'
show fields from `z`
show fields from `z`
SELECT /*!40001 SQL_NO_CACHE */ * FROM `z`
SET SESSION character_set_results = 'binary'
use `python`
select @@collation_database 
SHOW TRIGGERS LIKE 'z'
SET SESSION character_set_results = 'utf8'
ROLLBACK TO SAVEPOINT sp
RELEASE SAVEPOINT sp
show events
use `python`
select @@collation_database
SET SESSION character_set_results = 'binary'
SHOW FUNCTION STATUS WHERE Db = 'python'
SHOW PROCEDURE STATUS WHERE Db = 'python'
SET SESSION character_set_results = 'utf8'

#32.备份结束,退出连接
quit

3.16 原理总结

通过以上的日志分析,可以总结下mysqldump备份的主要流程:

一开始设置SQL_MODE为空;
设置TIME_ZONE为+00:00;
查看是否开启了GTID;
执行FLUSH TABLES关闭实例中所有的表;
执行语句FLUSH TABLES WITH READ LOCK获取全局表的读锁,保证表一致性;
设置会话级别事务的隔离级别为REPEATABLE READ,保证事务期间数据的一致性;
执行语句START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */创建一个一致性事务快照;
获取当前状态下的binlog文件及位置信息(如有指定选项 --master-data);
执行UNLOCK TABLES释放全局表读锁;
开始备份第一个数据库数据,为事务创建一个检查点,备份完一张表之后,备份触发器,然后还原至检查点再接着备份下一张表,直至该数据库所有的表备份完成,释放检查点,备份第一个数据库事件、函数、存储过程,接着备份下一个数据库数据重复操作,直至所有数据库数据备份完成;
当备份完最后一个数据库数据后,退出并中止事务。

4.恢复

4.1 mysql命令恢复

mysql -uroot -p123456 < zs_python.sql

4.2 source命令恢复

#进入mysql使用source命令
source /backup/zs_python.sql

4.3 备份并用gzip压缩

mysqldump -uroot -p123456 -B zs python --single-transaction --master-data=2 --triggers -R -E > | gzip > outputfile.sql.gz

从gzip备份恢复:

gunzip < outputfile.sql.gz | mysql -uroot -p123456

4.4 备份并用bzip压缩

mysqldump -uroot -p123456 -B zs python --single-transaction --master-data=2 --triggers -R -E | bzip2 > outputfile.sql.bz2

从bzip2备份恢复:

bunzip2 < outputfile.sql.bz2 | mysql -uroot -p123456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/597976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ACPWorkbench_for_BP10

一、菜单 文件菜单包含导入导出所有参数&#xff0c;导出flashbin文件和退出操作。文件菜单显示如下&#xff1a; Import Audio Settings&#xff1a;从音频配置文件中导入音频参数。 Export Audio Settings&#xff1a;将音频设置导出为音频配置文件。 Export Flash Binary Fi…

Type Specific Interfaces(Rolling特殊类型接口)

Type Specific Interfaces 一直以来&#xff0c;API的某些部分必然特定于所交换的消息类型&#xff0c;例如发布消息或订阅主题&#xff0c;因此需要为每个消息类型生成代码。下图布局了从用户定义的rosidl文件&#xff08;如.msg文件&#xff09;到用户和系统用于执行特定类型…

透明屏幕的可视角度有多大?在不同角度观看显示效果是否受影响?

透明屏幕的可视角度大小会因不同的技术、设计和应用场景而有所差异。以OLED透明屏为例&#xff0c;其可视角度通常可以达到178/178&#xff0c;这意味着在广阔范围内&#xff0c;观察者都能保持清晰的视觉效果。 然而&#xff0c;在不同角度观看透明屏幕时&#xff0c;显示效果…

【七十九】【算法分析与设计】并查集模板!!!并查集的实现_牛客题霸_牛客网,【模板】并查集 - 洛谷,并查集代码!!!

并查集的实现_牛客题霸_牛客网 描述 给定一个没有重复值的整形数组arr&#xff0c;初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构&#xff0c;并提供以下两个操作。 boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合 void u…

python从0开始学习(四)

目录 前言 1、算数运算符 1.1 //:整除运算符 1.2 %:取模操作 1.3 **&#xff1a;幂运算 2、赋值运算符 3、比较运算符 4、逻辑运算符 5、位运算符 5.1 &&#xff1a;按位与 5.2 |&#xff1a;按位或 5.3 ^&#xff1a;按位异或 5.4 ~&#xff1a;按位取反 5.5…

细粒度数据设计对于微调的重要性

原文地址&#xff1a;the-importance-of-granular-data-design-for-fine-tuning 利用数据设计来训练LLM&#xff0c;以充分利用上下文&#xff0c;同时解决“Lost-In-The-Middle”的挑战。 2024 年 5 月 2 日 介绍 对话设计师难道不是杰出的数据设计师吗&#xff1f; 请允许我详…

机器学习之基于Jupyter中国环境治理投资数据分析及可视化

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 机器学习之基于Jupyter中国环境治理投资数据分析及可视化项目是一个结合了机器学习和数据可视化技术的项目&#xf…

【算法练级js+java】重复给定字符n次

题目 Repeats the given string n times.&#xff08;复制指定的字符串n次&#xff09; 期望结果 /** * Repeats the given string n times. * * repeat(‘, 3) * // > **’ * * repeat(‘abc’, 2) * // > ‘abcabc’ * * repeat(‘abc’, 0) * // > “” **/ 代码…

一步教你网站怎么免费实现https,看这里!!

要想网站实现https访问最简单有效的方法就是安装SSL证书。只要证书安装上&#xff0c;浏览器就不会再有提示网站不安全或者访问被拦截的情况。现在我来教大家怎么去获取免费的SSL证书&#xff0c;又怎么安装来证书实现https访问。 一、选择免费SSL证书提供商 有多家机构提供免…

excel公式后面加的““是什么意思呢?

这个大体上有两种用意。 1.将数值转换成文本 VLOOKUP(F2,A:C,3,0) 举个使用VLOOKUP函数的场景&#xff0c;如下图所示&#xff0c;员工信息表A:C区域中&#xff0c;A列员工号是文本型数字&#xff0c;使用VLOOKUP函数查询找的时候&#xff0c;F列的员工号数值型、文本型都有…

SinoDB数据库的RAW TABLE

RAW表是不记录日志的永久表&#xff0c;类似于无日志模式数据库中的表。对于RAW表&#xff0c;支持对其进行更新、插入和删除操作&#xff0c;但日志是不会记录这些操作。可以在RAW表上定义索引&#xff0c;但不能在RAW表上定义唯一约束、主键约束或引用约束&#xff08;refere…

java SPI思想机制

目录 如何解释简单概括SPI 和 APISPI 实现原理&#xff08;重要-线程上下文类加载器&#xff09; 如何使用一个Demo功能介绍使用效果&#xff08;直接在本地模拟服务商提供服务&#xff09;使用效果&#xff08;通过 jar 的方式引入&#xff09; 应用分析参考文章 如何解释 简…

【Altium】AD-在原理图中如何绘制贝塞尔曲线

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 在原理图中绘制贝塞尔曲线的方法 2、 问题场景 贝塞尔曲线主要用来描述各种波形曲线&#xff0c;如正弦、余弦曲线等。贝塞尔曲线的绘制和直线类似&#xff0c;需要固定多个顶点&#xff08;最少4个&#xff09;后即…

深度学习之基于Matlab特征匹配的手写电话号码、数字识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在信息化日益发展的今天&#xff0c;手写电话号码和数字的识别技术显得尤为重要。这种技术不仅能够提…

包管理工具npm的安装和使用

包管理工具 管理 包 的应用软件&#xff0c;可以对 包 进行下载 安装&#xff0c;更新&#xff0c;删除&#xff0c;上传 等操作。 借助包管理工具&#xff0c;可以快速开发项目&#xff0c;提升开发效率。 包管理工具是一个通用的概念&#xff0c;很多编程语言都有包管理工…

【统计推断】-01 抽样原理之(六):三个示例

目录 一、说明二、处理有限的、大尺度的母体抽样三、非参数的估计四、连续母体抽样技巧--分箱 一、说明 对于抽样问题&#xff0c;前几期文章都是理论探讨。本篇给出若干示例&#xff0c;展现具体的情况下&#xff0c;面对数据&#xff0c;如何给出处理策略。 二、处理有限的…

73. 矩阵置零/54. 螺旋矩阵

73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 思路&#x…

微信/支付宝支付服务搭建,一次性搞定!

微信支付 付款码支付 付款码支付是指用户展示微信钱包内的“付款码”给商户系统扫描后直接完成支付&#xff0c;适用于线下场所面对面收银的场景&#xff0c;例如商超、便利店、餐饮、医院、学校、电影院和旅游景区等具有明确经营地址的实体场所JSAPI支付 JSAPI支付是指商户通过…

OpenCV 库来捕获和处理视频输入和相似度测量(73)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV的周期性噪声去除滤波器(70) 下一篇 :使用 OpenCV 创建视频(74) ​ 目标 如今&#xff0c;拥有数字视频录制系统供您使用是很常见的。因此&#xff0c;您最终会遇到不再处理一批图像&#xf…

连锁收银系统总仓到门店库存调拨操作教程

1、进入系统后台&#xff0c;系统后台登录网址&#xff1a; 2、点击商品>门店调拨 3、选择调出仓库和调入门店 4、可选择添加商品逐个进行调拨&#xff0c;也可以批量导入需要调拨的商品 然后点击确定。 5、新增调拨后&#xff0c;系统会显示“待出库”状态 6、仓库已经准备…