mirror of
https://github.com/major/MySQLTuner-perl.git
synced 2024-09-20 23:37:10 +00:00
#574 script modified with CR end of line
This commit is contained in:
parent
cb74b1947e
commit
1c68fe1b1a
38
.perltidy
38
.perltidy
@ -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
|
||||
|
108
.travis.yml
108
.travis.yml
@ -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)"
|
||||
|
@ -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
142
Vagrant/Vagrantfile
vendored
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -rf mysqltuner-* mysqltuner.spec *.log
|
||||
#!/bin/sh
|
||||
|
||||
rm -rf mysqltuner-* mysqltuner.spec *.log
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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"
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user