Gazelle Mysql 环境
一、Mysql 安装
下载相关依赖:
yum -y install libmpc libmpc-devel
yum -y install bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel wget tar gcc gcc-c++ git rpcgen cmake libtirpc-devel openldap-devel openldap net-tools vim numactl m4
下载mysql.tar.gz包到/root:
test -d /home/mysql/data || mkdir -p /home/mysql/data /home/mysql/tmp /home/mysql/run /home/mysql/log /home/mysql/relaylog
tar -xzf /root/mysql-boost-8.0.25.tar.gz -C /root
mkdir mysql-8.0.25/build
cd mysql-8.0.25/build
make clean
cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/mysql/data -DWITH_BOOST=../boost/boost_1_73_0
make -j32
make -j 32 install
/usr/local/mysql/bin/mysql --version
修改 mysql 配置文件:
mysql_cfg=/etc/my.cnf
mysqlfile=/home
echo -e "[mysqld_safe]
log-error=${mysqlfile}/mysql/log/mysql.log
pid-file=${mysqlfile}/mysql/run/mysqld.pid
[mysqldump]
quick
[mysql]
no-auto-rehash
[client]
socket=${mysqlfile}/mysql/run/mysql.sock
default-character-set=utf8
[mysqld]
basedir=/usr/local/mysq
socket=${mysqlfile}/mysql/run/mysql.sock
tmpdir=${mysqlfile}/mysql/tmp
datadir=${mysqlfile}/mysql/data
default_authentication_plugin=mysql_native_password
port=3306
user=root
" > ${mysql_cfg}
Mysql 启动:
#初始化,启动登录再设置密码授权
rm -rf ${mysqlfile}/mysql/data/*
/usr/local/mysql/bin/mysqld --defaults-file=${mysql_cfg} --initialize
#初始化完记一下temp_pwd
/usr/local/mysql/bin/mysqld --defaults-file=${mysql_cfg}
/usr/local/mysql/bin/mysql --connect-expired-password -uroot -p"${temp_pwd}" -S ${mysqlfile}/mysql/run/mysql.sock -e "alter user \"root\"@\"localhost\" identified by \"123456\""
/usr/local/mysql/bin/mysql -uroot -p123456 -S ${mysqlfile}/mysql/run/mysql.sock -e "create user \"root\"@\"%\" identified by \"123456\""
/usr/local/mysql/bin/mysql -uroot -p123456 -S ${mysqlfile}/mysql/run/mysql.sock -e "grant all privileges on *.* to \"root\"@\"%\""
/usr/local/mysql/bin/mysql -uroot -p123456 -S ${mysqlfile}/mysql/run/mysql.sock -e "flush privileges"
二、部署 mysql 测试客户端
客户端安装 sysbench,直接yum安装或者下载sysbench.tar.gz
tar -xvf /root/sysbench.tar.gz -C /root
cd /root/sysbench
./autogen.sh
./configure
make
make install
sysbench --version
使用 sysbench 创建测试数据:
rm -rf /home/mysql/data-ori
cp -rf --reflink=never /home/mysql/data /home/mysql/data-ori
服务端 (gazelle启动):
LD_PRELOAD=/usr/lib64/liblstack.so GAZELLE_BIND_PROCNAME=mysqld /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --bind-address=ip
客户端(sysbench):
/usr/local/mysql/bin/mysql -u root -P 3306 -h ip -p123456 -e "create database sbtest"
sysbench --db-driver=mysql --mysql-host=ip --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table_size=10000000 --tables=10 --threads=64 oltp_common prepare
du -sh /home/mysql/data
造数据根据自己的内存大小减小 --table_size=10000000 --tables=10 --threads=64
sysbench将在MySQL中使用64个线程,创建10个表,每个表包含10000000行数据
测试命令(服务端)
内核态服务端
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --bind-address=ip
用户态服务端
LD_PRELOAD=/usr/lib64/liblstack.so GAZELLE_BIND_PROCNAME=mysqld /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --bind-address=ip
客户端(内核态和用户态一样)
#只读
sysbench --db-driver=mysql --mysql-host=ip --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table_size=10000000 --tables=10 --threads=64 --time=180 --threads=32 --percentile=95 --report-interval=1 oltp_read_only run
#只写
sysbench --db-driver=mysql --mysql-host=ip --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table_size=10000000 --tables=10 --threads=64 --time=180 --threads=32 --percentile=95 --report-interval=1 oltp_write_only run
#读写
sysbench --db-driver=mysql --mysql-host=ip --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=sbtest --table_size=10000000 --tables=10 --threads=64 --time=180 --threads=32 --percentile=95 --report-interval=1 oltp_read_write run
三、Gazelle 启动选项相关
大页内存配置:
mkdir -p /mnt/hugepages-lstack
chmod -R 700 /mnt/hugepages-lstack
mount -t hugetlbfs nodev /mnt/hugepages-lstack -o pagesize=2M
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
cat /proc/meminfo | grep HugePages
启动 gazelle 时的注意点:
-
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld -
配置1024M大页内存(按需改大小)
mkdir -p /mnt/hugepages-lstack
chmod -R 700 /mnt/hugepages-lstack
mount -t hugetlbfs nodev /mnt/hugepages-lstack -o pagesize=2M
echo 512 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
cat /proc/meminfo | grep HugePages -
dpdk接管网卡
modprobe vfio enable_unsafe_noiommu_mode=1
modprobe vfio-pci
ip link set enp4s0 down
dpdk-devbind -b vfio-pci 0000:04:00.0 -
网卡不适配
gazelle配置文件/etc/gazelle/lstack.conf中,dpdk argv添加"-d", “librte_net_e1000.so”