1.创建一个slap.sh的文件
vim slap.sh
2.编辑测试脚本
#!/bin/bash
HOSTNAME="localhost"
PORT="3306"
USERNAME="root"
PASSWORD="123"
DBNAME="web01"
TABLENAME="t1"
#create database
mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "drop database if exists ${DBNAME}"
create_db_sql="create database if not exists ${DBNAME}"
mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
#create table
create_table_sql="create table if not exists ${TABLENAME}(stuid int not null primary key,stuname varchar(20) not null,stusex char(1)
not null,cardid varchar(20) not null,birthday datetime,entertime datetime,address varchar(100)default null)"
mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${create_table_sql}"
#insert data to table
i="1"
while [ $i -le 500000 ]
do
insert_sql="insert into ${TABLENAME} values($i,'alexsb_$i','1','110011198809163418','1990-05-16','2017-09-13','oldboyedu')"
mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${insert_sql}"
let i++
done
#select data
select_sql="select count(*) from ${TABLENAME}"
mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"
3.执行测试脚本
[root@web01 ~]# sh slap.sh 1>/dev/null 2>&1 --标准输出到空设备文件,标准错误输出也重定向到空设备文件
4.检查数据可用性
mysql> select count(*) from t1;
5.在没有优化之前我们使用mysqlslap来进行压力测试
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 --iterations=1 --create-schema='oldboy' \
--query="select * from oldboy.t1 where stuname='alexsb_100'" engine=innodb \
--number-of-queries=200000 -uroot -p123456 -verbose
InnoDB
MyISAM
MEMORY
ARCHIVE
FEDERATED
EXAMPLE
BLACKHOLE
MERGE
NDBCLUSTER
CSV
还可以使用第三方存储引擎。
插件类存储引擎,是在表级别设定的.
MySQL 5.5 以后默认存储引擎innodb
TokuDB ---->zabbix : insert 2-3 ,压缩比 8-10倍
myrocks
MySQL存储引擎介绍(1)
MySQL存储引擎介绍(2)
1.文件系统
操作系统组织和存取数据的一种机制
文件系统是一种软件
2.类型ext2 3 4 ,xfs 数据
不管使用什么文件系统,数据内容不会变化
不同的是,存储空间、大小、速度。
3.MySQL引擎
可以理解为,MySQL的“文件系统”,只不过功能更加强大。
4.MySQL引擎功能
除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。
Innodb存储引擎与MyISAM区别
Innodb | MyISAM |
---|---|
MVCC(多版本并发控制) | 不支持 |
锁(行级别) | 表级别 |
外键 | 不支持 |
事务 | 不支持 |
热备 | 温备 |
CSR(断电时,故障自动恢复) | 不支持 |
表的名字.frm,表的名字.ibd | 表的名字.frm,表的名字.MYD,表的名字.MYI |
show engines;
show create table world.city;
SELECT @@default_storage_engine; --查看默认的存储引擎
show table status like 'city';
show table status like 'city'\G
来自于Oracle
共享表空间:----->类似于Oracle管理模式
独立表空间:每个表单独使用表空间存储
5.5默认:共享表空间
5.6以后:表默认管理模式是独立表空间,共享表空间也存在
共享表空间: ibdata1
存了什么?
系统数据
undo日志
磁盘临时表
独立表空间:
t1.ibd ---->t1表的数据和索引
t1.frm ---->t1表的列相关信息
共享表空间:
我们建议,在初始化数据的时候就配置好
一般建议2-3个,512M
/etc/my.cnf
innodb_data_file_path=ibdata1:76M;ibdata2:50M:autoextend
mysql_install_db
独立表空间:
一个表一个ibd文件,存储表数据和索引
show variables like 'innodb_file_per_table';
innodb 的表
表数据和索引:t1.ibd
列的基本信息:t1.frm
其他的属性信息:基表
alter table t1 discard tablespace; 将表的ibd文件删掉
alter table t1 import tablespace; 将idb文件导入回来
jira(bug追踪) 、 confluence(内部知识库) ------>LNMT
-------------------
联想服务器(IBM)
磁盘500G 没有raid
centos 6.8
mysql 5.6.33 innodb引擎 独立表空间
备份没有,日志也没开
------------------
编译→制作rpm
/usr/bin/mysql
/var/lib/mysql
confulence jira
所有软件和数据都在"/"
------------
断电了,启动完成后“/” 只读
fsck 重启
启动mysql启动不了。
结果:confulence库 在 , jira库不见了
------------
求助:
这种情况怎么恢复?
我问:
有备份没
求助:
连二进制日志都没有,没有备份,没有主从
我说:
没招了,jira需要硬盘恢复了。
求助:
1、jira问题拉倒中关村了
2、能不能暂时把confulence库(107张表)先打开用着
将生产库confulence,拷贝到1:1虚拟机上/var/lib/mysql,直接访问时访问不了的
问:有没有工具能直接读取ibd
我说:我查查,最后发现没有
我想出一个办法来:
create table xxx
alter table confulence.t1 discard tablespace;
alter table confulence.t1 import tablespace;
虚拟机测试可行。
CREATE TABLE `city_new` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
KEY `idx_popu` (`Population`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1;
面临的问题,confulence库中一共有107张表。
1、创建107和和原来一模一样的表。
他有2016年的历史库,我让他去他同事电脑上 mysqldump备份confulence库
mysqldump -uroot -ppassw0rd -B confulence --no-data >test.sql
拿到你的测试库,进行恢复
到这步为止,表结构有了。
2、表空间删除。
select concat('alter table ',table_schema,'.'table_name,' discard tablespace;') from information_schema.tables where table_schema='confluence' into outfile '/tmp/discad.sql';
source /tmp/discard.sql
执行过程中发现,有20-30个表无法成功。主外键关系
很绝望,一个表一个表分析表结构,很痛苦。
set foreign_key_checks=0 跳过外键检查。
把有问题的表表空间也删掉了。
3、拷贝生产中confulence库下的所有表的ibd文件拷贝到准备好的环境中
select concat('alter table ',table_schema,'.'table_name,' import tablespace;') from information_schema.tables where table_schema='confluence' into outfile '/tmp/discad.sql';
4、验证数据
表都可以访问了,数据挽回到了出现问题时刻的状态(2-8)
额外扩展
drop database world -----> rm -rf world
drop table city ----> rm -rf frm ibd 元数据
基于Linux文件句柄恢复rm的文件
1 CUR_DIR = $(shell pwd) 2 3 CFLAGS = -g -Wall 4 GCC = gcc 5 GXX = g++ 6 7 TARGET = exe.out 8 9 SRC_FILES += $(shell find $(CUR_DIR) -name *.cc) \10 += $(shell find $(CU
最近发现自己好多原来学过的东西都忘记了,是时候该补补复习一下了。先来几个题目问下自己。(1)字符串里的查找用什么算法?(2)Dijstra算法(3)红黑树(4)有这样一个数据结构:有一个新定义的队列结构,可以push和pop,你还可以知道这个数据结构里的最小值是多少。所有操作(push、pop和得出最小值)都要在常数时间内完成。请你设计这个数据结构。 (5)怎样在1000000
前言忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串。相信不少同学会有同感。在Python中,我们经常会遇到字符串的拼接问题,几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型。而拼接字符串是必备的一种技能。今天,我跟大家一起来学习Python拼接字符串的七种方式。下面话不多说了,来一起看看详细的介绍吧1、来自C语言的%方式print(’%s %..._format_str:str='--->'.join(words); ^ syntaxerror: invalid syntax
首先引入在CYGWIN平台上使用Bundlerhttp://blog.csdn.net/u010922186/article/details/41845485,该博客已经很详细的介绍了Windows环境下编译Bundler,CMVS,PMVS,个人在编译过程中,就出现的一些问题做一些补充。_windows cmvs-pmvs
"""用户登陆程序需求: 1. 输入用户名和密码; 2. 判断用户名和密码是否正确? (name='root', passwd='westos') 3. 为了防止暴力破解, 登陆仅有三次机会, 如果超过三次机会, 报错提示;""" # 为了让登陆代码循环三次for i in range(3): name = input("用户名:") pa...
在4.x的版本中,使用自定义安装无法成功!不考虑磁盘空间的话,直接默认下去就行。下面给出...一定程度上自定义的方法1.首选选择complete到下面界面中,把这两个目录改到非C盘下。注意一定要根目录,非根目录还是会出现和自定义安装一样的问题。后面的一路next就ok了。最后检查服务中安装成功。..._mogodb 4.x 版本需要什么jar
碰撞传感器:当有物体与传感器发生碰撞时产生反应碰撞传感器设置方式:点击碰撞体传感器,选择要设置为传感器的对象,选择形状,指示线为碰撞范围,如果需要传感器有更大的范围可以手动更改形状属性。选择自定义,指定点为圆柱面圆心,高度100mm,还可以通过点对话框继续调整点的位置传输面:赋予碰撞体功能,使传输面上的刚体发生移动。传输面设置方式:需要先将物体设置为碰撞体,点击传输面,选择面,选择矢量方向,设置速度。对象源:生成物体(及刚体)对象源设置..._nx碰撞传感器和碰撞体如何实现控制
中国公益在线深圳11月14日电(张强)了解中国大健康产业发展,紧跟5G智慧医疗、AI+医疗、可穿戴医疗、医疗大数据、医疗机器人、智慧养老等医疗行业热点,由博闻创意会展统筹组织的“第二十一届高交会智慧医疗健康展”,汇聚了医疗行业知名品牌及全球买家,重点展示国内外企业在智慧医疗以及大健康领域的突破。中国智慧医疗的市场需求正不断扩大。据预测,2020年中国智慧医疗市场规模将超过1000亿元人民币..._医疗健康 展会分析
利用PCL库,简简单单地构建一个Mesh三维模型。从输入左右影像和相机内参开始,输出Mesh模型。_mesh三维模型
转:http://blog.csdn.net/xyz_lmn/article/details/12200133分类: android 网络编程2013-10-08 18:53 4782人阅读 评论(6) 收藏 举报目录(?)[+]Apache HTTP Client DefaultHttpClient
#import "ViewController.h"#import @interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; //学习内容 /* 1.控件 UIView UILabel UITex
提案内容:从当前merge list 里面拿出几对求平均,结果放入list中,替代HEVC中的联合MV?。例如{(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}。每一个参考帧list的mv是分别计算的,这一对mv分以下几种情况: 1.两个mv都可用,求平均; 2.只有一个mv可用,用该mv; 3.无mv可用,禁止。结果:长度分为6,8,10,在RA CLASS D& F 上约有0.5%的bit-rate节省,在LB上cl...