Skip to content

Instantly share code, notes, and snippets.

@dotmanila
Last active November 18, 2017 05:01
Show Gist options
  • Save dotmanila/3c114e3388a7db9c23214eceea060a63 to your computer and use it in GitHub Desktop.
Save dotmanila/3c114e3388a7db9c23214eceea060a63 to your computer and use it in GitHub Desktop.
ZFS bootstrap Ubuntu 16.04 with github master ZFS, uses xvdb for single vdev and PXC 5.7.19 using MySQL sandbox.
#!/bin/bash
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 -f mysql /dev/xvdb /dev/xvdc
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/innodb
sudo mkdir -p /mysql/data/msb
sudo chown -R $USER.$USER /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-XtraDB-Cluster-LATEST/Percona-XtraDB-Cluster-5.7.19-29.22/binary/tarball/Percona-XtraDB-Cluster-5.7.19-rel17-29.22.1.Linux.x86_64.ssl100.tar.gz
tar xzf Percona-XtraDB-Cluster-5.7.19-rel17-29.22.1.Linux.x86_64.ssl100.tar.gz
mv -f Percona-XtraDB-Cluster-5.7.19-rel17-29.22.1.Linux.x86_64.ssl100 5.7.192
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
env SANDBOX_BINARY=/home/ubuntu/mysql make_sandbox 5.7.192 -- --no_confirm \
--upper_directory=/mysql/data/msb --my_clause=innodb_buffer_pool_size=1G \
--my_clause=innodb_log_file_size=8G --my_clause=innodb_flush_method=O_DSYNC \
--my_clause=innodb_log_group_home_dir=/mysql/logs/innodb \
--my_clause=innodb_doublewrite=0 --my_clause=binlog_format=ROW \
--my_clause=innodb_autoinc_lock_mode=2 --my_clause=bind-address=0.0.0.0 \
--my_clause=default-storage-engine=InnoDB --my_clause=innodb_flush_log_at_trx_commit=0 \
--my_clause=wsrep_provider=/home/ubuntu/mysql/5.7.192/lib/libgalera_smm.so \
--my_clause=wsrep_cluster_name=zfs --my_clause=wsrep_cluster_address=gcomm:// \
--my_clause=wsrep_sst_method=xtrabackup-v2 --my_clause=wsrep_sst_auth=msandbox:msandbox \
--my_clause=wsrep_node_name=zfs02 --my_clause=wsrep_node_address=$IP \
--my_clause=wsrep_slave_threads=8
time sysbench --db-driver=mysql --mysql-user=msandbox --mysql-password=msandbox \
--mysql-db=test --mysql-host=127.0.0.1 --mysql-port=57192 --tables=8 \
--table-size=20000000 --auto-inc=off --threads=8 --time=0 \
--rand-type=pareto oltp_read_only prepare
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment