#574 script modified with CR end of line

This commit is contained in:
Jean-Marie Renouard 2021-11-23 16:00:58 +01:00
parent cb74b1947e
commit 1c68fe1b1a
17 changed files with 567 additions and 567 deletions

View File

@ -1,19 +1,19 @@
--backup-and-modify-in-place --backup-and-modify-in-place
--backup-file-extension=beforeTidy --backup-file-extension=beforeTidy
--block-brace-tightness=2 --block-brace-tightness=2
--brace-tightness=2 --brace-tightness=2
--closing-token-indentation=1 --closing-token-indentation=1
--continuation-indentation=4 --continuation-indentation=4
--indent-columns=4 --indent-columns=4
--maximum-line-length=134 --maximum-line-length=134
--cuddled-else --cuddled-else
--opening-sub-brace-on-new-line --opening-sub-brace-on-new-line
--noopening-brace-on-new-line --noopening-brace-on-new-line
--nooutdent-labels --nooutdent-labels
--paren-tightness=2 --paren-tightness=2
--square-bracket-tightness=2 --square-bracket-tightness=2
--vertical-tightness=0 --vertical-tightness=0
--vertical-tightness-closing=0 --vertical-tightness-closing=0
--break-at-old-comma-breakpoints --break-at-old-comma-breakpoints
--entab-leading-whitespace=4 --entab-leading-whitespace=4
--tabs --tabs

View File

@ -1,54 +1,54 @@
language: perl language: perl
perl: perl:
- "5.24" - "5.24"
os: linux os: linux
dist: focal dist: focal
services: services:
- docker - docker
env: env:
- DB=mariadb:5.5 - DB=mariadb:5.5
- DB=mariadb:10.2 - DB=mariadb:10.2
- DB=mariadb:10.3 - DB=mariadb:10.3
- DB=mariadb:10.4 - DB=mariadb:10.4
- DB=mariadb:10.5 - DB=mariadb:10.5
- DB=mysql:5.5 - DB=mysql:5.5
- DB=mysql:5.7 - DB=mysql:5.7
- DB=mysql:8.0 - DB=mysql:8.0
- DB=percona:5.6 - DB=percona:5.6
- DB=percona:5.7 - DB=percona:5.7
- DB=percona:8.0 - DB=percona:8.0
install: install:
- cpanm --quiet --notest Data::Dumper - cpanm --quiet --notest Data::Dumper
- cpanm --quiet --notest JSON - cpanm --quiet --notest JSON
- cpanm --quiet --notest Perl::Critic - cpanm --quiet --notest Perl::Critic
- cpanm --quiet --notest Text::Template - cpanm --quiet --notest Text::Template
before_script: before_script:
- mysql --version - mysql --version
- mysqladmin --version - mysqladmin --version
- docker run -it --name=mysqltestinstance -d -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 ${DB} - docker run -it --name=mysqltestinstance -d -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 ${DB}
- echo -e "[client]\nuser=root\npassword=\"\"\nhost=127.0.0.1" > ~/.my.cnf - echo -e "[client]\nuser=root\npassword=\"\"\nhost=127.0.0.1" > ~/.my.cnf
- chmod 600 ~/.my.cnf - chmod 600 ~/.my.cnf
- git clone https://github.com/datacharmer/test_db.git - git clone https://github.com/datacharmer/test_db.git
- cd test_db - cd test_db
- count=10 - count=10
- while ! mysql -e 'select version()' && [ $count -gt 0 ]; do echo $count seconds to go; sleep 1; count=$(( $count - 1 )); done - while ! mysql -e 'select version()' && [ $count -gt 0 ]; do echo $count seconds to go; sleep 1; count=$(( $count - 1 )); done
- if [[ $DB =~ .*:8.0 ]] ; then - if [[ $DB =~ .*:8.0 ]] ; then
for file in public_key.pem ca.pem server-cert.pem client-key.pem client-cert.pem ; do for file in public_key.pem ca.pem server-cert.pem client-key.pem client-cert.pem ; do
docker cp mysqltestinstance:/var/lib/mysql/$file "${HOME}" ; docker cp mysqltestinstance:/var/lib/mysql/$file "${HOME}" ;
done ; done ;
fi fi
- "cat employees.sql | grep -v 'storage_engine' | mysql" - "cat employees.sql | grep -v 'storage_engine' | mysql"
- cd .. - cd ..
script: script:
- ./mysqltuner.pl --verbose --tbstat 2>stderr.txt | tee -a "stdout.txt" - ./mysqltuner.pl --verbose --tbstat 2>stderr.txt | tee -a "stdout.txt"
after_script: after_script:
- docker stop mysqltestinstance - docker stop mysqltestinstance
- echo "Standard Output: $(cat stdout.txt)" - echo "Standard Output: $(cat stdout.txt)"
- echo "Standard Error : $(cat stderr.txt)" - echo "Standard Error : $(cat stderr.txt)"

View File

@ -27,7 +27,7 @@ MySQLTuner needs you:
* Please join us on issue track at [GitHub tracker](https://github.com/major/MySQLTuner-perl/issues). * Please join us on issue track at [GitHub tracker](https://github.com/major/MySQLTuner-perl/issues).
* Contribution guide is available following [MySQLTuner contributing guide](https://github.com/major/MySQLTuner-perl/blob/master/CONTRIBUTING.md) * Contribution guide is available following [MySQLTuner contributing guide](https://github.com/major/MySQLTuner-perl/blob/master/CONTRIBUTING.md)
* Star **MySQLTuner project** at [MySQLTuner Git Hub Project](https://github.com/major/MySQLTuner-perl) * Star **MySQLTuner project** at [MySQLTuner Git Hub Project](https://github.com/major/MySQLTuner-perl)
* Paid support for Releem available here: [Releem App](https://app.releem.com/) * Paid support for Releem available here: [Releem App](https://releem.com/)
## Stargazers over time ## Stargazers over time

142
Vagrant/Vagrantfile vendored
View File

@ -1,71 +1,71 @@
# -*- mode: ruby -*- # -*- mode: ruby -*-
# vi: set ft=ruby : # vi: set ft=ruby :
Vagrant.configure("2") do |config| Vagrant.configure("2") do |config|
config.vm.box = "generic/fedora30" config.vm.box = "generic/fedora30"
config.vm.network "private_network", ip: "192.168.50.10", virtualbox__intnet: false config.vm.network "private_network", ip: "192.168.50.10", virtualbox__intnet: false
if Vagrant.has_plugin? "vagrant-vbguest" if Vagrant.has_plugin? "vagrant-vbguest"
config.vbguest.no_install = true config.vbguest.no_install = true
config.vbguest.auto_update = false config.vbguest.auto_update = false
config.vbguest.no_remote = true config.vbguest.no_remote = true
end end
config.hostmanager.enabled = true config.hostmanager.enabled = true
config.hostmanager.manage_host = false config.hostmanager.manage_host = false
config.hostmanager.manage_guest = true config.hostmanager.manage_guest = true
config.hostmanager.ignore_private_ip = false config.hostmanager.ignore_private_ip = false
config.hostmanager.include_offline = true config.hostmanager.include_offline = true
config.vm.network "public_network" config.vm.network "public_network"
config.vm.hostname = 'fedora-generic' config.vm.hostname = 'fedora-generic'
config.hostmanager.aliases = %w(fedora-generic.localdomain fedora-generic.local fcg.local) config.hostmanager.aliases = %w(fedora-generic.localdomain fedora-generic.local fcg.local)
config.vm.synced_folder ".", "/data" config.vm.synced_folder ".", "/data"
config.vm.provider "virtualbox" do |vb| config.vm.provider "virtualbox" do |vb|
vb.name="fedora-generic" vb.name="fedora-generic"
vb.gui = false vb.gui = false
vb.memory = "3036" vb.memory = "3036"
vb.cpus = 4 vb.cpus = 4
end end
config.vm.provision "shell", inline: <<-SHELL config.vm.provision "shell", inline: <<-SHELL
echo "secret" | sudo passwd --stdin root echo "secret" | sudo passwd --stdin root
echo "secret" | sudo passwd --stdin vagrant echo "secret" | sudo passwd --stdin vagrant
sudo cp -pr ~vagrant/.ssh /root sudo cp -pr ~vagrant/.ssh /root
sudo chown -R root.root /root/.ssh sudo chown -R root.root /root/.ssh
sudo dnf -y update sudo dnf -y update
sudo dnf -y install telnet vim-enhanced net-tools git python python2-pip python34-PyYAML moreutils net-tools python-psutil perl-WWW-Mechanize-GZip perl-App-cpanminus perl-List-MoreUtils vim-enhanced unzip zip jq youtube-dl ffmpeg make mariadb psmisc PyYAML tofrodos python3 chromedriver wget sudo dnf -y install telnet vim-enhanced net-tools git python python2-pip python34-PyYAML moreutils net-tools python-psutil perl-WWW-Mechanize-GZip perl-App-cpanminus perl-List-MoreUtils vim-enhanced unzip zip jq youtube-dl ffmpeg make mariadb psmisc PyYAML tofrodos python3 chromedriver wget
sudo dnf -y install python34-pip moreutils net-tools python-psutil perl-WWW-Mechanize-GZip perl-App-cpanminus perl-List-MoreUtils vim-enhanced unzip zip jq youtube-dl ffmpeg make mariadb psmisc PyYAML tofrodos python3 wget python-beautifulsoup4 npm rclone golang yum-utils device-mapper-persistent-data lvm2 docker sudo dnf -y install python34-pip moreutils net-tools python-psutil perl-WWW-Mechanize-GZip perl-App-cpanminus perl-List-MoreUtils vim-enhanced unzip zip jq youtube-dl ffmpeg make mariadb psmisc PyYAML tofrodos python3 wget python-beautifulsoup4 npm rclone golang yum-utils device-mapper-persistent-data lvm2 docker
echo "alias h='function hdi(){ howdoi \$* -c -n 5; }; hdi'" >> /tmp/util.sh echo "alias h='function hdi(){ howdoi \$* -c -n 5; }; hdi'" >> /tmp/util.sh
echo "alias s=sudo" >> /tmp/util.sh echo "alias s=sudo" >> /tmp/util.sh
echo "alias h=history" >> /tmp/util.sh echo "alias h=history" >> /tmp/util.sh
echo "alias hserver='python -m http.server 8000'" >> /tmp/util.sh echo "alias hserver='python -m http.server 8000'" >> /tmp/util.sh
sudo cp /tmp/util.sh /etc/profile.d sudo cp /tmp/util.sh /etc/profile.d
cat /tmp/util.sh cat /tmp/util.sh
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
sudo dnf -y install dnf-plugins-core sudo dnf -y install dnf-plugins-core
sudo dnf config-manager \ sudo dnf config-manager \
--add-repo \ --add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io sudo dnf -y install docker-ce docker-ce-cli containerd.io
dnf list docker-ce --showduplicates | sort -r dnf list docker-ce --showduplicates | sort -r
sudo systemctl start docker sudo systemctl start docker
sudo systemctl enable docker sudo systemctl enable docker
sudo usermod -aG docker vagrant sudo usermod -aG docker vagrant
sudo systemctl daemon-reload sudo systemctl daemon-reload
true true
########################################## ##########################################
# Install container # Install container
sudo systemctl restart docker sudo systemctl restart docker
SHELL SHELL
config.vm.provision :hostmanager config.vm.provision :hostmanager
end end

View File

@ -1,9 +1,9 @@
#!/bin/sh #!/bin/sh
VERSION=${1:-"10.4"} VERSION=${1:-"10.4"}
rm -f Vagrantfile rm -f Vagrantfile
cp Vagrantfile_for_MariaDB${VERSION} Vagrantfile cp Vagrantfile_for_MariaDB${VERSION} Vagrantfile
mkdir data mkdir data
vagrant plugin install vagrant-hostmanager vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-vbguest vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-proxyconf vagrant plugin install vagrant-proxyconf
vagrant --provision up vagrant --provision up

View File

@ -1,18 +1,18 @@
#!/bin/sh #!/bin/sh
BUILD_DIR=`dirname $(readlink -f $0)` BUILD_DIR=`dirname $(readlink -f $0)`
VERSION=$(grep -Ei 'my \$tunerversion' $BUILD_DIR/../mysqltuner.pl | grep = | cut -d\" -f2) VERSION=$(grep -Ei 'my \$tunerversion' $BUILD_DIR/../mysqltuner.pl | grep = | cut -d\" -f2)
cd $BUILD_DIR cd $BUILD_DIR
sh ./clean.sh sh ./clean.sh
perl -pe "s/%VERSION%/$VERSION/g" mysqltuner.spec.tpl > mysqltuner.spec perl -pe "s/%VERSION%/$VERSION/g" mysqltuner.spec.tpl > mysqltuner.spec
mkdir -p $BUILD_DIR/mysqltuner-$VERSION mkdir -p $BUILD_DIR/mysqltuner-$VERSION
cp $BUILD_DIR/../mysqltuner.pl mysqltuner.spec $BUILD_DIR/../LICENSE $BUILD_DIR/../basic_passwords.txt $BUILD_DIR/../*.csv $BUILD_DIR/mysqltuner-$VERSION cp $BUILD_DIR/../mysqltuner.pl mysqltuner.spec $BUILD_DIR/../LICENSE $BUILD_DIR/../basic_passwords.txt $BUILD_DIR/../*.csv $BUILD_DIR/mysqltuner-$VERSION
pod2man $BUILD_DIR/../mysqltuner.pl | gzip > $BUILD_DIR/mysqltuner-$VERSION/mysqltuner.1.gz pod2man $BUILD_DIR/../mysqltuner.pl | gzip > $BUILD_DIR/mysqltuner-$VERSION/mysqltuner.1.gz
tar czf $BUILD_DIR/mysqltuner-${VERSION}.tgz mysqltuner-$VERSION tar czf $BUILD_DIR/mysqltuner-${VERSION}.tgz mysqltuner-$VERSION
rpmbuild -ta mysqltuner-${VERSION}.tgz 2>&1 | tee -a ./build.log rpmbuild -ta mysqltuner-${VERSION}.tgz 2>&1 | tee -a ./build.log
set -x set -x
grep --color=never -E '(Wrote|crit)\S*:' $BUILD_DIR/build.log | cut -d: -f2 | xargs -I{} mv {} . grep --color=never -E '(Wrote|crit)\S*:' $BUILD_DIR/build.log | cut -d: -f2 | xargs -I{} mv {} .
#rm -rf mysqltuner-$VERSION ./build.log #rm -rf mysqltuner-$VERSION ./build.log

View File

@ -1,3 +1,3 @@
#!/bin/sh #!/bin/sh
rm -rf mysqltuner-* mysqltuner.spec *.log rm -rf mysqltuner-* mysqltuner.spec *.log

View File

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
docker ps | awk '{ print $NF}' |grep -v NAMES | xargs -n 1 docker kill docker ps | awk '{ print $NF}' |grep -v NAMES | xargs -n 1 docker kill
docker ps -a | awk '{ print $NF}' |grep -v NAMES | xargs -n 1 docker rm docker ps -a | awk '{ print $NF}' |grep -v NAMES | xargs -n 1 docker rm
docker ps -a docker ps -a

View File

@ -1,15 +1,15 @@
3306;mysql80;/var/lib/mysql8;mysql:8.0 3306;mysql80;/var/lib/mysql8;mysql:8.0
3307;mysql57;/var/lib/mysql57;mysql:5.7 3307;mysql57;/var/lib/mysql57;mysql:5.7
3308;mysql56;/var/lib/mysql56;mysql:5.6 3308;mysql56;/var/lib/mysql56;mysql:5.6
3309;mysql55;/var/lib/mysql55;mysql:5.5 3309;mysql55;/var/lib/mysql55;mysql:5.5
4306;percona80;/var/lib/percona8;percona/percona-server:8.0 4306;percona80;/var/lib/percona8;percona/percona-server:8.0
4307;percona57;/var/lib/percona57;percona/percona-server:5.7 4307;percona57;/var/lib/percona57;percona/percona-server:5.7
4308;percona56;/var/lib/percona56;percona/percona-server:5.6 4308;percona56;/var/lib/percona56;percona/percona-server:5.6
5306;mariadb104;/var/lib/mariadb104;mariadb:10.4 5306;mariadb104;/var/lib/mariadb104;mariadb:10.4
5307;mariadb103;/var/lib/mariadb103;mariadb:10.3 5307;mariadb103;/var/lib/mariadb103;mariadb:10.3
5308;mariadb102;/var/lib/mariadb102;mariadb:10.2 5308;mariadb102;/var/lib/mariadb102;mariadb:10.2
5309;mariadb101;/var/lib/mariadb101;mariadb:10.1 5309;mariadb101;/var/lib/mariadb101;mariadb:10.1
5310;mariadb100;/var/lib/mariadb100;mariadb:10.0 5310;mariadb100;/var/lib/mariadb100;mariadb:10.0
5311;mariadb55;/var/lib/mariadb55;mariadb:5.5 5311;mariadb55;/var/lib/mariadb55;mariadb:5.5

View File

@ -1,90 +1,90 @@
#!/bin/sh #!/bin/sh
input="./build/configimg.conf" input="./build/configimg.conf"
default_password="secret" default_password="secret"
echo "[client] echo "[client]
user=root user=root
password=$default_password" > $HOME/.my.cnf password=$default_password" > $HOME/.my.cnf
chmod 600 $HOME/.my.cnf chmod 600 $HOME/.my.cnf
[ -f "$input" ] || echo " [ -f "$input" ] || echo "
3306;mysql80;/var/lib/mysql8;mysql:8.0 3306;mysql80;/var/lib/mysql8;mysql:8.0
3307;mysql57;/var/lib/mysql57;mysql:5.7 3307;mysql57;/var/lib/mysql57;mysql:5.7
3308;mysql56;/var/lib/mysql56;mysql:5.6 3308;mysql56;/var/lib/mysql56;mysql:5.6
3309;mysql55;/var/lib/mysql55;mysql:5.5 3309;mysql55;/var/lib/mysql55;mysql:5.5
4306;percona80;/var/lib/percona8;percona/percona-server:8.0 4306;percona80;/var/lib/percona8;percona/percona-server:8.0
4307;percona57;/var/lib/percona57;percona/percona-server:5.7 4307;percona57;/var/lib/percona57;percona/percona-server:5.7
4308;percona56;/var/lib/percona56;percona/percona-server:5.6 4308;percona56;/var/lib/percona56;percona/percona-server:5.6
5306;mariadb104;/var/lib/mariadb104;mariadb:10.4 5306;mariadb104;/var/lib/mariadb104;mariadb:10.4
5307;mariadb103;/var/lib/mariadb103;mariadb:10.3 5307;mariadb103;/var/lib/mariadb103;mariadb:10.3
5308;mariadb102;/var/lib/mariadb102;mariadb:10.2 5308;mariadb102;/var/lib/mariadb102;mariadb:10.2
5309;mariadb101;/var/lib/mariadb101;mariadb:10.1 5309;mariadb101;/var/lib/mariadb101;mariadb:10.1
5310;mariadb100;/var/lib/mariadb100;mariadb:10.0 5310;mariadb100;/var/lib/mariadb100;mariadb:10.0
5311;mariadb55;/var/lib/mariadb55;mariadb:5.5 5311;mariadb55;/var/lib/mariadb55;mariadb:5.5
" > "$input" " > "$input"
# #
#echo '* PRUNING DOCKER SYSTEM DATA' #echo '* PRUNING DOCKER SYSTEM DATA'
#[ "$1" = "clean" ] || docker system prune -a -f #[ "$1" = "clean" ] || docker system prune -a -f
# download all images # download all images
while IFS='' read -r line while IFS='' read -r line
do do
[ -z "$line" ] && continue [ -z "$line" ] && continue
container_port=$(echo "$line" | cut -d\; -f1) container_port=$(echo "$line" | cut -d\; -f1)
container_name=$(echo "$line" | cut -d\; -f2) container_name=$(echo "$line" | cut -d\; -f2)
container_datadir=$(echo "$line" | cut -d\; -f3) container_datadir=$(echo "$line" | cut -d\; -f3)
image_name=$(echo "$line" | cut -d\; -f4) image_name=$(echo "$line" | cut -d\; -f4)
if [ -n "$1" -a "$1" != "clean" ]; then if [ -n "$1" -a "$1" != "clean" ]; then
echo $line | grep -q "$1" echo $line | grep -q "$1"
[ $? -eq 0 ] || continue [ $? -eq 0 ] || continue
fi fi
echo "* PULLING DOCKER IMAGE: $image_name" echo "* PULLING DOCKER IMAGE: $image_name"
docker images | grep -E " $image_name$" docker images | grep -E " $image_name$"
[ $? -ne 0 ] && docker pull $image_name [ $? -ne 0 ] && docker pull $image_name
echo "* REMOVING CONTAINER : $image_name" echo "* REMOVING CONTAINER : $image_name"
docker ps -a | grep -qE "$container_name^" docker ps -a | grep -qE "$container_name^"
docker rm -f $container_name docker rm -f $container_name
if [ 1 -eq 0 ]; then if [ 1 -eq 0 ]; then
echo "* DELETING DATADIR: $container_datadir" echo "* DELETING DATADIR: $container_datadir"
sudo rm -rf $container_datadir sudo rm -rf $container_datadir
[ "$1" = "clean" ] && continue [ "$1" = "clean" ] && continue
echo "* CREATING DATADIR: $container_datadir" echo "* CREATING DATADIR: $container_datadir"
sudo mkdir -p $container_datadir sudo mkdir -p $container_datadir
fi fi
#sudo chown -R mysql.mysql $container_datadir #sudo chown -R mysql.mysql $container_datadir
sudo chmod 777 $container_datadir sudo chmod 777 $container_datadir
echo "* STARTING CONTAINER: $container_name($container_port/TCP) BASED ON $image_name -> $container_datadir" echo "* STARTING CONTAINER: $container_name($container_port/TCP) BASED ON $image_name -> $container_datadir"
set -x set -x
docker run -d -e MYSQL_ROOT_PASSWORD=$default_password -p $container_port:3306 --name $container_name -v $container_datadir:/var/lib/mysql $image_name docker run -d -e MYSQL_ROOT_PASSWORD=$default_password -p $container_port:3306 --name $container_name -v $container_datadir:/var/lib/mysql $image_name
set +x set +x
sleep 6s sleep 6s
echo "* LOGS: $container_name" echo "* LOGS: $container_name"
docker logs $container_name docker logs $container_name
echo "* LISTING PORTS: $container_name BASED ON $image_name" echo "* LISTING PORTS: $container_name BASED ON $image_name"
docker port $container_name docker port $container_name
echo "* LISTING VOLUMES: $container_name BASED ON $image_name" echo "* LISTING VOLUMES: $container_name BASED ON $image_name"
docker inspect -f "{{ .Mounts }}" $container_name docker inspect -f "{{ .Mounts }}" $container_name
echo "* LISTING $container_datadir" echo "* LISTING $container_datadir"
ls -ls $container_datadir ls -ls $container_datadir
#break #break
docker logs $container_name | grep -q "ready for connections" docker logs $container_name | grep -q "ready for connections"
done < "$input" done < "$input"
echo "* LISTING DOCKER IMAGES" echo "* LISTING DOCKER IMAGES"
docker images docker images
echo "* LISTING DOCKER CONTAINER" echo "* LISTING DOCKER CONTAINER"
docker ps docker ps

View File

@ -1,28 +1,28 @@
#!/bin/sh #!/bin/sh
source build/bashrc source build/bashrc
systemctl status docker &>/dev/null systemctl status docker &>/dev/null
if [ $? -ne 0 ];then if [ $? -ne 0 ];then
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
sudo dnf -y install dnf-plugins-core sudo dnf -y install dnf-plugins-core
sudo dnf config-manager \ sudo dnf config-manager \
--add-repo \ --add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io sudo dnf -y install docker-ce docker-ce-cli containerd.io
dnf list docker-ce --showduplicates | sort -r dnf list docker-ce --showduplicates | sort -r
sudo systemctl start docker sudo systemctl start docker
sudo systemctl enable docker sudo systemctl enable docker
sudo usermod -aG docker vagrant sudo usermod -aG docker vagrant
sudo systemctl daemon-reload sudo systemctl daemon-reload
fi fi
sh build/createMassDockerImages.sh sh build/createMassDockerImages.sh
sh build/fetchSampleDatabases.sh clean sh build/fetchSampleDatabases.sh clean
sh build/fetchSampleDatabases.sh fetchall sh build/fetchSampleDatabases.sh fetchall
exec_mysqls build/configimg.conf mysql contents/sakila-db/sakila-schema.sql exec_mysqls build/configimg.conf mysql contents/sakila-db/sakila-schema.sql
exec_mysqls build/configimg.conf mysql contents/sakila-db/sakila-data.sql exec_mysqls build/configimg.conf mysql contents/sakila-db/sakila-data.sql

View File

@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
set -xv set -xv
_DIR=$(dirname `readlink -f $0`) _DIR=$(dirname `readlink -f $0`)
ssh $1 mkdir /images/mysqltuner ssh $1 mkdir /images/mysqltuner
rsync -avz ${_DIR}/.. $1:/images/mysqltuner rsync -avz ${_DIR}/.. $1:/images/mysqltuner
if [ "$2" = "run" ];then if [ "$2" = "run" ];then
ssh $1 "su - mysql -c 'cd /images/mysqltuner; source /opt/mysql/myqenv myserver1;perl mysqltuner.pl --verbose --color'" ssh $1 "su - mysql -c 'cd /images/mysqltuner; source /opt/mysql/myqenv myserver1;perl mysqltuner.pl --verbose --color'"
fi fi

View File

@ -1,35 +1,35 @@
#!/bin/sh #!/bin/sh
DB_WORLD_URL="https://downloads.mysql.com/docs/world.sql.zip" DB_WORLD_URL="https://downloads.mysql.com/docs/world.sql.zip"
DB_WORLDX_URL="https://downloads.mysql.com/docs/world_x-db.zip" DB_WORLDX_URL="https://downloads.mysql.com/docs/world_x-db.zip"
DB_SAKILA_URL="https://downloads.mysql.com/docs/sakila-db.zip" DB_SAKILA_URL="https://downloads.mysql.com/docs/sakila-db.zip"
DB_MESSAGERIE_URL="https://downloads.mysql.com/docs/menagerie-db.zip" DB_MESSAGERIE_URL="https://downloads.mysql.com/docs/menagerie-db.zip"
DB_TESTDB_URL="https://github.com/datacharmer/test_db/archive/master.zip" DB_TESTDB_URL="https://github.com/datacharmer/test_db/archive/master.zip"
getVal() getVal()
{ {
local vari=$1 local vari=$1
eval "echo \$$vari" eval "echo \$$vari"
} }
case "$1" in case "$1" in
"fetchall") "fetchall")
for sample in WORLD WORLDX SAKILA MESSAGERIE TESTDB; do for sample in WORLD WORLDX SAKILA MESSAGERIE TESTDB; do
sh $0 fetch $sample sh $0 fetch $sample
done done
;; ;;
"fetch") "fetch")
[ -z "$2" ] && exit 1 [ -z "$2" ] && exit 1
mkdir -p ./contents mkdir -p ./contents
[ -f "contents/$(basename $(getVal "DB_$2_URL"))" ] || wget -O contents/$(basename $(getVal "DB_$2_URL")) $(getVal "DB_$2_URL") [ -f "contents/$(basename $(getVal "DB_$2_URL"))" ] || wget -O contents/$(basename $(getVal "DB_$2_URL")) $(getVal "DB_$2_URL")
if [ $? -eq 0 ];then if [ $? -eq 0 ];then
(cd contents; unzip $( basename $(getVal "DB_$2_URL")) ) (cd contents; unzip $( basename $(getVal "DB_$2_URL")) )
fi fi
;; ;;
"clean") "clean")
rm -rf contents rm -rf contents
;; ;;
*) *)
echo "Unknown operation: $1" echo "Unknown operation: $1"
;; ;;
esac esac

View File

@ -1,51 +1,51 @@
Summary: High Performance MySQL Tuning Script Summary: High Performance MySQL Tuning Script
Name: mysqltuner Name: mysqltuner
Version: %VERSION% Version: %VERSION%
Release: 1 Release: 1
License: GPL v3+ License: GPL v3+
Group: Applications Group: Applications
Source0: https://github.com/build/MySQLTuner-perl/build/%{name}-%{version}.tgz Source0: https://github.com/build/MySQLTuner-perl/build/%{name}-%{version}.tgz
URL: https://github.com/major/MySQLTuner-perl URL: https://github.com/major/MySQLTuner-perl
Requires: mysql Requires: mysql
BuildArch: noarch BuildArch: noarch
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description %description
MySQLTuner is a high-performance MySQL tuning script written in Perl MySQLTuner is a high-performance MySQL tuning script written in Perl
that will provide you with a snapshot of a MySQL server's health. that will provide you with a snapshot of a MySQL server's health.
Based on the statistics gathered, specific recommendations will be Based on the statistics gathered, specific recommendations will be
provided that will increase a MySQL server's efficiency and provided that will increase a MySQL server's efficiency and
performance. The script gives you automated MySQL tuning that is on performance. The script gives you automated MySQL tuning that is on
the level of what you would receive from a MySQL DBA. the level of what you would receive from a MySQL DBA.
This script has been derived from many of the ideas in Matthew This script has been derived from many of the ideas in Matthew
Montgomery's MySQL tuning primer script. Montgomery's MySQL tuning primer script.
%prep %prep
%setup -q %setup -q
%install %install
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_bindir} install -d $RPM_BUILD_ROOT%{_bindir}
install -d $RPM_BUILD_ROOT%{_datarootdir} install -d $RPM_BUILD_ROOT%{_datarootdir}
install -d $RPM_BUILD_ROOT/%{_mandir}/man1 install -d $RPM_BUILD_ROOT/%{_mandir}/man1
install -p %{name}.pl $RPM_BUILD_ROOT%{_bindir}/%{name} install -p %{name}.pl $RPM_BUILD_ROOT%{_bindir}/%{name}
install -d $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -d $RPM_BUILD_ROOT%{_datarootdir}/%{name}
install -p LICENSE $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -p LICENSE $RPM_BUILD_ROOT%{_datarootdir}/%{name}
install -p basic_passwords.txt $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -p basic_passwords.txt $RPM_BUILD_ROOT%{_datarootdir}/%{name}
install -p vulnerabilities.csv $RPM_BUILD_ROOT%{_datarootdir}/%{name} install -p vulnerabilities.csv $RPM_BUILD_ROOT%{_datarootdir}/%{name}
install -p %{name}.1.gz $RPM_BUILD_ROOT/%{_mandir}/man1 install -p %{name}.1.gz $RPM_BUILD_ROOT/%{_mandir}/man1
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%files %files
%defattr(644,root,root,755) %defattr(644,root,root,755)
%doc %{_datarootdir}/%{name} %doc %{_datarootdir}/%{name}
%attr(755,root,root) %{_bindir}/%{name} %attr(755,root,root) %{_bindir}/%{name}
%{_mandir}/man1/* %{_mandir}/man1/*
%changelog %changelog
* Thu Apr 14 2016 Jean-Marie RENOUARD <jmrenouard@gmail.com> %VERSION%-1 * Thu Apr 14 2016 Jean-Marie RENOUARD <jmrenouard@gmail.com> %VERSION%-1
- Initial RPM release - Initial RPM release

View File

@ -1,116 +1,116 @@
#!/bin/bash #!/bin/bash
server=$1 server=$1
_DIR=$(dirname `readlink -f $0`) _DIR=$(dirname `readlink -f $0`)
#SSH_OPTIONS="-i utilities/id_rsa" #SSH_OPTIONS="-i utilities/id_rsa"
SSH_OPTIONS="${SSH_OPTIONS:-""} SSH_OPTIONS="${SSH_OPTIONS:-""}
export SSH_CLIENT="ssh -q $SSH_OPTIONS -o TCPKeepAlive=yes -o ServerAliveInterval=50 -o strictHostKeyChecking=no" export SSH_CLIENT="ssh -q $SSH_OPTIONS -o TCPKeepAlive=yes -o ServerAliveInterval=50 -o strictHostKeyChecking=no"
export SCP_CLIENT="scp -q $SSH_OPTIONS -o TCPKeepAlive=yes -o ServerAliveInterval=50 -o strictHostKeyChecking=no" export SCP_CLIENT="scp -q $SSH_OPTIONS -o TCPKeepAlive=yes -o ServerAliveInterval=50 -o strictHostKeyChecking=no"
_DIR="$(dirname "`readlink -f $0`")" _DIR="$(dirname "`readlink -f $0`")"
echo "* CLEANUP OLD RESULT FILES" echo "* CLEANUP OLD RESULT FILES"
rm -f mysqltuner_${server}.txt pt-*_${server}.txt innotop_${server}.txt rm -f mysqltuner_${server}.txt pt-*_${server}.txt innotop_${server}.txt
echo "* RUNNNING MYSQLTUNER" echo "* RUNNNING MYSQLTUNER"
$SSH_CLIENT root@${server} "mysqltuner --verbose --outputfile /tmp/mysqltuner_${server}.txt" $SSH_CLIENT root@${server} "mysqltuner --verbose --outputfile /tmp/mysqltuner_${server}.txt"
[ $? -ne 0 ] && exit 1 [ $? -ne 0 ] && exit 1
echo "* RUNNNING PERCONA SUMMARY" echo "* RUNNNING PERCONA SUMMARY"
$SSH_CLIENT root@${server} "pt-summary> /tmp/pt-summary_${server}.txt" $SSH_CLIENT root@${server} "pt-summary> /tmp/pt-summary_${server}.txt"
[ $? -ne 0 ] && exit 1 [ $? -ne 0 ] && exit 1
echo "* RUNNNING PERCONA MYSQL SUMMARY" echo "* RUNNNING PERCONA MYSQL SUMMARY"
$SSH_CLIENT root@${server} "pt-mysql-summary> /tmp/pt-mysql-summary_${server}.txt" $SSH_CLIENT root@${server} "pt-mysql-summary> /tmp/pt-mysql-summary_${server}.txt"
[ $? -ne 0 ] && exit 1 [ $? -ne 0 ] && exit 1
echo "* RUNNNING INNOTOP" echo "* RUNNNING INNOTOP"
$SSH_CLIENT root@${server} "innotop -C -d1 --count 5 -n>> /tmp/innotop_${server}.txt" $SSH_CLIENT root@${server} "innotop -C -d1 --count 5 -n>> /tmp/innotop_${server}.txt"
[ $? -ne 0 ] && exit 1 [ $? -ne 0 ] && exit 1
echo "* IMPORTING RESULT TXT" echo "* IMPORTING RESULT TXT"
$SCP_CLIENT root@${server}:/tmp/mysqltuner_${server}.txt . $SCP_CLIENT root@${server}:/tmp/mysqltuner_${server}.txt .
$SCP_CLIENT root@${server}:/tmp/pt-*_${server}.txt . $SCP_CLIENT root@${server}:/tmp/pt-*_${server}.txt .
$SCP_CLIENT root@${server}:/tmp/innotop_${server}.txt . $SCP_CLIENT root@${server}:/tmp/innotop_${server}.txt .
[ $? -ne 0 ] && exit 1 [ $? -ne 0 ] && exit 1
REPORT_NAME=audit.html REPORT_NAME=audit.html
echo "* GENERATING HTML RESULT" echo "* GENERATING HTML RESULT"
( (
DATE="$(date)" DATE="$(date)"
cat<<EOF cat<<EOF
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>MySQL/MariaDB Audit report - $DATE</title> <title>MySQL/MariaDB Audit report - $DATE</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.bundle.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.bundle.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head> </head>
<body> <body>
<h1>MySQL/MariaDB Audit report - $DATE</h1> <h1>MySQL/MariaDB Audit report - $DATE</h1>
<div id="tabs"> <div id="tabs">
<ul> <ul>
<li><a href="#mysqltuner">Tuner</a></li> <li><a href="#mysqltuner">Tuner</a></li>
<li><a href="#pt-summary">Linux</a></li> <li><a href="#pt-summary">Linux</a></li>
<li><a href="#pt-mysql-summary">Percona</a></li> <li><a href="#pt-mysql-summary">Percona</a></li>
<li><a href="#innotop">InnoTop</a></li> <li><a href="#innotop">InnoTop</a></li>
</ul> </ul>
<div id="mysqltuner"> <div id="mysqltuner">
<pre> <pre>
EOF EOF
) > ${REPORT_NAME} ) > ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl - mysqltuner_${server}.txt >> ${REPORT_NAME} perl ${_DIR}/txt2Html.pl - mysqltuner_${server}.txt >> ${REPORT_NAME}
( (
cat << 'EOF' cat << 'EOF'
</pre></div> </pre></div>
<div id='pt-summary'> <div id='pt-summary'>
<pre> <pre>
EOF EOF
) >> ${REPORT_NAME} ) >> ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl \# pt-summary_${server}.txt >> ${REPORT_NAME} perl ${_DIR}/txt2Html.pl \# pt-summary_${server}.txt >> ${REPORT_NAME}
( (
cat << 'EOF' cat << 'EOF'
</pre></div> </pre></div>
<div id='pt-mysql-summary'> <div id='pt-mysql-summary'>
<pre> <pre>
EOF EOF
) >> ${REPORT_NAME} ) >> ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl \# pt-mysql-summary_${server}.txt >> ${REPORT_NAME} perl ${_DIR}/txt2Html.pl \# pt-mysql-summary_${server}.txt >> ${REPORT_NAME}
( (
cat << 'EOF' cat << 'EOF'
</pre></div> </pre></div>
<div id='innotop'> <div id='innotop'>
<pre> <pre>
EOF EOF
) >> ${REPORT_NAME} ) >> ${REPORT_NAME}
cat innotop_${server}.txt >> ${REPORT_NAME} cat innotop_${server}.txt >> ${REPORT_NAME}
( (
cat << 'EOF' cat << 'EOF'
</pre></div> </pre></div>
</div> </div>
<script> <script>
$(function(){ $(function(){
$('#tabs').tabs({ active: 0 }); $('#tabs').tabs({ active: 0 });
}); });
</script> </script>
</body> </body>
</html> </html>
EOF EOF
) >> ${REPORT_NAME} ) >> ${REPORT_NAME}
echo "* ALL IS OK" echo "* ALL IS OK"
exit 0 exit 0

View File

@ -1,26 +1,26 @@
#!/bin/sh #!/bin/sh
input="./build/configimg.conf" input="./build/configimg.conf"
while IFS='' read -r line while IFS='' read -r line
do do
[ -z "$line" ] && continue [ -z "$line" ] && continue
container_port=$(echo "$line" | cut -d\; -f1) container_port=$(echo "$line" | cut -d\; -f1)
container_name=$(echo "$line" | cut -d\; -f2) container_name=$(echo "$line" | cut -d\; -f2)
container_datadir=$(echo "$line" | cut -d\; -f3) container_datadir=$(echo "$line" | cut -d\; -f3)
image_name=$(echo "$line" | cut -d\; -f4) image_name=$(echo "$line" | cut -d\; -f4)
if [ -n "$1" -a "$1" != "$container_name" ]; then if [ -n "$1" -a "$1" != "$container_name" ]; then
continue continue
fi fi
shift shift
sudo rm -f /var/lib/mysql sudo rm -f /var/lib/mysql
sudo ln -sf $container_datadir /var/lib/mysql sudo ln -sf $container_datadir /var/lib/mysql
sudo chmod 777 /var/lib/mysql sudo chmod 777 /var/lib/mysql
#sudo docker logs $container_name > /tmp/mysqld.log #sudo docker logs $container_name > /tmp/mysqld.log
ls -ls /var/lib | grep -E 'mysql$' ls -ls /var/lib | grep -E 'mysql$'
#set +x #set +x
perl mysqltuner.pl $* --host 127.0.0.1 --port $container_port perl mysqltuner.pl $* --host 127.0.0.1 --port $container_port
exit $? exit $?
done < "$input" done < "$input"

View File

@ -1,17 +1,17 @@
#!/bin/sh #!/bin/sh
# Used to sync the original project with local project. # Used to sync the original project with local project.
#Save existing working #Save existing working
git stash git stash
#add project url to current repository as upstream-live #add project url to current repository as upstream-live
git remote add upstream-live https://github.com/major/MySQLTuner-perl git remote add upstream-live https://github.com/major/MySQLTuner-perl
#Fetch updated code #Fetch updated code
git fetch upstream-live git fetch upstream-live
#Going back to the master branch for mearging latest code #Going back to the master branch for mearging latest code
git checkout master git checkout master
#Merge latest code with master branch. #Merge latest code with master branch.
git merge upstream-live/master git merge upstream-live/master