加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 大数据 > 正文

青铜到王者,快速提升你 MySQL 数据库的段位!

发布时间:2018-04-05 06:13:58 所属栏目:大数据 来源:站长网
导读:副标题#e# 当面临快速的生活节奏而令人厌恶的工作!现在大多数人选择放松自己的方式就是玩游戏,最为突出的可能就要属手游王者荣耀。 据说这款游戏上到70旬老者,下至小学生都玩,老张我也玩。段位低得可怜(PS:最近刚玩哈),刚刚白银。 当时也想让别人带

DBA 人员,如果不能保证数据的完整性,一切操作都是徒劳无功。所以备份的重要性可想而知。虽然备份不能带来业务上的提升,还会增加我们的成本。但是没有数据的完整性,无法保证我们线上业务的正常运行。是数据损坏时最后的一个救命稻草。

备份按方法分:冷备和热备

冷备:数据库关掉,影响业务。系统级别的文件 copy(PS:现在这种基本被废弃了)

热备:数据库在线备份,不影响现有业务的进行。

在热备里面又分为:

1. 逻辑备份

a. mysqldump

b. mydumper

c. mysqlpump(mysql 5.7才出现)

2. 裸文件备份

物理底层去 copy 文件,工具是 percona-xtrabackup

按内容又可以分为:全量备份、增量备份

生产中最常用的两种方法:

1. mysqldump

2. xtrabackup

mysqldump 参数详解:

--single-transaction 用于保证innodb备份数据一致性,配合RR隔离级别使用;当发起事务,读取一个快照版本,直到备份结束时,都不会读取到本事务开始之后提交的数据;(很重要)   -q, --quick 加 SQL_NO_CACHE 标示符来确保不会读取缓存里的数据-l   --lock-tables 发起 READ LOCAL LOCK锁,该锁不会阻止读,也不会阻止新的数据插入   --master-data 两个值 1和2,如果值等于1,就会添加一个CHANGE MASTER语句(后期配置搭建主从架构) 如果值等于2,就会在CHANGE MASTER语句前添加注释(后期配置搭建主从架构)   -c, --complete-insert; 导出完整sql语句   -d,--no-data; 不导出数据,只导表结构   -t,--no-create-info; 只导数据,不导表结构   -w, --where=name ; 按条件导出想要的数据

备份数据库:

备份单个数据库或单个数据库中的指定表: mysqldump [OPTIONS] database [tb1] [tb2]…   备份多个数据库: mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3...]   备份所有数据库: mysqldump [OPTIONS] –all-databases [OPTIONS]   利用mysql命令恢复数据: mysql -uroot -proot23 db_name < table_name.sql   xtrabackup备份原理分析: 对于Innodb,它是基于Innodb的crash recovery功能进行备份。

数据库崩溃恢复原理介绍:Innodb 维护了一个 redo log,它记录着 Innodb 所有数据的真实修改信息,当数据库重启过程中,redo log 会应用所有已经提交的事务进行前滚,并把所有未提交的事务进行回滚,来保证宕机那一时刻的数据完整性。

XtraBackup 在备份的时候并不锁定表,而是一页一页地复制 InnoDB 的数据,与此同时,XtraBackup 还有另外一个线程监视着 transactions log,一旦 log 发生变化,就把变化过的 log pages 复制走。在全部数据文件复制完成之后,停止复制 logfile。

常用命令:

首先需要创建备份目录:/opt/data/ innobackupex  --no-timestamp --defaults-file=/etc/my.cnf --user root  --socket=/tmp/mysql.sock --password root123  /opt/data/all-20170719-bak   注--no-timestamp 该参数的含义:不需要系统创建时间目录,自己可以命名;

增备原理分析:

在完整备份和增量备份文件中都有一个文件 xtrabackup_checkpoints 会记录备份完成时检查点的LSN。在进行新的增量备份时,XtraBackup 会比较表空间中每页的 LSN 是否大于上次备份完成的 LSN,如果是,则备份该页,并记录当前检查点的 LSN。

7月20日的增备信息

[root@node3 all-20170720-incr]# cat xtrabackup_checkpoints  backup_type = incremental from_lsn = 267719862 to_lsn = 267720940 last_lsn = 267720940 compact = 0

7月21日的增备信息

[root@node3 all-20170721-incr2]# cat xtrabackup_checkpoints backup_type = incremental from_lsn = 267720940 to_lsn = 267721260 last_lsn = 267721260 compact = 0

可以看出 7月20日 的结束 lsn 号(to_lsn)是 7月21日 的开始 lsn 号(from_lsn)。

增备常用命令:

7月20日的增量文件

./innobackupex  --no-timestamp --user root --socket=/tmp/mysql.sock  --password root123 --defaults-file=/etc/my.cnf --incremental  --incremental-basedir=/opt/data/all-20170719-bak  /data/xtrabackup/all-20170720-incr

注#–incremental-basedir:用来标识当前的增备从哪里开始

7月21日的增量文件

./innobackupex --no-timestamp --user root --socket=/tmp/mysql.sock  --password root123 --defaults-file=/etc/my.cnf --incremental  --incremental-basedir=/data/xtrabackup/all-20170720-incr /data/xtrabackup/all-20170721-incr2

完整备份集=全备+增备1+增备2

恢复操作:

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读