#!/bin/bash
## @brief script d'installation du serveur Mariadb Galera
## @author Michée Lengronne
set -e

##Password du root mysql

PASSWORD=passwordroot

#######################################
##Sur un serveur debian Squeeze en root

##Création du nouveau repo

cat > mariadbrepo <<EOF
# MariaDB 5.5 repository list - created 2013-02-07 13:35 UTC
# http://mariadb.org/mariadb/repositories/
deb http://mirror2.hs-esslingen.de/mariadb/repo/5.5/debian squeeze main
deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.5/debian squeeze main
EOF
mv /etc/apt/sources.list /etc/apt/sources.bak || { echo "Problème lors de la mise en archive de l'ancien fichier de sources"; exit 1; }
cat mariadbrepo /etc/apt/sources.bak > /etc/apt/sources.list || { echo "Problème lors de la création du nouveau fichier de sources"; exit 1; }
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
apt-get update

##Installation de MariadB et de Galera

apt-get install -y mariadb-galera-server galera rsync

## !!!!! Le panneau de création du mot de passe root s'affiche !!!!!

/etc/init.d/mysql stop
mv /etc/mysql/my.cnf /etc/mysql/my.bak

##Création du nouveau my.cnf

cat > /etc/mysql/my.cnf <<-EOF
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld_safe]
nice = 0
socket = /var/run/mysqld/mysqld.sock

[mysqld]
basedir = /usr
bind-address = 0.0.0.0
binlog_format = ROW
character_set_server = utf8
collation_server = utf8_general_ci
datadir = /var/lib/mysql
default-storage-engine = InnoDB
expire_logs_days = 10
innodb_autoinc_lock_mode = 2
innodb_buffer_pool_size = 256M
innodb_doublewrite = 1
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_locks_unsafe_for_binlog = 1
key_buffer = 256M
lc-messages-dir = /usr/share/mysql
max_allowed_packet = 128M
max_binlog_size = 128M
max_connections = 64
myisam-recover = BACKUP
myisam_sort_buffer_size = 64M
net_buffer_length = 8K
open-files-limit = 65535
pid-file = /var/run/mysqld/mysqld.pid
port = 3306
query_cache_limit = 8M
query_cache_size = 16M
read_buffer_size = 8M
read_rnd_buffer_size = 8M
skip-external-locking
socket = /var/run/mysqld/mysqld.sock
sort_buffer_size = 16M
table_cache = 2M
table_definition_cache = 65535
table_open_cache = 65535
thread_cache_size = 8
thread_concurrency = 8
tmpdir = /tmp
user = mysql

[mysqldump]
max_allowed_packet = 16M
quick
quote-names

[mysql]

[isamchk]
!includedir /etc/mysql/conf.d/
key_buffer = 256M
read_buffer = 16M
sort_buffer_size = 256M
write_buffer = 16M
EOF

##Création du my.cnf spécifique au cluster

cat > /etc/mysql/conf.d/mariadb.cnf <<EOF
[mysqld]
wsrep_cluster_address='gcomm://'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_sst_method=rsync
EOF

##Démarrer le serveur

/etc/init.d/mysql restart

##Purger les utilisateurs et en créer des neufs adaptés au cluster

echo "Suppression des utilisateurs présents !";
mysql -uroot -p -e "SET wsrep_on = OFF; DELETE FROM mysql.user WHERE user = '';"
echo "Password root: $PASSWORD";
mysql -uroot -p -e "SET wsrep_on = OFF; GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '$PASSWORD';"

