mysql ndb 测试_mysql ndb笔记
---from mysql性能调优与架构+自己笔记
1,大致环境
SQLNode1:192.168.70.1
SQLNode2:192.168.70.2
StorageNode1:192.168.70.3
StorageNode2:192.168.70.4
ManageNode1:192.168.70.5
2,ndb编译
//安装SQL节点(SQLNode)
[root@server /]#./configure --prefix=/usr/local/mysql --without-debug --without-bench \
--enable-thread-safe-client --enable-assembler --with-charset=utf8 \
--with-extra-charsets=complex --with-client-ldflags=-all-static \
--with-MySQLd-ldflags=-all-static --with-ndbcluster --with-server-suffix=-MAX \
--datadir=/data/mysqldata --with-unix-socket=/usr/local/mysql/sock/mysql.sock
[root@server /]#make
[root@server /]#make install
2,编辑/etc/my.conf
[client]
socket=/usr/local/mysql/sock/mysql.sock
[MySQLd]
socket = /usr/local/mysql/sock/mysql.sock
ndbcluster
[MySQL_cluster]
ndb-connectstring = 192.168.70.5
[root@server /]#cd /usr/local/mysql
[root@server mysql]# bin/mysql_install_db --user=mysql --socket=/usr/local/mysql/sock/mysql.sock
[root@server mysql]#chown -R root .
[root@server mysql]#chgrp -R mysql .
[root@server mysql]#chown -R mysql.mysql /usr/local/mysql/etc
[root@server mysql]#chown -R mysql.mysql /usr/local/mysql/sock
[root@server mysql]#chown -R mysql.mysql /usr/local/mysql/log
//安装NDB存储节点(StorageNode)
在mysql官方用rpm包安装
编辑/etc/my.conf
[MySQL_cluster]
ndb-connectstring = 192.168.70.5
//安装管理节点(ManageNode)
管理节点需要ndb_mgm和ndb_mgmd两个程序即可。在mysql节点的安装目录中得bin目录下可以找到。
配置文件/var/lib/mysql-cluster/config.ini
[NDB DEFAULT]
NoOfReplicas=2
DataMemory=64m
IndexMemory=16m
[TCP_DEFAULT]
portnumber=2202
[NDB_MGMD]
id=1
hostname=192.168.70.5
datadir=/var/lib/mysql-cluster
[NDBD]
id=2
hostname=192.168.70.3
datadir=/data/mysqldata
[NDBD]
id=3
hostname=192.168.70.4
datadir=/drbddata/mysqldata
[MySQLD]
id=4
hostname=192.168.70.1
[MySQLD]
id=5
hostname=192.168.70.2
//测试搭建环境
NDB管理
1,各节点启动与关闭
启动顺序:管理节点--->NDB节点--->SQL节点。
//启动管理节点
[root@server /]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
//启动用于存储数据的ndb节点
要启动存储节点,必须在每一台ndb 节点主机上面都执行ndbd 程序,如果是第一次启动,则需要添加--initial 参数,以便进行ndb 节点的初始化工作。但是,在以后的启动过程中,是不能添加该参数的,否则ndbd 程序会清除在之前建立的所有用于恢复的数据。
文件和日志文件
[root@server /]# ndbd --initial
//启动SQL节点
[root@server /]#mysqld_safe --user=mysql &
节点状态检查
通过ndb_mgm来查看各节点状态
[root@server /]#ndb_mgm -e show
节点的关闭操作
在MySQL Cluster 环境中,NDB 节点和管理节点的关闭都可以在管理节点的管理程序中
完成,但是SQL 节点却没办法。
所以,在关闭整个MySQL Cluster 环境或者关闭某个SQL节点的时候,首先必须到SQL 节点主机上来关闭SQL 节点程序。关闭方法和MySQL Server的关闭一样,就不累述。而NDB 节点和管理节点则都可以在管理节点通过管理程序来完成。
ndb_mgm>shutdown
基本优化思路
由于mysql cluster是一个分布式的数据库系统,与单机mysql server在优化方面区别主要体现在:各节点之间的协作配置以及网络环境相关的优化。访问需要经过超过一个节点(一个SQL节点和一个NDB节点)才能完成,所以各节点之间的协作配合就显得尤为重要。
1,各节点之间存在的大量的数据通讯,mysql cluster支持(tcp/ip,sci socket等方式)来进行互联,还支持myrinet,infiniband,via接口。
2,sql节点和ndb主机性能应该匹配。
数据库性能状态
QPS(每秒Query 量):这里的QPS 实际上是指MySQL Server 每秒执行的Query
总量,在MySQL 5.1.30 及以下版本可以通过Questions 状态值每秒内的变化量
来近似表示,而从MySQL 5.1.31 开始,则可以通过Queries 来表示。Queries 是
在MySQL 5.1.31 才新增的状态变量。主要解决的问题就是Questions 状态变量
并没有记录存储过程中所执行的Query(当然,在无存储过程的老版本MySQL 中
则不存在这个区别),而Queries 状态变量则会记录。二者获取方式:
QPS=questions(or queries)/Seconds
mysql> SHOW /*!50000 GLOBAL */ STATUS like 'Queries';
mysql> SHOW /*!50000 GLOBAL */ STATUS like 'Questions';
TPS(每秒事务量): 在MySQL Server 中并没有直接事务计数器,我们只能通过
回滚和提交计数器来计算出系统的事务量。
TPS = (Com_commit + Com_rollback) / Seconds
如果我们还使用了分布式事务,那么还需要将Com_xa_commit 和
Com_xa_rollback 两个状态变量的值加上。
//Key Buffer 命中率:Key Buffer 命中率代表了MyISAM 类型表的索引的Cache命中率。该命中率的大小将直接影响MyISAM 类型表的读写性能。Key Buffer 命中率实际上包括读命中率和写命中率两种,MySQL 中并没有直接给出这两个命中率的值,但是可以通过如下方式计算出来:
key_buffer_read_hits = (1 - Key_reads / Key_read_requests) * 100%
key_buffer_write_hits= (1 - Key_writes / Key_write_requests) * 100%
获取所需状态变量值:
mysql> SHOW /*!50000 GLOBAL */ STATUS LIKE 'Key%';
//Innodb Buffer 命中率:这里Innodb Buffer 所指的是innodb_buffer_pool,也就是用来缓存Innodb 类型表的数据和索引的内存空间。
MySQL Server 提供的相应状态值计算出其命中率:
innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100%
mysql>SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Innodb_buffer_pool_read%';
//Query Cache 命中率:如果我们使用了Query Cache,那么对Query Cache 命中率进行监控:
Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100%
mysql>SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Qcache%';
Table Cache 状态量:Table Cache 的当前状态量可以帮助我们判断系统参数table_open_cache 的设置是否合理。如果状态变量Open_tables 与Opened_tables 之间的比率过低,则代表Table Cache 设置过小,个人认为该值处于80% 左右比较合适。注意,这个值并不是准确的Table Cache 命中率。获取所需状态变量值:
mysql>SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Open%';
Thread Cache 命中率:Thread Cache 命中率能够直接反应出我们的系统参数thread_cache_size 设置的是否合理。一个合理的thread_cache_size 参数能够节约大量创建新连接时所需要消耗的资源。Thread Cache 命中率计算方式如下:
Thread_cache_hits = (1 - Threads_created / Connections) * 100%
mysql>SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Thread%';
锁定状态:锁定状态包括表锁和行锁两种,我们可以通过系统状态变量获得锁定总次数,锁定造成其他线程等待的次数,以及锁定等待时间信息。
mysql>SHOW /*!50000 GLOBAL*/ STATUS LIKE '%lock%';
复制延时量:复制延时量将直接影响了Slave 数据库处于不一致状态的时间长短。如果我们是通过Slave 来提供读服务,就不得不重视这个延时量。在Slave 节点上执行:
mysql> show slave status\G;
取Seconds_Behind_Master 项的值来了解Slave 当前的延时量(单位:秒);
Tmp table 状况:Tmp Table 的状况主要是用于监控MySQL 使用临时表的量是否过多,是否有临时表过大而不得不从内存中换出到磁盘文件上;
mysql> SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Created_tmp%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| Created_tmp_disk_tables | 1184 |
....
| Created_tmp_tables | 2241 |
+-------------------------+-------+
从中可以发现2241次使用临时表,其中1184次临时表比较大,无法在内存中完成,必须使用磁盘文件。如果Created_tmp_disk_tables非常大,可能是系统中排序操作过多,或者表连接方式不是很优化。如果Created_tmp_disk_tables/ Created_tmp_tables比率超过10%,考虑tmp_table_size参数设置过小:
mysql> show variables like 'tmp_table_size';
+----------------+----------+
| Variable_name | Value |
+----------------+----------+
| tmp_table_size | 16777216 |
+----------------+----------+
Binlog Cache 使用状况:Binlog Cache 用于存放还未写入磁盘的Binlog 信息。
mysql> SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Binlog_cache%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | 219 |
| Binlog_cache_use | 301 |
如果Binlog_cache_disk_use 值不为0,则说明Binlog Cache 大小可能不够,建议增加binlog_cache_size 系统参数大小。
Innodb_log_waits 量:Innodb_log_waits 状态变量直接反应出Innodb Log Buffer 空间不足造成等待的次数。
mysql>SHOW /*!50000 GLOBAL*/ STATUS LIKE 'Innodb_log_waits';
该变量值发生的频率将直接影响系统的写入性能,所以当该值达到每秒1 次时就该增加系统参数innodb_log_buffer_size 的值.
存储引擎支持事务
InnoDB:通过MVCC支持事务,允许COMMIT、ROLLBACK和保存点。
NDB:通过MVCC支持事务,允许COMMIT和ROLLBACK。
BDB:支持事务,允许COMMIT和ROLLBACK
mysql ndb 测试_mysql ndb笔记相关推荐
- mysql sql测试_MySQL语句测试——数据查询
MySQL语句测试--数据查询 3.4 数据查询 一.单表查询 /*1.选择表中的若干列,各个列的先后顺序和语句中列名从左到右的顺序一致 select 目标表达式 from 表名; */ /*(1)s ...
- mysql 索引 测试_mysql的索引测试
Mysql高级 mysql索引测试 一.生成测试数据 1.创建测试表 /*创建t_user表用于数据测试*/ DROP TABLE IF EXISTS t_user; CREATE TABLE `t_ ...
- mysql ndb 测试_Mysql性能2:基于JDBC的MySQL NDB性能测试结果
测试场景: 硬件:2台HP G6(Host1和Host2) 操作系统:Suse10 SP2 软件:Host1上有一个Management Node,一个Data Node和一个Mysql Server ...
- mysql ndb 关闭_Mysql NDB 常见问题
在安装和使用mysql cluster集群的过程中,遇到了很多问题,现在把那些问题列出来,并复上解决方法,希望大家在以后的使用中能少花时间少走弯路 1.导入数据的时候遇到如下报错: ERROR 100 ...
- mysql ndb 关闭_MySQL NDB Cluster环境启动与关闭
2.1 Cluster环境启动与关闭 2.1.1启动Cluster 建议启动顺序:首先启动管理节点,然后是数据节点,最后是SQL节点. (1)启动管理节点 rm /usr/local/mysql/my ...
- mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务
逆天十三少 发表于:2020-11-12 08:12 阅读: 90次 这篇教程主要讲解了MySQL学习笔记十:游标/动态SQL/临时表/事务,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家一 ...
- 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...
前面讲了SQL优化以及索引的使用.设计优化了,那么接下来就到表的设计与优化啦!!!真实地去设计优化单表结构以及讲述多表设计基本原则(结合真实的生产环境的取舍来讲述). 文章结构:(1)单表设计与优化: ...
- mysql router测试_MySQL 主从复制配置 + MySQL Router 部署使用测试
三.验证测试 1.读写分离测试 读写分离是通过在配置文件中配置的不同端口实现 由于MySQLrouter节点未安装mysql客户端程序,所以在mysqldb1节点测试 登录写节点:端口7001 mys ...
- 怎么进行mysql注入测试_MySQL for Java的SQL注入测试
只要你学JDBC,基本上所有的人都会和你说,Statement不能防止SQL注入, PreparedStatement能够防止SQL注入. 基本上参加工作了一段时间之后还是这么认为的, 没错, 这句是 ...
最新文章
- 【剑指offer-Java版】22栈的压入弹出序列
- Microbit-高温报警系统
- Understand one Simple Factory Pattern
- GDCM:二个DICOM文件的diff差异的测试程序
- adb server is out of date. linux,adb server is out of date. killing完美解决
- 微软总裁比尔.盖茨给即将走出学校、踏入社会的青年一代下列11点忠告
- C++malloc,calloc,realloc,free函数
- PHP基础知识之————PDO预处理语句
- python 执行shell 事务_python中执行shell的两种方法总结
- JavaScript学习笔记——正则验证
- 比较三个数,求最大数字 ( 应用条件运算符:?)
- 蕊动矿机linux cpu超频,蚂蚁l3矿机超频方法!最佳超频参数! | 呆毛网
- xshell 官网下载
- Dell Precision M4800 AppleALC声卡驱动修复教程
- 关于最优化问题的个人理解以及黑塞矩阵的示例
- 01 分布式系统架构的冰与火
- 技校学高铁还是计算机,华蓥高铁动车司学那个专业好,高铁职业技术学校面试...
- 职场纵横:IT职位全面解析(计算机类要找工作的朋友多看看)
- 倩女手游怎么查看服务器信息,倩女幽魂手游新增互通服务器 互通服务器信息介绍[图]...
- spinner requestlayout() improperly called by during layout running second layout pass
热门文章
- 线性方程组(A是上三角矩阵时)的C++求解
- 5岁自学python编程-一张图告诉你孩子学编程怎么选
- 2020年python工资一般多少-武汉Python薪资一般是多少?真实数据告诉你
- python是干嘛的-python是什么?python可以用来干什么?
- python简单爬虫代码-最精简的爬虫 --仅需4行代码(python)
- 自学python要看哪些书-学习机器学习应该看哪些书籍?
- 免费python网络课程-2019年10种免费的Python学习课程
- 从零开始学习python编程-Python3.5从零开始学 PDF 下载
- python不会英语不会数学怎么自学-学习Python,数学英语基础很重要吗?
- python与excel-Python与Excel之间的交互