zoukankan      html  css  js  c++  java
  • 二十八、mysqldump备份

    简介

    mysqldump备份也叫逻辑备份,是将数据转换成sql语句保存成文件进行备份。
    适用于小于30G的数据备份。
    大于30G的备份建议使用XBK物理备份。

    常用备份参数

    1、不带参数备份单个数据库中的所有表

    #备份xyz数据库中的所有表
    $ mysqldump -uroot -p123 xyz >/backup/xyz.sql
    
    #备份world数据库中的city、country表
    $ mysqldump -uroot -p123 world city country > /backup/tab.sql
    
    #使用egrep去掉多余注释查看备份结果
    $ egrep -v "#|*|--^$" /backup/xyz.sql
    LOCK TABLES `student` WRITE;
    UNLOCK TABLES;
    #会发现多了两条锁表跟解锁语句
    

    注意:不加参数备份不会生成建库语句。

    2、加-B参数
    增加创建和使用数据库语句,由此可以同时备份多个数据库

    $  mysqldump -uroot -p123 -B xyz test sch >/backup/xyz1.sql
    
    #使用diff进行对比两个文件
    $ diff /backup/xyz1.sql /backup/xyz.sql
    

    3、加-A参数
    备份所有数据库

    #全备建议压缩节省空间
    $ mysqldump -uroot -p123 -A |gzip >/backup/full.sql.gz
    
    #解压几种方式
    $ gzip -d /backup/test.sql.gz #会删除压缩文件
    $ gzip -cd /backup/test.sql.gz > /backup/test.sql #不会删除压缩文件
    $ zcat /backup/test.sql.gz > /backup/test.sql #不会删除压缩文件
    

    4、加-R参数(建议加上)
    备份存储过程和函数,存储过程相当于一堆sql语句,类似于shell脚本,加上此参数有存储过程就备份没有就跳过。

    5、加-E参数(建议加上)
    备份事件,事件相当于linux中的计划任务,有计划任务就备份,没有则跳过。

    6、加--triggers参数
    备份触发器,了解即可。

    7、--master-data=2参数
    记录备份后的binlog起点信息方便以后找到恢复点,默认为1,可选值为1,2
    值1:将起点信息以语句方式记录到文件中
    值2:将起点信息以注释的方式记录到文件中(常用)
    注意此参数跟--single-transaction参数一起使用。

    可以看到记录的起点信息包括MASTER_LOG_FILE二进制日志文件名,MASTER_LOG_POS为备份后二进制日志的起点信息。

    $ mysqldump -uroot -p123 --master-data=1 test --compact|head -1
    mysqldump: [Warning] Using a password on the command line interface can be insecure.
    #可以看到--master-data=1时以CHANGE MASTER TO语句记录到备份文件中
    CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
    mysqldump: Got errno 32 on write
    

    注意使用--master-data参数会自动进行锁表备份(相当于开启--lock-all-tables功能),防止备份过程中数据写入,以防止造成MASTER_LOG_POS记录不准确的情况发生;

    8、--single-transaction参数
    使用该参数对innodb表进行备份时,会单独开启一个备份事务,故不影响其他会话数据写入,也就相当于关闭--lock-all-tables锁表功能,但是仅限于InnoDB引擎的表,也叫快照备份。

    7、其他参数P135
    -x: 锁表
    -d: 只备份建表语句,不备份表数据,sql语句形式备份;
    -t: 只备份表数据,sql语句形式备份,insert等;
    -T: 将建表语句跟数据分离备份,数据为纯文本txt格式,建议使用excle打开。使用此参数需要在/etc/my.cnf中增加secure-file-priv选项。
    -F:刷新binlog文件参数,使用此参数会重新生成一个二进制日志文件,以便确定全备跟增量备份的界限,以便使用增量备份还原。

    使用sql语句导入导出表

    需要设置导入导出安全路径
    编辑/etc/my.cnf

    $ vim /etc/my.cnf
    [mysqld]
    ...
    #为空表示所有路径均可导入导出
    secure-file-priv=
    
    $ /etc/init.d/mysqld restart
    

    1、导出

    mysql> select * from test into outfile "/backup/test.xlsx";
    

    2、导入

    mysql> load data infile '/backup/test.txt' into table test;
    

    参考《mysql入门与提高实践》P141

    恢复数据

    1、使用source恢复

    mysql> source test.sql
    

    2、使用mysql命令恢复

    #如果备份时使用了-B参数可直接恢复
    $ mysql test < /backup/test.sql
    
    #如果未使用-B,则指定student库恢复
    $ mysql student < /backup/test.sql
    

    建议在sql语句文件中加入字符集以防止乱码

    $ cat test.sql
    set names utf8;
    insert into test(name) values('xiaoming');
    

    mysqldump扩展参数

    --set-gtid-purged=AUTO/ON
    默认是AUTO,在构建主从时,必须使用AUTO/ON
    开启后会在导出的备份中生成如下注释,该注释表示备份中包含的GTID事务的范围
    --SET @@GLOBAL.GTID_PURGED='aa648280-a6a6-11e9-949f-000c294a1b3b:1-11';

    仅是单机备份恢复时,使用OFF
    效果:不会在备份文件中有上述注释,就跟没开GTID效果一样;
    参考资料:关于主从架构使用--set-gtid-purged参数

    --max_allowed_packet=128M
    控制备份时传输数据包的大小,当表太大时备份会有报错,需要调整此参数大小。

    学习来自:郭老师博客,secure_file_priv参数说明,老男孩深标DBA课程 第七章 备份恢复-1,《MySQL入门与提高实践》第七章

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    session
    CSS3盒子模型
    由“从按下回车到网页显示”粗谈网页优化
    springMVC之拦截器
    设置Webdriver启动chrome为默认用户的配置信息
    [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
    [Swift]LeetCode497. 非重叠矩形中的随机点 | Random Point in Non-overlapping Rectangles
    [Swift]通天遁地Swift
    [Swift]LeetCode996. 正方形数组的数目 | Number of Squareful Arrays
    [Swift]LeetCode995. K 连续位的最小翻转次数 | Minimum Number of K Consecutive Bit Flips
  • 原文地址:https://www.cnblogs.com/tz90/p/14547442.html
Copyright © 2011-2022 走看看