---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笔记相关推荐

  1. mysql sql测试_MySQL语句测试——数据查询

    MySQL语句测试--数据查询 3.4 数据查询 一.单表查询 /*1.选择表中的若干列,各个列的先后顺序和语句中列名从左到右的顺序一致 select 目标表达式 from 表名; */ /*(1)s ...

  2. mysql 索引 测试_mysql的索引测试

    Mysql高级 mysql索引测试 一.生成测试数据 1.创建测试表 /*创建t_user表用于数据测试*/ DROP TABLE IF EXISTS t_user; CREATE TABLE `t_ ...

  3. mysql ndb 测试_Mysql性能2:基于JDBC的MySQL NDB性能测试结果

    测试场景: 硬件:2台HP G6(Host1和Host2) 操作系统:Suse10 SP2 软件:Host1上有一个Management Node,一个Data Node和一个Mysql Server ...

  4. mysql ndb 关闭_Mysql NDB 常见问题

    在安装和使用mysql cluster集群的过程中,遇到了很多问题,现在把那些问题列出来,并复上解决方法,希望大家在以后的使用中能少花时间少走弯路 1.导入数据的时候遇到如下报错: ERROR 100 ...

  5. mysql ndb 关闭_MySQL NDB Cluster环境启动与关闭

    2.1 Cluster环境启动与关闭 2.1.1启动Cluster 建议启动顺序:首先启动管理节点,然后是数据节点,最后是SQL节点. (1)启动管理节点 rm /usr/local/mysql/my ...

  6. mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务

    逆天十三少 发表于:2020-11-12 08:12 阅读: 90次 这篇教程主要讲解了MySQL学习笔记十:游标/动态SQL/临时表/事务,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家一 ...

  7. 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...

    前面讲了SQL优化以及索引的使用.设计优化了,那么接下来就到表的设计与优化啦!!!真实地去设计优化单表结构以及讲述多表设计基本原则(结合真实的生产环境的取舍来讲述). 文章结构:(1)单表设计与优化: ...

  8. mysql router测试_MySQL 主从复制配置 + MySQL Router 部署使用测试

    三.验证测试 1.读写分离测试 读写分离是通过在配置文件中配置的不同端口实现 由于MySQLrouter节点未安装mysql客户端程序,所以在mysqldb1节点测试 登录写节点:端口7001 mys ...

  9. 怎么进行mysql注入测试_MySQL for Java的SQL注入测试

    只要你学JDBC,基本上所有的人都会和你说,Statement不能防止SQL注入, PreparedStatement能够防止SQL注入. 基本上参加工作了一段时间之后还是这么认为的, 没错, 这句是 ...

最新文章

  1. 【剑指offer-Java版】22栈的压入弹出序列
  2. Microbit-高温报警系统
  3. Understand one Simple Factory Pattern
  4. GDCM:二个DICOM文件的diff差异的测试程序
  5. adb server is out of date. linux,adb server is out of date. killing完美解决
  6. 微软总裁比尔.盖茨给即将走出学校、踏入社会的青年一代下列11点忠告
  7. C++malloc,calloc,realloc,free函数
  8. PHP基础知识之————PDO预处理语句
  9. python 执行shell 事务_python中执行shell的两种方法总结
  10. JavaScript学习笔记——正则验证
  11. 比较三个数,求最大数字 ( 应用条件运算符:?)
  12. 蕊动矿机linux cpu超频,蚂蚁l3矿机超频方法!最佳超频参数!  |  呆毛网
  13. xshell 官网下载
  14. Dell Precision M4800 AppleALC声卡驱动修复教程
  15. 关于最优化问题的个人理解以及黑塞矩阵的示例
  16. 01 分布式系统架构的冰与火
  17. 技校学高铁还是计算机,华蓥高铁动车司学那个专业好,高铁职业技术学校面试...
  18. 职场纵横:IT职位全面解析(计算机类要找工作的朋友多看看)
  19. 倩女手游怎么查看服务器信息,倩女幽魂手游新增互通服务器 互通服务器信息介绍[图]...
  20. spinner requestlayout() improperly called by during layout running second layout pass

热门文章

  1. 线性方程组(A是上三角矩阵时)的C++求解
  2. 5岁自学python编程-一张图告诉你孩子学编程怎么选
  3. 2020年python工资一般多少-武汉Python薪资一般是多少?真实数据告诉你
  4. python是干嘛的-python是什么?python可以用来干什么?
  5. python简单爬虫代码-最精简的爬虫 --仅需4行代码(python)
  6. 自学python要看哪些书-学习机器学习应该看哪些书籍?
  7. 免费python网络课程-2019年10种免费的Python学习课程
  8. 从零开始学习python编程-Python3.5从零开始学 PDF 下载
  9. python不会英语不会数学怎么自学-学习Python,数学英语基础很重要吗?
  10. python与excel-Python与Excel之间的交互