RAM メモリに mysql インスタンスをセットアップすると、単体テストは数倍速く実行されますが、これは手動プロセスであるため、これを行うには時間がかかり、少数のサーバーでこれを行う必要があります。新しい mysql インスタンスは、空いている場合はポート 3307 で実行する必要があります。空いている場合はエラーを返します。
したがって、最初に必要なのは、一部のサービスが既にこのポートでリッスンしているかどうかを確認することです。このためのコードを追加しましたが、一部のサーバーでは、3307 ポートで実行されるプロセスが表示されません。このスクリプトを改善するために助けが必要です。シェルプログラミングの経験はあまりありません。
#!/bin/bash
STAT=`netstat -na | grep 3308 | awk '{print $6}'`
if [ "$STAT" = "LISTEN" ];
then
echo "There is already process that listen on port 3307"
fi
# Create ramdisk
mkdir -p /mnt/ramdisk
mount -t tmpfs -o size=1G tmpfs /mnt/ramdisk
chown mysql:mysql /mnt/ramdisk
port=3307
distribution=$(lsb_release -i | cut -f2)
if [ $distribution == 'Debian' ]
then
mkdir /var/lib/mysql2
chown -R mysql.mysql /var/lib/mysql2/
mkdir /var/log/mysql2
chown -R mysql.mysql /var/log/mysql2
cp -R /etc/mysql/ /etc/mysql2
cd /etc/mysql2/
sed -i "s/3306/$port/g" my.cnf
sed -i "s/mysqld.sock/mysqld2.sock/g" my.cnf
sed -i "s/mysqld.pid/mysqld2.pid/g" my.cnf
sed -i "s/var\/lib\/mysql/var\/lib\/mysql2/g" my.cnf
sed -i "s/var\/log\/mysql/var\/log\/mysql2/g" my.cnf
mysql_install_db --user=mysql --datadir=/mnt/ramdisk
mysqld_safe --defaults-file=/etc/mysql2/my.cnf &
elif [ $distribution == 'CentOS' ]
then
cp /etc/my.cnf /etc/my2.cnf
cd /etc
sed -i "s/3306/$port/g" my2.cnf
sed -i "s/mysqld.sock/mysqld2.sock/g" my2.cnf
sed -i "s/mysqld.pid/mysqld2.pid/g" my2.cnf
sed -i "s/var\/lib\/mysql/var\/lib\/mysql2/g" my2.cnf
sed -i "s/var\/log\/mysql/var\/log\/mysql2/g" my2.cnf
mysql_install_db --user=mysql --datadir=/mnt/ramdisk
mysqld_safe --defaults-file=/etc/my2.cnf &
else
exit 13
fi