Over the last few MySQL releases the size of the MySQL package
have increased in size and it looks like the trend is
continuing.
- 687M MySQL 5.5.42
- 1,1G MySQL 5.6.21
- 1,3G MySQL 5.7.4
- 1,5G MySQL 5.7.5
This guide is for a Linux installation. I have tested the
instructions below to create a minimal installation on my Ubuntu
14.04 laptop. I know you can make it a bit smaller by running
mysqld directly and only using one error message file but this
would not affect total size much. I also added the mysql client
to have some way of logging into MySQL.
MySQL configuration file used to start MySQL:
[mysqld_safe] ledir = /home/ted/labb/mini-mysql/bin [mysqld] port = 63301 socket = /tmp/mysql63301.sock basedir = /home/ted/labb/mini-mysql datadir = /home/ted/labb/mini-mysql/data tmpdir = /tmp pid-file = /tmp/mysql66301.pid |
Create MySQL basedir where you want to store all binaries:
mkdir /home/ted/labb/mini-mysql |
Go to basedir:
cd /home/ted/labb/mini-mysql |
Create folders for binaries and database (normally your datadir
would not be located in your basedir):
mkdir bin mkdir data |
Download MySQL "Linux - Generic (glibc 2.5) (x86, 64-bit),
Compressed TAR Archive"
from http://dev.mysql.com/downloads/mysql/
Copy files needed to start MySQL daemon and client program:
cp ~5.6.22/bin/mysql bin/ cp ~5.6.22/bin/mysqld bin/ cp ~5.6.22/bin/mysqld_safe bin/ cp -fr ~5.6.22/share . |
We need some binaries and files to create mysql internal
database, these can be removed later on:
cp ~5.6.22/scripts/mysql_install_db bin/ cp ~5.6.22/bin/resolveip bin/ cp ~5.6.22/support-files/my-default.cnf . |
Create MySQL internal database:
./bin/mysql_install_db --datadir=./data/ |
# Now we can remove tools for creating internal mysql
schema:
rm bin/mysql_install_db rm bin/resolveip rm my-default.cnf rm rm my-new.cnf |
Start server:
./bin/mysqld_safe --defaults-file=./my.cnf & |
Log into server:
./bin/mysql -uroot -P63301 -h127.0.0.1 |
Total size of installation:
mysql$ du -sh * 88M bin 3,2M share |
This is good news, with some minimal work it's still possible to
get the binary package down to below 100M.
EDIT: Great news, with MySQL 8.0.16 we now have minimal packages
via our normal downloads, see more here:
https://mysqlrelease.com/2019/05/the-amazing-shrinking-tarball/