Centreon : Migration de votre base MySQL

Logo CentreonSi comme moi vous avez installé sur votre machine votre Centreon ainsi que vos bases MySQL et qu’aujourd’hui vous voulez séparer les deux pour un gain de performance ou tout simplement pour cloisonner votre système, je vais vous montrer la marche à suivre. La migration d’une base MySQL est plutôt simple mais peut prendre du temps en fonction de la taille de vos bases.

Pour ma part, j’ai un serveur où tourne Centreon (qui s’appelle monitoring.alexnogard.com)  disposant de 4CPU et 4GO de ram. J’ai un serveur dédié à MySQL (qui s’appelle bdd.alexnogard.com) disposant de 2CPU 8GO de ram qui sont suffisant pour charger mes tables InnoDB (6GO) en RAM.

Voici ci-dessous comment faire :

Configuration du nouveau serveur

Premièrement, nous préparons notre nouveau serveur qui accueillera nos bases :
Installation de MySQL :

# yum -y install mysql-server mysql-devel

On configure notre mysql pour qu’il se lance au démarrage & on le démarre:

# chkconfig mysqld on
# service mysqld start

On sécurise notre MySQL :

# mysql_secure_installation

secure mysql
secure mysql
secure mysql
secure mysql

Notre MySQL est maintenant sécurisé. Nous passons maintenant à la configuration. Pour optimiser au mieux notre MySQL nous effectuons un mysqltuner sur notre serveur monitoring.alexnogard.com, ou la base est pour le moment installée puis analysons le résultat :

mysqltuner
mysqltuner

On voit clairement ce qui ne va pas dans les recommandations :
– DB fragmentée
– le buffer innodb est trop peu dimentionné
– quelques autres paramêtres doivent être modifiés.

D’autres problèmes apparaissent. Je vous conseil d’aller lire Optimisation et tuning de Centreon.

Nous créons donc un fichier my.conf en relation avec les recommandations :

[mysqld] max_connections=20
low_priority_updates=1
myisam-recover=backup,force
thread_concurrency=1
concurrent_insert=2
thread_cache_size=32
max_allowed_packet=8M
key_buffer_size=128M
innodb_buffer_pool_size=6500M
innodb_additional_mem_pool_size=10M
innodb_flush_method=O_DIRECT
innodb_file_per_table = 1
interactive_timeout = 100
connect_timeout = 60
wait_timeout = 120

tmp_table_size = 300M
max_heap_table_size = 200M
join_buffer_size=32M
read_buffer_size=16M
sort_buffer_size=8M
read_rnd_buffer_size=2M
#key_buffer_size=96M
max_allowed_packet=8M
max_connect_errors=10
myisam_sort_buffer_size=64M
query_cache_limit=16M
query_cache_size=64M
query_cache_type=1
table_cache=400
table_definition_cache=450
#table_cache 100

[isamchk] key_buffer=128M
#sort_buffer=128M
#read_buffer=4M
#write_buffer=2M

[myisamchk] key_buffer_size = 128M
#sort_buffer_size = 128M
#read_buffer = 4M
#write_buffer = 2M

Exportation & importation de la base

Pour exporter la base Centreon, nous allons tout d abord stopper le service nagios ainsi que le service mysql pour être sur qu’aucune nouvelles données ne soient écrite.Puis, nous lançons la commande suivante :

# mysqldump -uroot -pPASSWORD –all-databases > alldb.sql

Puis envoyons notre dump à notre nouveau serveur SQL :

#  scp /root/alldb.sql root@bdd.alexnogard.com:/root/alldb.sql

Et pour finir, nous importons cette base sur notre nouveau serveur :

# mysql -u root -p < alldb.sql

Pour finir, pour que nous puissions attaquer notre serveur MySQL depuis notre serveur Centreon, il faut recréer l’utilisateur Centreon dans notre nouvelle DB :

# mysql -u root -pPASSWORD

> CREATE USER ‘centreon’@’monitoring.alexnogard.com’ IDENTIFIED BY PASSWORD  ‘***************’;
> GRANT USAGE ON * . * TO  ‘centreon’@’monitoring.alexnogard.com’ IDENTIFIED BY PASSWORD  ‘*****************’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
> GRANT ALL PRIVILEGES ON  `centstorage` . * TO  ‘centreon’@’monitoring.alexnogard.com’ WITH GRANT OPTION ;
> GRANT ALL PRIVILEGES ON  `centreon` . * TO  ‘centreon’@’monitoring.alexnogard.com’ WITH GRANT OPTION ;
> GRANT ALL PRIVILEGES ON  `centstatus` . * TO  ‘centreon’@’monitoring.alexnogard.com’ WITH GRANT OPTION ;

Modifications de Centreon

Nous modifions maintenant Centreon pour que notre ndo2db puisse envoyer les données à notre nouvelle base.

Pour se faire, aller dans “Configuration”, “Centreon”, “ndo2db.cfg”, selectionnez votre fichier de configuration puis aller dans l’onglet “Database” & modifiez simplement le “Database hoster” :

Centreon Mysql
Centreon ndo2db configuration

On redémarre notre poller, Notre monitoring utilise maintenant notre nouvelle Database.

Si vous avez des soucis à utiliser cette nouvelle base, jetez un oeil ci-dessous.

Troubleshooting

Si centreon affiche un problème de connexion SQL (icone rouge dans la toolbar en haut à droite), il faut truncate les tables de la base centstatus, attention, vous perdrez vos données historisées :

TRUNCATE `nagios_comments`;
TRUNCATE `nagios_configfiles`;
TRUNCATE `nagios_configfilevariables`;
TRUNCATE `nagios_conninfo`;
TRUNCATE `nagios_contactgroups`;
TRUNCATE `nagios_contactgroup_members`;
TRUNCATE `nagios_contactnotificationmethods`;
TRUNCATE `nagios_contactnotifications`;
TRUNCATE `nagios_contacts`;
TRUNCATE `nagios_contactstatus`;
TRUNCATE `nagios_contact_addresses`;
TRUNCATE `nagios_contact_notificationcommands`;
TRUNCATE `nagios_customvariables`;
TRUNCATE `nagios_customvariablestatus`;
TRUNCATE `nagios_dbversion`;
TRUNCATE `nagios_downtimehistory`;
TRUNCATE `nagios_eventhandlers`;
TRUNCATE `nagios_externalcommands`;
TRUNCATE `nagios_flappinghistory`;
TRUNCATE `nagios_hostchecks`;
TRUNCATE `nagios_hostdependencies`;
TRUNCATE `nagios_hostescalations`;
TRUNCATE `nagios_hostescalation_contactgroups`;
TRUNCATE `nagios_hostescalation_contacts`;
TRUNCATE `nagios_hostgroups`;
TRUNCATE `nagios_hostgroup_members`;
TRUNCATE `nagios_hosts`;
TRUNCATE `nagios_hoststatus`;
TRUNCATE `nagios_host_contactgroups`;
TRUNCATE `nagios_host_contacts`;
TRUNCATE `nagios_host_parenthosts`;
TRUNCATE `nagios_instances`;
TRUNCATE `nagios_logentries`;
TRUNCATE `nagios_notifications`;
TRUNCATE `nagios_objects`;
TRUNCATE `nagios_processevents`;
TRUNCATE `nagios_programstatus`;
TRUNCATE `nagios_runtimevariables`;
TRUNCATE `nagios_scheduleddowntime`;
TRUNCATE `nagios_servicechecks`;
TRUNCATE `nagios_servicedependencies`;
TRUNCATE `nagios_serviceescalations`;
TRUNCATE `nagios_serviceescalation_contactgroups`;
TRUNCATE `nagios_serviceescalation_contacts`;
TRUNCATE `nagios_servicegroups`;
TRUNCATE `nagios_servicegroup_members`;
TRUNCATE `nagios_services`;
TRUNCATE `nagios_servicestatus`;
TRUNCATE `nagios_service_contactgroups`;
TRUNCATE `nagios_service_contacts`;
TRUNCATE `nagios_statehistory`;
TRUNCATE `nagios_systemcommands`;
TRUNCATE `nagios_timedeventqueue`;
TRUNCATE `nagios_timedevents`;
TRUNCATE `nagios_timeperiods`;
TRUNCATE `nagios_timeperiod_timeranges`;

Pour toutes questions & ou remarques, n’hésitez pas à commenter ;)

Et si cette article vous a plu, n’hésitez pas à partager :).

About Alexandre Nogard

Check Also

Centreon : EventHandler Restart de Borne Wifi / DECT automatique Cisco & Ascom

Vous est il déjà arrivé d’avoir des bornes Wifi / DECT qui perdent la connexion, …

Centreon : Supervision de leases DHCP avec Infoblox

Utilisant la solution de DHCP infoblox depuis maintenant 2 ans. J’ai “développé” un petit script …

ISPConfig 3 : Virtualisation & Management avec OpenVZ

Après les deux précédents articles sur ISPConfig 3 : Installation d’ISPconfig 3 sur CentOs 6.4 …

Leave a Reply

Your email address will not be published. Required fields are marked *