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

View File

@ -1,54 +1,54 @@
language: perl
perl:
- "5.24"
os: linux
dist: focal
services:
- docker
env:
- DB=mariadb:5.5
- DB=mariadb:10.2
- DB=mariadb:10.3
- DB=mariadb:10.4
- DB=mariadb:10.5
- DB=mysql:5.5
- DB=mysql:5.7
- DB=mysql:8.0
- DB=percona:5.6
- DB=percona:5.7
- DB=percona:8.0
install:
- cpanm --quiet --notest Data::Dumper
- cpanm --quiet --notest JSON
- cpanm --quiet --notest Perl::Critic
- cpanm --quiet --notest Text::Template
before_script:
- mysql --version
- mysqladmin --version
- 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
- chmod 600 ~/.my.cnf
- git clone https://github.com/datacharmer/test_db.git
- cd test_db
- count=10
- 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
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}" ;
done ;
fi
- "cat employees.sql | grep -v 'storage_engine' | mysql"
- cd ..
script:
- ./mysqltuner.pl --verbose --tbstat 2>stderr.txt | tee -a "stdout.txt"
after_script:
- docker stop mysqltestinstance
- echo "Standard Output: $(cat stdout.txt)"
- echo "Standard Error : $(cat stderr.txt)"
language: perl
perl:
- "5.24"
os: linux
dist: focal
services:
- docker
env:
- DB=mariadb:5.5
- DB=mariadb:10.2
- DB=mariadb:10.3
- DB=mariadb:10.4
- DB=mariadb:10.5
- DB=mysql:5.5
- DB=mysql:5.7
- DB=mysql:8.0
- DB=percona:5.6
- DB=percona:5.7
- DB=percona:8.0
install:
- cpanm --quiet --notest Data::Dumper
- cpanm --quiet --notest JSON
- cpanm --quiet --notest Perl::Critic
- cpanm --quiet --notest Text::Template
before_script:
- mysql --version
- mysqladmin --version
- 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
- chmod 600 ~/.my.cnf
- git clone https://github.com/datacharmer/test_db.git
- cd test_db
- count=10
- 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
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}" ;
done ;
fi
- "cat employees.sql | grep -v 'storage_engine' | mysql"
- cd ..
script:
- ./mysqltuner.pl --verbose --tbstat 2>stderr.txt | tee -a "stdout.txt"
after_script:
- docker stop mysqltestinstance
- echo "Standard Output: $(cat stdout.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).
* 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)
* 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

142
Vagrant/Vagrantfile vendored
View File

@ -1,71 +1,71 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "generic/fedora30"
config.vm.network "private_network", ip: "192.168.50.10", virtualbox__intnet: false
if Vagrant.has_plugin? "vagrant-vbguest"
config.vbguest.no_install = true
config.vbguest.auto_update = false
config.vbguest.no_remote = true
end
config.hostmanager.enabled = true
config.hostmanager.manage_host = false
config.hostmanager.manage_guest = true
config.hostmanager.ignore_private_ip = false
config.hostmanager.include_offline = true
config.vm.network "public_network"
config.vm.hostname = 'fedora-generic'
config.hostmanager.aliases = %w(fedora-generic.localdomain fedora-generic.local fcg.local)
config.vm.synced_folder ".", "/data"
config.vm.provider "virtualbox" do |vb|
vb.name="fedora-generic"
vb.gui = false
vb.memory = "3036"
vb.cpus = 4
end
config.vm.provision "shell", inline: <<-SHELL
echo "secret" | sudo passwd --stdin root
echo "secret" | sudo passwd --stdin vagrant
sudo cp -pr ~vagrant/.ssh /root
sudo chown -R root.root /root/.ssh
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 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 s=sudo" >> /tmp/util.sh
echo "alias h=history" >> /tmp/util.sh
echo "alias hserver='python -m http.server 8000'" >> /tmp/util.sh
sudo cp /tmp/util.sh /etc/profile.d
cat /tmp/util.sh
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io
dnf list docker-ce --showduplicates | sort -r
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker vagrant
sudo systemctl daemon-reload
true
##########################################
# Install container
sudo systemctl restart docker
SHELL
config.vm.provision :hostmanager
end
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "generic/fedora30"
config.vm.network "private_network", ip: "192.168.50.10", virtualbox__intnet: false
if Vagrant.has_plugin? "vagrant-vbguest"
config.vbguest.no_install = true
config.vbguest.auto_update = false
config.vbguest.no_remote = true
end
config.hostmanager.enabled = true
config.hostmanager.manage_host = false
config.hostmanager.manage_guest = true
config.hostmanager.ignore_private_ip = false
config.hostmanager.include_offline = true
config.vm.network "public_network"
config.vm.hostname = 'fedora-generic'
config.hostmanager.aliases = %w(fedora-generic.localdomain fedora-generic.local fcg.local)
config.vm.synced_folder ".", "/data"
config.vm.provider "virtualbox" do |vb|
vb.name="fedora-generic"
vb.gui = false
vb.memory = "3036"
vb.cpus = 4
end
config.vm.provision "shell", inline: <<-SHELL
echo "secret" | sudo passwd --stdin root
echo "secret" | sudo passwd --stdin vagrant
sudo cp -pr ~vagrant/.ssh /root
sudo chown -R root.root /root/.ssh
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 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 s=sudo" >> /tmp/util.sh
echo "alias h=history" >> /tmp/util.sh
echo "alias hserver='python -m http.server 8000'" >> /tmp/util.sh
sudo cp /tmp/util.sh /etc/profile.d
cat /tmp/util.sh
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io
dnf list docker-ce --showduplicates | sort -r
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker vagrant
sudo systemctl daemon-reload
true
##########################################
# Install container
sudo systemctl restart docker
SHELL
config.vm.provision :hostmanager
end

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
#!/bin/sh
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
#!/bin/sh
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,116 +1,116 @@
#!/bin/bash
server=$1
_DIR=$(dirname `readlink -f $0`)
#SSH_OPTIONS="-i utilities/id_rsa"
SSH_OPTIONS="${SSH_OPTIONS:-""}
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"
_DIR="$(dirname "`readlink -f $0`")"
echo "* CLEANUP OLD RESULT FILES"
rm -f mysqltuner_${server}.txt pt-*_${server}.txt innotop_${server}.txt
echo "* RUNNNING MYSQLTUNER"
$SSH_CLIENT root@${server} "mysqltuner --verbose --outputfile /tmp/mysqltuner_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* RUNNNING PERCONA SUMMARY"
$SSH_CLIENT root@${server} "pt-summary> /tmp/pt-summary_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* RUNNNING PERCONA MYSQL SUMMARY"
$SSH_CLIENT root@${server} "pt-mysql-summary> /tmp/pt-mysql-summary_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* RUNNNING INNOTOP"
$SSH_CLIENT root@${server} "innotop -C -d1 --count 5 -n>> /tmp/innotop_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* IMPORTING RESULT TXT"
$SCP_CLIENT root@${server}:/tmp/mysqltuner_${server}.txt .
$SCP_CLIENT root@${server}:/tmp/pt-*_${server}.txt .
$SCP_CLIENT root@${server}:/tmp/innotop_${server}.txt .
[ $? -ne 0 ] && exit 1
REPORT_NAME=audit.html
echo "* GENERATING HTML RESULT"
(
DATE="$(date)"
cat<<EOF
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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://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">
<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://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>
</head>
<body>
<h1>MySQL/MariaDB Audit report - $DATE</h1>
<div id="tabs">
<ul>
<li><a href="#mysqltuner">Tuner</a></li>
<li><a href="#pt-summary">Linux</a></li>
<li><a href="#pt-mysql-summary">Percona</a></li>
<li><a href="#innotop">InnoTop</a></li>
</ul>
<div id="mysqltuner">
<pre>
EOF
) > ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl - mysqltuner_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
<div id='pt-summary'>
<pre>
EOF
) >> ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl \# pt-summary_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
<div id='pt-mysql-summary'>
<pre>
EOF
) >> ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl \# pt-mysql-summary_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
<div id='innotop'>
<pre>
EOF
) >> ${REPORT_NAME}
cat innotop_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
</div>
<script>
$(function(){
$('#tabs').tabs({ active: 0 });
});
</script>
</body>
</html>
EOF
) >> ${REPORT_NAME}
echo "* ALL IS OK"
#!/bin/bash
server=$1
_DIR=$(dirname `readlink -f $0`)
#SSH_OPTIONS="-i utilities/id_rsa"
SSH_OPTIONS="${SSH_OPTIONS:-""}
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"
_DIR="$(dirname "`readlink -f $0`")"
echo "* CLEANUP OLD RESULT FILES"
rm -f mysqltuner_${server}.txt pt-*_${server}.txt innotop_${server}.txt
echo "* RUNNNING MYSQLTUNER"
$SSH_CLIENT root@${server} "mysqltuner --verbose --outputfile /tmp/mysqltuner_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* RUNNNING PERCONA SUMMARY"
$SSH_CLIENT root@${server} "pt-summary> /tmp/pt-summary_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* RUNNNING PERCONA MYSQL SUMMARY"
$SSH_CLIENT root@${server} "pt-mysql-summary> /tmp/pt-mysql-summary_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* RUNNNING INNOTOP"
$SSH_CLIENT root@${server} "innotop -C -d1 --count 5 -n>> /tmp/innotop_${server}.txt"
[ $? -ne 0 ] && exit 1
echo "* IMPORTING RESULT TXT"
$SCP_CLIENT root@${server}:/tmp/mysqltuner_${server}.txt .
$SCP_CLIENT root@${server}:/tmp/pt-*_${server}.txt .
$SCP_CLIENT root@${server}:/tmp/innotop_${server}.txt .
[ $? -ne 0 ] && exit 1
REPORT_NAME=audit.html
echo "* GENERATING HTML RESULT"
(
DATE="$(date)"
cat<<EOF
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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://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">
<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://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>
</head>
<body>
<h1>MySQL/MariaDB Audit report - $DATE</h1>
<div id="tabs">
<ul>
<li><a href="#mysqltuner">Tuner</a></li>
<li><a href="#pt-summary">Linux</a></li>
<li><a href="#pt-mysql-summary">Percona</a></li>
<li><a href="#innotop">InnoTop</a></li>
</ul>
<div id="mysqltuner">
<pre>
EOF
) > ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl - mysqltuner_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
<div id='pt-summary'>
<pre>
EOF
) >> ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl \# pt-summary_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
<div id='pt-mysql-summary'>
<pre>
EOF
) >> ${REPORT_NAME}
perl ${_DIR}/txt2Html.pl \# pt-mysql-summary_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
<div id='innotop'>
<pre>
EOF
) >> ${REPORT_NAME}
cat innotop_${server}.txt >> ${REPORT_NAME}
(
cat << 'EOF'
</pre></div>
</div>
<script>
$(function(){
$('#tabs').tabs({ active: 0 });
});
</script>
</body>
</html>
EOF
) >> ${REPORT_NAME}
echo "* ALL IS OK"
exit 0

View File

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

View File

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