文档结构:
MysqLdump备份影响性能,可能会把内存里面的热数据给冲刷掉,5.7后,新增一个参数,innodb_buffer_pool_dump_pct,控制每个innodb_buffer中转存活跃的使用innodb buffer pages的比例,只有当数据在1s内再次被访问时,才能放到热区域内,避免热数据被刷掉,默认值25%。
重要的参数说明:
--single-transaction
用于保证innodb 备份数据时的一致性,配合RR隔离级别一起使用;当发起事物时,读取一个事实的快照,直到备份结束时,都不会读取到本事物开始之前提交的任何数据(这个参数相当重要)
--all-databases (-A)
备份所有数据库。
--master-data
该参数有1和2,如果等于1 ,就会在备份出来的文件中添加一个change master的语句(后期配置搭建主从架构);如果值等于2,就会在备份出来的文件中添加一个change master语句,并在语句前面添加注释符号(后期配置搭建主从架构)。
--dump-slave
该参数用于从库端备份数据,在线搭建新的从库时使用。
该参数也有1,2两个值,值为1是,也是在备份出来的文件中添加一个change master的语句;值为2时,则会在change master命令前增加注释信息。
--no-create-info(-t)
备份过程中,只备份表数据,并不备份表结构。
--no-data
备份过程中,只备份表结构,并不备份表数据。
--complete-insert
使用完整的insert语句会包含表中的列信息,这么做可以提高插入效率。
--databases
备份多个数据库。
MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --set-gtID-purged=OFF --databases sys test > sys_test.sql
--default-character-set
字符集,MysqL目前默认字符集,要与备份出的表的字符集保持一致。
--quick
相当于加 sql_no_query,意味着并不会读取缓存中的数据。
--where=name
按条件备份出想要的数据。
备份所有数据库/usr/local/MysqL5.7/bin/MysqLdump --single-transaction -S /tmp/MysqL3307.sock --set-gtID-purged=OFF -uroot -pMysqL -A >all_20180524.sql
5.7已经开启了GTID,备份过程中不想带GTID信息,加上--set-gtID-purged=OFF
恢复全库的过程先删除test 测试库
MysqL -S /tmp/MysqL3307.sock -uroot -pMysqL < all_20180524.sql
查看恢复后的数据库:
备份单个数据库test的过程:
MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF test > 20180524test.sql
恢复单库test的过程:
MysqL> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| MysqL |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
MysqL> drop database test;
query OK,9 rows affected (0.18 sec)
MysqL> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| MysqL |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
MysqL> create database test;
query OK,1 row affected (0.00 sec)
MysqL -S /tmp/MysqL3307.sock -uroot -pMysqL test < 20180524test.sql
MysqL> use test;
Reading @R_403_5991@ information for completion of @R_403_5991@ and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MysqL> show @R_403_5991@s;
+----------------+
| @R_403_5991@s_in_test |
+----------------+
| t |
| t1 |
| t2 |
| t3 |
| t4 |
| tt |
| ttt |
| zs |
| zs1 |
+----------------+
9 rows in set (0.00 sec)
备份单表:MysqL> select @R_403_5991@_SCHEMA,@R_403_5991@_name,@R_403_5991@_TYPE,ENGINE,@R_403_5991@_ROWS from information_schema.@R_403_5991@S where @R_403_5991@_schema='test';
+--------------+------------+------------+--------+------------+
| @R_403_5991@_SCHEMA | @R_403_5991@_name | @R_403_5991@_TYPE | ENGINE | @R_403_5991@_ROWS |
+--------------+------------+------------+--------+------------+
| test | t | BASE @R_403_5991@ | InnoDB | 6 |
| test | t1 | BASE @R_403_5991@ | InnoDB | 971290 |
| test | t2 | BASE @R_403_5991@ | InnoDB | 3 |
| test | t3 | BASE @R_403_5991@ | InnoDB | 3 |
| test | t4 | BASE @R_403_5991@ | InnoDB | 3 |
| test | tt | BASE @R_403_5991@ | InnoDB | 4 |
| test | ttt | BASE @R_403_5991@ | InnoDB | 2 |
| test | zs | BASE @R_403_5991@ | InnoDB | 3 |
| test | zs1 | BASE @R_403_5991@ | InnoDB | 4 |
+--------------+------------+------------+--------+------------+
9 rows in set (0.00 sec)
MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF test t1 >20180524_t1.sql
恢复表的过程:先删除,在恢复。
MysqL -S /tmp/MysqL3307.sock -uroot -pMysqL test < 20180524_t1.sql
注意:
单表恢复的时候,不需要写表的名字,只需要写库的名字。
备份test库t1表的where 条件MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF test t1 --where='RECEIVETIME >="2018-08-31 00:00:00" and RECEIVETIME <="2018-10-09 00:00:00"' >/data_returnreport.sql
备份test库t1表的结构MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF -d test t1 > 20180504t1_Meta.sql
或者
MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF --no-data test t1 > 20180504t1_Meta01.sql
把-d 换成--no-date
备份test库中t表中数据信息:MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF -t test t1 >20180524t1_data.sql
从表结构备份和表数据备份中恢复单表
先恢复表结构,在往里面导数据
查看表结构:
恢复数据:
MysqL -S /tmp/MysqL3307.sock -uroot -pMysqL test <20180524t1_data.sql
备份test库指定条件数据
MysqLdump -S /tmp/MysqL3307.sock -uroot -pMysqL --single-transaction --set-gtID-purged=OFF test t1 --where="ID>45000" >20180524_t_part.sql
注意:
where 后面建议为双引号,以防止不识别条件。
查看备份文件:
总结
以上是内存溢出为你收集整理的Mysqldump逻辑备份与恢复全部内容,希望文章能够帮你解决Mysqldump逻辑备份与恢复所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)