Skip to content

Instantly share code, notes, and snippets.

@Tyralion
Created September 10, 2011 06:08
Show Gist options
  • Select an option

  • Save Tyralion/1207999 to your computer and use it in GitHub Desktop.

Select an option

Save Tyralion/1207999 to your computer and use it in GitHub Desktop.
Mysql 5.5 (Percona edition) instalation instructions
For Percona 5.5.15-rel21.0
*** Работоспособность проверена на Ubuntu 10.04/10.10/11.04
Перед началом установки, необходимо удалить из системы ранее установленный дистрибутив mysql.
Устанавливаем зависимые библиотеки
sudo apt-get install ncurses-dev
sudo apt-get install automake libtool g++ bison cmake libncurses5 libncurses5-dev
---------------------------------------------------------------------------------------------------------
Из-за того, что в 5.5.15 баги при сборки системы по параметрам отличных от дефолтных, данный конфиг НЕЛЬЗЯ использовать:
cmake . -DINSTALL_LIBDIR=/usr/local/lib -DINSTALL_BINDIR=/usr/local/bin -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock -DINSTALL_SBINDIR=/usr
/local/sbin -DINSTALL_SHAREDIR=/usr/local/share/mysql -DINSTALL_MYSQLSHAREDIR=/usr/local/share/mysql
---------------------------------------------------------------------------------------------------------
Вместо этого соберем систему с минимальными настройками и позже создадим символьные ссылки куда нужно:
cmake . -DINSTALL_LIBDIR=/usr/local/lib -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock
Посмотреть параметры сборки можно коммандой:
cmake -L (-LA|-LAH)
Собираем и устанавливаем (для сбокри используем все процессорные ядра, что есть системе :) ):
make -j `cat /proc/cpuinfo | grep processor | wc -l`
sudo make install
Удаляем старые группу и пользователя mysql:
sudo userdel mysql
sudo groupdel mysql
Создаем группу ипользователя:
sudo groupadd mysql
sudo useradd -g mysql -c "MySQL Server" -d /dev/null -s /sbin/nologin mysql
Копируем файлы автозапуска и начальной конфигурации:
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
Создаем директории для логов и pid-файла:
sudo mkdir /var/run/mysqld
sudo chown mysql -R /var/run/mysqld
sudo mkdir /var/log/mysqld
sudo chown mysql -R /var/log/mysqld
Директория где у нас в дальнейшем будут лежать данные innoDB (в конфигурации my.cnf pf за это отвечают параметры innodb_data_home_dir и innodb_log_group_home_dir):
sudo mkdir /usr/local/mysql/var
Устанавливаем на папку /usr/local/mysql необходимые права пользователю mysql (и группе mysql):
sudo chown mysql:mysql -R /usr/local/mysql
Создаем ссылки из /usr/local/mysql/bin в /usr/local/bin:
for file in $(ls /usr/local/mysql/bin | grep . ); do sudo ln -sf /usr/local/mysql/bin/$file /usr/local/bin/$file; done
Устанавливаем системные таблицы баз данных:
sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --ldata=/usr/local/mysql/data
Запускаем базу данных:
sudo /etc/init.d/mysql start (рекоммендуемый способ)
или
sudo /usr/local/bin/mysqld_safe --ledir=/usr/local/sbin --datadir=/usr/local/mysql/data --basedir=/usr/local &
Проводим безопасную настройку системы:
sudo /usr/local/mysql/bin/mysql_secure_installation
Останавливаем систему:
sudo /etc/init.d/mysql stop
Добавляем в автозапуск:
sudo /usr/sbin/update-rc.d mysql defaults 10 90
На production сервере в место той конфигурайии что мы использовали при первом старте mysql я использую конфигурацию представленную в файле ниже.
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, InnoDB only, ACID, few connections, heavy queries
#TYPE: SYSTEM
#END CONFIG INFO
[client]
#password = [your_password]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
skip-networking
max_connections = 250
back_log = 50
max_connect_errors = 10
table_open_cache = 2048
skip-external-locking
max_allowed_packet = 16M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
#memlock
thread_stack = 128K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin = mysql-bin
binlog_format = mixed
max_binlog_size = 100M
binlog_cache_size = 1M
expire_logs_days = 3
slow_query_log
slow_query_log_file = /var/log/mysqld/slow-queries.log
log-error = /var/log/mysqld/error.log
long_query_time = 2
tmpdir = /tmp
server-id = 1
#*** MyISAM Specific options
key_buffer_size = 2M
bulk_insert_buffer_size = 1M
myisam_sort_buffer_size = 4M
myisam_max_sort_file_size = 20M
myisam_repair_threads = 1
myisam_recover
# *** INNODB Specific options ***
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 1G
innodb_data_file_path = ibdata1:64M:autoextend
innodb_data_home_dir = /usr/local/mysql/var
innodb_log_group_home_dir = /usr/local/mysql/var
#innodb_file_io_threads = 4
#innodb_force_recovery = 1
innodb_thread_concurrency = 0 # 16
innodb_flush_log_at_trx_commit = 2 # 1
innodb_fast_shutdown
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_file_per_table = 1
innodb_file_format = barracuda
innodb_max_dirty_pages_pct = 90
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 120
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Only allow UPDATEs and DELETEs that use keys.
#safe-updates
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment