芯が強い人になるESTJ-A

# 从数据库原理出发,mysql,数据库备份

IT開発 Tags: 无标签 阅读: 241

截屏2021-11-29 09.16.36.jpg

美国数据可视化网站:-->link
线性查找时间复杂度:N,一个一个找,速度慢
二分查找时间复杂度:logN,拿出有序数列的中点位置,作为比较的对象,进行查找,每次找中点数
二叉查找树Binary Search Tree:时间复杂度:logN,经典二叉树数据结构,缺点:可能会退化成链表
平衡二叉树:AVL TREE,时间复杂度:logN,查找一样,增删改会通过旋转,维护树的平衡。
B树:
B+树:B树+链表,主流数据库算法。
截屏2021-11-29 13.24.01.jpg

#随机推荐,没有使用算法
select title ,description from `film` order by rand() limit 10;

#数据库备份,查询mysql到处路径
show variables like `%secure%`;

#使用into outfile将查询结果,到处到文件
select * into outfile `/var/lib/mysql-files/out_file_test `from Z;

#使用mysqldump备份
mysql逻辑备份工具,mysql server自带,输入备份SQL语句
SELECT SQL_NO_CACHE FROM `t`;
mysqldump -uroot -pxxxxx --databases d1--single-transaction >1.sql;

#再执行ll,查一下1.sql,cat看一下
##--single-transaction 在RR级别下进行,innoDB
##--lock-all-tables 使用FTWRL锁,所有表myisam
##--all-databases备份所有库
#mysqldump缺点:
1导出逻辑数据,速度慢,核心就是导出select * from xx;
2还原还需要执行sql,
优点:使用简单,热备。

##mysqldump,如何增量备份,不要全部备份
回答:做不到!!!不可以增量备份
解决方案:
binlog忠实记录了mysql数据变化。
mysqldump--》全量备份
binlog--〉增量备份

#增量备份
mysqldump -uroot -pxxxx --databases d1--single-transaction --flush-logs--master-data=2 >xxx.sql;

--flush-logs备份后切换binlog文件
--master-data=2:记录切换后binlog的文件名


>直接执行sql文件,即可还原
source test.sql;

#使用xtraBackup物理备份
直接备份innoDB底层数据文件,导出不需要转换,速度快。对数据库压力小。容易实现增量备份。

#ibbackup软件
mysql enterprise backup innoDB出品
性能优秀,

##XtraBackup--开源免费版
xtraBackup 8.0-->Mysql8.0
xtraBackup 2.4-->mysql 5.1,5.5,5.6,5.7

##Xtrabackup全量使用方法
innobackupex--user=root --password=xxxxx bakdir/


##如何防患未然

截屏2021-12-01 13.39.02.jpg

主从复制,实战

第一步上锁,
FLUSH TABLES WITH READ LOCK;

第二步:SHOW MASTER STATUS \G;

第三步:mysqldump -u root -p xxxx --all-databases --master-data >dbdump.sql


和金额相关的业务,主从数据库分离,如何让备库读到最新的数据,解决方案

#强制延时
seconds_behind_master=0