基于mariadb 10.3做了一套主从同步的集群,默认开启的GTID同步,为了做性能优化和测试,参考了一些网上的文档和资料,使用了一些工具进行测试(主要是percona系列)。
我先把性能测试和优化这一部分写完,紧接着再写关于备份部分的文档。
mariadb调优部分
一、系统内核调优。
1、执行初始化脚本进行内核调优。
2、或者手动调整。
推荐使用xfs格式,会有更好的性能表现,于是我创建了xfs格式的lvm,方便于扩展磁盘。
1 | # Set the swappiness value as root |
二、数据库配置文件优化
在my.cnf添加以下部分
1 | innodb_file_per_table=ON |
加上以上参数,mariadb 10.3会有大幅度的性能提升。
mariadb0 写入服务器my.cnf样例
1 | # |
mariadb1 读取服务器my.cnf样例
1 |
|
三、基于MySQLTuner-perl进行优化和分析
1 | perl mysqltuner.pl --host IP --user user --pass password --forcemem 8192 #机器内存 |
Linux OS Tuning for MySQL Database Performance
MariaDB基于GTID的主从复制
mariadb性能测试部分
mariadb的性能测试,是基于sysbench的sysbench-tpcc,需要先安装以后才能测试QPS。
sysbench有直接提供Centos的安装方式。
1 | curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash |
安装sysbench完毕后,开始安装sysbench-tpcc
1 | git clone https://github.com/Percona-Lab/sysbench-tpcc.git |
登录数据库,创建一个名字叫做sbt的库,开始测试。
1 | create database sbt; |
prepare data and tables
1 | ./tpcc.lua --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=sbt --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver=mysql prepare |
prepare for RocksDB
1 | ./tpcc.lua --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-password="password" --mysql-db=sbr --time=3000 --threads=64 --report-interval=1 --tables=10 --scale=100 --use_fk=0 --mysql_storage_engine=rocksdb --mysql_table_options='COLLATE latin1_bin' --trx_level=RC --db-driver=mysql prepare |
Run benchmark
1 | ./tpcc.lua --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-password="password" --mysql-db=sbt --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver=mysql run |
Cleanup
1 | ./tpcc.lua --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-password="password" --mysql-db=sbt --time=300 --threads=64 --report-interval=1 --tables=10 --scale=100 --db-driver=mysql cleanup |
会在跑分完毕后,显示数据库的QPS,Good luck!