Skip to content

Instantly share code, notes, and snippets.

@dotmanila
Last active November 16, 2017 03:25
Show Gist options
  • Save dotmanila/b1f727fcdd4e4fd72011e85af16cef5b to your computer and use it in GitHub Desktop.
Save dotmanila/b1f727fcdd4e4fd72011e85af16cef5b to your computer and use it in GitHub Desktop.
ZFS bootstrap Ubuntu 16.04 with git-master version, uses 6xSAS drives pool and PS 5.7.19 using MySQL sandbox.
#!/bin/bash
DISK=xvdb
USER=ubuntu
IP=$(ip -4 ad sh scope global | grep 'scope global' | awk '{print $2}' | cut -d'/' -f1 | head -n1)
KERNEL=$(uname -r)
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-4.xenial_all.deb
sudo apt -y update
sudo apt -y upgrade
sudo apt -y install zfs make qpress netcat socat sysstat mbuffer libaio1 \
sysbench lsof linux-tools-common linux-tools-${KERNEL} linux-tools-${KERNEL} \
percona-toolkit percona-xtrabackup-24
sudo apt -y install build-essential autoconf libtool gawk alien fakeroot linux-headers-${KERNEL}
sudo apt -y install zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev libssl-dev
sudo apt -y install parted lsscsi ksh dkms dstat
git clone https://github.com/zfsonlinux/spl
git clone https://github.com/zfsonlinux/zfs
cd spl
git checkout master
sh autogen.sh
./configure
make -s -j$(nproc)
make deb
REL=$(ls | grep "kmod-spl-${KERNEL}"|cut -d'_' -f2)
sudo dpkg -i kmod-spl-${KERNEL}_${REL}_amd64.deb \
kmod-spl-devel-${KERNEL}_${REL}_amd64.deb \
spl_${REL}_amd64.deb spl-dkms_${REL}_all.deb
cd ../zfs
git checkout master
sh autogen.sh
./configure
make -s -j$(nproc)
make deb
REL=$(ls | grep "kmod-zfs-${KERNEL}"|cut -d'_' -f2)
sudo dpkg -i kmod-zfs-${KERNEL}_${REL}_amd64.deb \
kmod-zfs-devel-${KERNEL}_${REL}_amd64.deb \
libnvpair1_${REL}_amd64.deb libuutil1_${REL}_amd64.deb \
libzfs2_${REL}_amd64.deb libzfs2-devel_${REL}_amd64.deb \
libzpool2_${REL}_amd64.deb zfs_${REL}_amd64.deb \
zfs-dkms_${REL}_all.deb zfs-dracut_${REL}_amd64.deb \
zfs-initramfs_${REL}_amd64.deb zfs-test_${REL}_amd64.deb
sudo /sbin/modprobe zfs
sudo zpool create -o ashift=12 mysql \
mirror /dev/sdc /dev/sdd \
mirror /dev/sde /dev/sdf \
mirror /dev/sdg /dev/sdh
sudo zfs set recordsize=16k mysql
sudo zfs set atime=off mysql
sudo zfs set logbias=latency mysql
sudo zfs set primarycache=metadata mysql
sudo zfs set compression=lz4 mysql
sudo zfs create -o recordsize=128K mysql/logs
sudo zfs create -o recordsize=16K mysql/data
sudo mkdir -p /mysql/logs
sudo mkdir -p /mysql/data
sudo chown -R revin.revin /mysql/*
echo '#!/bin/bash' > /tmp/zfs.sh
echo 'echo 1073741824 > /sys/module/zfs/parameters/zfs_arc_max' >> /tmp/zfs.sh
echo 'echo 1 > /sys/module/zfs/parameters/zfs_prefetch_disable' >> /tmp/zfs.sh
sudo bash /tmp/zfs.sh
cd ~
wget https://github.com/datacharmer/mysql-sandbox/releases/download/3.2.14/MySQL-Sandbox-3.2.14.tar.gz
tar xzf MySQL-Sandbox-3.2.14.tar.gz
cd MySQL-Sandbox-3.2.14/
perl Makefile.PL PREFIX=/usr
make
sudo make install
cd
mkdir mysql
cd mysql
wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.19-17/binary/tarball/Percona-Server-5.7.19-17-Linux.x86_64.ssl100.tar.gz
tar xzf Percona-Server-5.7.19-17-Linux.x86_64.ssl100.tar.gz
mv -f Percona-Server-5.7.19-17-Linux.x86_64.ssl100 5.7.190
sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 /lib/x86_64-linux-gnu/libssl.so.10
sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /lib/x86_64-linux-gnu/libcrypto.so.10
# ZFS Sandbox PS
env SANDBOX_BINARY=/home/revin/mysql make_sandbox 5.7.190 -- \
--upper_directory=/mysql/data --my_clause=innodb_buffer_pool_size=1G \
--my_clause=innodb_log_file_size=2G --my_clause=innodb_flush_method=O_DSYNC \
--my_clause=innodb_log_group_home_dir=/mysql/logs \
--my_clause=innodb_doublewrite=0 --no_confirm
# ext4 Sandbox PS
env SANDBOX_BINARY=/home/revin/mysql make_sandbox 5.7.190 -- \
--upper_directory=/mysql/msb --my_clause=innodb_buffer_pool_size=1G \
--my_clause=innodb_log_file_size=2G --my_clause=innodb_flush_method=O_DIRECT \
--my_clause=bind-address=0.0.0.0 --my_clause=default-storage-engine=InnoDB \
--no_confirm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment