数据库压测(sysbench)及服务器和MySQL数据库监控(Prometheus + Grafana)
服务器系统 | IP | 部署软件 |
---|---|---|
CentOS 5.7 | 192.168.157.137 | MySQL,node_exporter,mysqld_exporter |
CentOS 5.7 | 192.168.157.141 | Grafana + Prometheus |
CentOS 5.7 安装MySQL 5.7
https://blog.csdn.net/li1325169021/article/details/121515102
sysbench数据库压测工具
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
~> yum -y install sysbench
~> sysbench --version
-
测试数据准备
sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_read_write \ --db-ps-mode=disable prepare
–db-driver=mysql:指定mysql数据库驱动
–time=300:连续访问300秒
–threads=10:用10个线程模拟并发访问
–report-interval=1:每隔1秒输出压测情况
–mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user
–mysql-password=test_user:指定数据库机器相关信息
–mysql-db=test_db --tables=20 --table_size=1000000:在数据库test_db中创建20张表,每张表中含有100万条数据
oltp_read_write:执行oltp数据库的读写测试
–db-ps-mode=disable:禁止ps模式
-
全方位测试
-
测试数据库的综合读写TPS,使用
oltp_read_write
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_read_write \ --db-ps-mode=disable run
-
测试数据库的只读性能,使用
oltp_read_only
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_read_only \ --db-ps-mode=disable run
-
测试数据库的删除性能,使用
oltp_delete
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_delete \ --db-ps-mode=disable run
-
测试数据库的更新索引字段的性能,使用
oltp_update_index
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_update_index \ --db-ps-mode=disable run
-
测试数据库的更新非索引字段的性能,使用
oltp_update_on_index
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_update_on_index \ --db-ps-mode=disable run
-
测试数据库的插入的性能,使用
oltp_insert
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_insert \ --db-ps-mode=disable run
-
测试数据库的写入性能,使用
oltp_write_only
模式sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_write_only \ --db-ps-mode=disable run
-
-
清理数据
sysbench --db-driver=mysql --time=300 --threads=10 \ --report-interval=1 --mysql-host=127.0.0.1 \ --mysql-port=3306 --mysql-user=test_user \ --mysql-password=test_user --mysql-db=test_db \ --tables=20 --table_size=1000000 oltp_write_read \ --db-ps-mode=disable cleanup
Prometheus + Grafana 监控系统
Promethus采集监控系统
从 https://prometheus.io/download/下载以下三个压缩包:
采集监控系统:prometheus-2.1.0.linux-amd64.tar.gz
监控服务器信息:node_exporter-0.15.2.linux-amd64.tar.gz
监控MySQL信息:mysqld_exporter-0.10.0.linux-amd64.tar.gz
scrape_configs:
- file_sd_configs:
- files:
- host.yml
job_name: Host
metrics_path: /metrics
relabel_configs:
- source_labels: [__address__]
regex: (.*)
target_label: instance
replacement: $1
- source_labels: [__address__]
regex: (.*)
target_label: __address__
replacement: $1:9100
- file_sd_configs:
- files:
- mysql.yml
job_name: MySQL
metrics_path: /metrics
relabel_configs:
- source_labels: [__address__]
regex: (.*)
target_label: instance
replacement: $1
- source_labels: [__address__]
regex: (.*)
target_label: __address__
replacement: $1:9104
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
~> /opt/apps/softwares/prometheus/prometheus --storage.tsdb.retention=30d &
Grafana报表系统
部署 Grafana
下载以下两个压缩包:
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3.linux-x64.tar.gz
https://github.com/percona/grafana-dashboards/archive/v1.6.1.tar.gz
安装Grafana
~> tar xf grafana-4.6.3.linux-x64.tar.gz -C /opt/apps/softwares
~> cd /opt/apps/softwares/
~> mv grafana-4.6.3 grafana
~> /opt/apps/softwares/grafana/bin/grafana-server &
导入面板
~> tar xvf grafana-dashboards-1.6.1.tar.gz
~> cd grafana-dashboards-1.6.1
~> updatedb
~> locate json | grep dashboards/
通过Grafana页面进行Dashboards监控面板的导入
添加Prometheus数据源,Type选中Prometheus,配置Prometheus地址即可
添加MySQL机器的监控
~> tar xf node_exporter-0.15.2.linux-amd64.tar -C /opt/apps/softwares
~> mv node_exporter-0.15.2.linux-amd64 node_exporter
~> nohup /opt/apps/softwares/node_exporter &
添加MySQL数据库的监控
~> export DATA_SOURCE_NAME='root:668566@(127.0.0.1:3306)/'
~> echo "export DATA_SOURCE_NAME='root:668566@(127.0.0.1:3306)/'" >> /etc/profile
~> nohup /opt/apps/softwares/mysqld_exporter/mysqld_exporter \
--collect.info_schema.processlist \
--collect.info_schema.innodb_tablespaces \
--collect.info_schema.innodb_metrics \
--collect.perf_schema.tableiowaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tablelocks \
--collect.engine_innodb_status \
--collect.perf_schema.file_events \
--collect.binlog_size \
--collect.info_schema.clientstats \
--collect.perf_schema.eventswaits &