Instalacja
Z MySQL Integra
Spis treści |
Opis pomysłu i maszyny
Poniższy skrypt zawiera kroki konieczne do instalacji badanych przez nas serwerów "obok siebie" aby z sobą nie konfliktowały. Nasza maszyna docelowa ma 6 dysków, połączone w 1 LVM, te dyski będziemy spinać w różne konfiguracje RAID sprawdzając wpływ tych konfiguracji na ogólną wydajność systemu.
Dla celów sprawdzania rozwiązań przed wrzuceniem ich na serwer, skorzystam z VirtualBoxa z instalacją CentOS 5.3 (ten sam system co na naszym serwerze). Dla wygody zachęcam zamiast instalować system od zera w VirtualBoxie, pobrać poniższy obraz VDI: [1]
Obraz pochodzi z kolekcji obrazów systemów operacyjnych budowanych w ramach projektu: [2] Polecam :-)
Pre-instalacja
Przed instalacją możemy sobie troszkę przygotować środowisko. Przydadzą się nam dodatkowe repozytoria i narzędzia. Koniecznie aktualizujemy sytstem przed instalowaniem czegokolwiek innego, aby uniknąć konfliktów zależności.
#================================================================================ #Multiple MySQLs on one server HOWTO #================================================================================ #repos and keys rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt yum update -y yum install htop bash-completion -y
MySQL w Sandboxie
MySQL, "zwyczajny", zainstalujemy go z paczki z binariami (nie RPM) aby nie kolidował z np. MariaDB. Tworzymy go w ten sposób, aby wygodnie jako "główny" postawić MariaDB - lokalizacja bazy danych w systemie nie ma dla nas żadnego znaczenia (np. ze względu na wydajność), siedzimy i tak na jednym wielkim LVM pod którym możemy się bawić RAIDami - jest to rozwiązanie na cele naszych testów dość rozsądne, pozwoli zabawę różnymi konfiguracjami RAID.
#================================================================================ #Clean MySQL #================================================================================ groupadd mysql useradd -g mysql mysql #create a place for mysql to live in mkdir -p /opt/mysql cd /opt/mysql wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.43-linux-i686-glibc23.tar.gz/from/http://mysql.easynet.be/ tar xzvf mysql-5.1.43-linux-i686-glibc23.tar.gz mv mysql-5.1.43-linux-i686-glibc23.tar.gz 5.1.43 #go on with the installation cd 5.1.43 ./scripts/mysql_install_db --user=mysql #test it ./bin/mysqld_safe --user=mysql & #note that we MUST use the /opt/mysql/5.1.43/bin/mysql binary! NOT the global (that will be maria) one ./bin/mysql
mysql> SHOW engines; +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | YES | Supports transactions, row-level locking, AND FOREIGN KEYS | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM TABLES | NO | NO | NO | | BLACKHOLE | YES | /dev/NULL storage engine (anything you WRITE TO it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored IN memory, useful FOR TEMPORARY TABLES | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MyISAM | DEFAULT | DEFAULT engine AS of MySQL 3.23 WITH great performance | NO | NO | NO | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ 8 rows IN SET (0.00 sec) mysql> USE mysql; mysql> UPDATE user SET password=password("qwerty12345") WHERE user="root"; mysql> FLUSH privileges;
#if problems come up, try on mysql folders (data etc) chown -R mysql.mysql *
MariaDB
Marię zainstalujemy "najzwyczajniej" - w głównych folderach systemu plików. Instalację z RPM tej bazy wybrałem z powodu łatwości instalacji pozostałych innymi metodami - infini na przykład bardzo ładnie zainstaluje się w /usr/local/Calpont/... MariaDB zawiera kilka interesujących nas silników:
- PBXT
- XtraDB - pokazywany jako InnoDB
- Maria
#=============================================================================== #MariaDB "normal instalation" - includes: Maria, XtraDB, #=============================================================================== #wget http://askmonty.org/downloads/r/http://mariadb.cdn.cacheboy.net/download/mariadb-5.1.42/mariadb-5.1.42-Linux-x86_64.tar.gz rpm --import http://master.ourdelta.org/deb/ourdelta.gpg rpm -Uvh http://mirror.ourdelta.org/yum/CentOS/OurDelta-release-0.0.4-1.noarch.rpm yum install MariaDB-server MariaDB-client MariaDB-shared -y [root@localhost ~]# mysqld --version mysqld Ver 5.1.39-maria-beta-ourdelta67 for pc-linux-gnu on i686 ((OurDelta - http://ourdelta.org/))
Sprawdźmy jakie silniki udostępnia nam Maria:
mysql #Welcome to the MariaDB monitor. Commands end with ; or \g. #Your MariaDB connection id is 1 #Server version: 5.1.39-maria-beta-ourdelta67 (OurDelta - http://ourdelta.org/) # #Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # #MariaDB [(none)]> show engines; #+------------+---------+----------------------------------------------------------------+--------------+------+------------+ #| Engine | Support | Comment | Transactions | XA | Savepoints | #+------------+---------+----------------------------------------------------------------+--------------+------+------------+ #| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | #| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | #| FEDERATED | YES | FederatedX pluggable storage engine | YES | NO | YES | #| MARIA | YES | Crash-safe tables with MyISAM heritage | YES | NO | NO | #| CSV | YES | CSV storage engine | NO | NO | NO | #| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | #| ARCHIVE | YES | Archive storage engine | NO | NO | NO | #| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | #| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | #| PBXT | YES | High performance, multi-versioning transactional engine | YES | NO | NO | #+------------+---------+----------------------------------------------------------------+--------------+------+------------+ #10 rows in set (0.01 sec)
Uważnie przeglądając listę silników, można się zdziwić: "gdzie podział się XtraDB?". Odpowiedź jest zaskakująco przyjemna. XtraDB zastępuje InnoDB - jednak występuje pod jego nazwą. Ma to na celu umożliwienie następującego scenariusza: Tworzymy backup danych na serwerze korzystającym z InnoDB, wgrywamy je na naszym korzystającym z XtraDB i... gotowe. Nie musimy nawet zmieniać w definicjach tabel wykorzystywanego silnika. Jest to z pewnością wygodne przy migrowaniu danych na MariaDB z MySQL, ale troszkę może zaskoczyć... źródło: [3]
PS: Nie jest możliwe zainstalowanie z RPMów MariaDB obok MySQL, Maria perfidnie udaje, i korzysta z nazwy mysql - nawet sam demon serwera tak się nazywa... Szkoda, że "Monty" nie zdecydował się na mniej agresywne wobec MySQL podejście...
InfiniDB
Będzie to osobny serwer - niestety jest to konieczne, nie możliwe jest (potwierdził to członek zespołu infini) skorzystanie z tego silnika wewnątrz zwyczajnego MySQL jako plugin. Na szczęście instalacja jest bardzo przyjemna:
#=============================================================================== #InfiniDB, seperate instalation #=============================================================================== #Uprzedzając pytania: nie da się zainstalować go jako plugin... :-| #http://www.infinidb.org/community/forums/6-installation/67-possible-to-install-as-plugin ###binary release### wget http://infinidb.org/downloads/doc_download/117-102-final-32-bit-rpms version=1.0.2-1 tar xzvf calpont-infinidb-$version.i686.rpm.tar.gz rpm -Uvh calpont-$version.i686.rpm #mysql first - it's a dependency rpm -Uvh calpont-mysqld-$version.i686.rpm rpm -Uvh calpont-mysql-$version.i686.rpm #setup service/chkconfig cd /usr/local/Calpont/ killall mysqld ./bin/install-infinidb.sh chkconfig --add infinidb #dont autostart chkconfig infinidb off #setup aliases alias calpontOAMconsole='/usr/local/Calpont/bin/calpontConsole' echo 'alias calpontOAMconsole= /usr/local/Calpont/bin/calpontConsole' >> ~/.bashrc alias idbmysql='/usr/local/Calpont/mysql/bin/mysql --defaults-file=/usr/local/Calpont/mysql/my.cnf -u root' echo 'alias idbmysql= /usr/local/Calpont/mysql/bin/mysql --defaults-file=/usr/local/Calpont/mysql/my.cnf -u root' >> ~/.bashrc alias cc='/usr/local/Calpont/bin/calpontConsole' echo 'alias cc=/usr/local/Calpont/bin/calpontConsole' >> ~/.bashrc alias cmconsole='/usr/local/Calpont/bin/calpontConsole' echo 'alias cmconsole=/usr/local/Calpont/bin/calpontConsole' >> ~/.bashrc curl ip.appspot.com #222.222.222.222 #insert: bind-address = 222.222.222.222 into the configuration file #vim mysql/my.cnf service infinidb restart idbmysql #add users...
Możemy teraz zmienić tutaj port na którym będzie słuchał nasz infinidb, zmiany należy dokonać w: /usr/local/Calpont/mysql/my.cnf
#it takes some time for it to start, as its using it's "Database Platform" etc. #first startup will take quite long, since it will build it's datastructure service infinidb start #Starting Calpont InfiniDB Database Plaform: ...... done. #creating system catalog (be patient): ................. done. #Starting Calpont InfiniDB Mysqld: #Starting MySQL. [ OK ] service infinidb stop
Rzućmy okiem jakie silniki udostępnia nam ta baza danych:
[root@localhost ~]# idbmysql #Welcome to the MySQL monitor. Commands end with ; or \g. #Your MySQL connection id is 1 #Server version: 5.1.39 MySQL Community / InfiniDB Community Edition 1.0.2-1 Final (GPL) # #Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # #mysql> show engines; #+------------+---------+-----------------------------------------------------------+--------------+------+------------+ #| Engine | Support | Comment | Transactions | XA | Savepoints | #+------------+---------+-----------------------------------------------------------+--------------+------+------------+ #| CSV | YES | CSV storage engine | NO | NO | NO | #| InfiniDB | YES | Calpont InfiniDB storage engine | YES | NO | NO | #| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | #| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | #| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | #+------------+---------+-----------------------------------------------------------+--------------+------+------------+ #5 rows in set (0.00 sec)
TokuDB
Instalacja jest niezbyt przyjemna... Konieczne jest ręczne pobranie 3 osobnych archiwów z strony producenta - zmodyfikowanego MySQL, binarnej dystrybucji drzewa fraktalnego oraz łącznika mysql<->toku. Konieczna jest rejestracja (w nie zawsze działającym formularzu) oraz akceptacja 2 umów licencyjnych... Gdy już zdobędziemy pliki:
- mysql-5.1.36-tokutek-3.0.2-16948-src.tar.gz
- tokufractaltreeindex-3.0.2-16948-linux-x86 64.tar.gz
- tokumysql-3.0.2-16948-src.tar.gz
możemy przystąpić do instalacji:
!Nie skończone! coś nie idzie to tak jak powinno... jestem w trakcie sprawdzanie przyczyn problemu !Nie skończone!
#=============================================================================== # TOKUDB 3.0 BETA #=============================================================================== cd #get the file #sinceyou have to agree to lots of licence stuff... get it by hand... echo 'GET ME: mysql-5.1.36-tokutek-3.0.2-beta-16948-src.tar.gz' echo 'done?' read okey tar xzvf mysql-5.1.36-tokutek-3.0.2-beta-16948-src.tar.gz cd mysql-5.1.36-tokutek-3.0.2-beta-16948-src pushd mysql-5.1.36 bash scripts/tokutek.build.bash --mysqlversion=mysql-5.1.36-tokudb-3.0.2-16948 bash -x popd cd .. tar xzvf tokufractaltreeindex-3.0.2-beta-16948-linux-x86_64.tar.gz cd tokufractaltreeindex-3.0.2-beta-16948-linux-x86_64 vim README mkdir /opt/toku; cp * /opt/mysql/toku ############################################################################ ##################IN PROGRESSSSSSSSSSSSSSSSSSSSSSSS######################### ############################################################################
Post-instalacja
Kilka rzeczy które potencjalnie będziemy chcieli pozmieniać po instalacji wszystkiego.
#=============================================================================== #POST INSTALATION STUFF #=============================================================================== yum install httpd phpMyAdmin links nmap netstat -y echo "allow access to phpmyadmin from remote?" vim /etc/httpd/conf.d/phpMyAdmin.conf service httpd start links http://127.0.0.1/phpmyadmin

