Informatique

Monit

periode de maintenance

1
# crontab -l
#        0 3 * * * /usr/bin/monit unmonitor myservice
#        0 4 * * * /usr/bin/monit monitor myservice

(un)monitor all services

1
# monit unmonitor all

(un)monitor specific service group

1
# monit -g myservicegroup unmonitor

MongoDB

init d’un cluster

1
rs.initiate(
   {
      _id: "myclust",
      version: 1,
      members: [
         { _id: 0, host : "10.0.0.1" },
         { _id: 2, host : "10.0.0.2" },
         { _id: 2, host : "10.0.0.3" }
      ]
   }
)

verif du cluster

1
:> rs.status()

add d’un membre dans le cluster

1
:PRIMARY> rs.add('10.0.0.3')

Sync du nouveau membre

1
:SECONDARY> rs.syncFrom('10.0.0.1')

Forcer un host a passer primary

Sur les autres slave

1
:SECONDARY> rs.freeze(120)

Sur l’actuel master

1
:PRIMARY> rs.stepDown(120)

show conf

1
:> db.serverStatus()

tools

1
# mongostat
# mongotop

show cache

1
:> db.serverStatus().wiredTiger.cache

conf du cache dans mongod.conf

1
storage:
 wiredTiger:
  engineConfig:
    configString : cache_size=1024M

Dump

1
# mongodump --host 127.0.0.1 -o mongoback/

Restore

1
# mongorestore mongoback/

virer le warning :

WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’

1
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

Firefox

supprimer le http:// devant l’url, lors d’un copier/coller

about:config

browser.urlbar.trimURLs => false

qemu

Convertir un raw en qcow2

1
# qemu-img convert -f raw -O qcow2 image.raw image.qcow2

PostgreSQL

change to postgres user and open psql prompt

1
# su - postgres
# psql

list databases

1
postgres=# \l

list roles

1
postgres=# \du

create role

1
postgres=# CREATE ROLE demorole1 WITH LOGIN ENCRYPTED PASSWORD 'password1' CREATEDB;

create role with multiple privileges

1
postgres=# CREATE ROLE demorole1 WITH LOGIN ENCRYPTED PASSWORD
postgres=# 'password1' CREATEDB CREATEROLE REPLICATION SUPERUSER;

alter role

1
postgres=# ALTER ROLE demorole1 CREATEROLE CREATEDB REPLICATION SUPERUSER;

drop role

1
postgres=# DROP ROLE demorole1;

create database

1
postgres=# CREATE DATABASE demodb1 WITH OWNER demorole1 ENCODING 'UTF8';

grant privileges to new user

1
postgres=# GRANT ALL PRIVILEGES ON DATABASE demodb1 TO demorole1;

drop database

1
postgres=# DROP DATABASE demodb1;

connect to database

1
postgres=# \c <databasename>

list tables in connected database

1
postgres=# \dt

list columns on table

1
postgres=# \d <tablename>

show processlist;

1
SELECT * from pg_stat_activity ;

Kill session on a database

1
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydataabse' AND leader_pid IS NULL;

nice output

1
postgres=# \x on

output in csv file

1
postgres=#
\copy (
select * from truc
) To 'output.csv' With CSV DELIMITER ';' HEADER

kill query

1
postgres=# SELECT pg_cancel_backend(<pid of the process>)
postgres=# SELECT pg_terminate_backend(<pid of the process>)

show tables

1
SELECT * FROM pg_catalog.pg_tables;

backup/restore database

1
$ pg_dump -h ${TARGET_HOST} -p ${PG_PORT} -U ${PG_USER} -Fd -f ${TARGET_DIR} ${PG_DB}
$ pg_restore -c -Fd -d ${PG_DB} ${BACKUP_DIR}

or

1
$ pg_dump -U username -h hostname dbname > dump.sql
$ psql -U username -d dbname -f dump.sql

check repli

coté master

1
postgres=# select client_addr, state, sent_location, write_location,flush_location, replay_location from pg_stat_replication;

coté slave

1
postgres=# select now() - pg_last_xact_replay_timestamp() AS replication_delay;

Pause de la repli

1
select pg_xlog_replay_pause();

Resume repli

1
select pg_xlog_replay_resume();

Some Tunning

max_connections = 3cores
shared_buffers = 4G < 64G RAM ; 8G > 64G RAM
work_mem = 8M < 32G ram ; 16M < 64G RAM ; 32M > 64G RAM ; if max_connections > 400 => work_mem/2
maintenance_work_mem = 1G
wal_level = hot_standby
archive_mode = on
archive_command = /bin/true
max_wal_senders = 5
wal_keep_segments = 3
checkpoint_segments
random_page_cost = 2.0 for raid, san ; 1.0 for SSD
effective_cache_size = RAM /2
log_min_duration_statement = 1000
log_checkpoints = on

Purge des pg_xlog

1
/etc/init.d/postgresql stop

/usr/lib/postgresql/9.5/bin/pg_controldata /var/lib/postgresql/9.5/main/

sudo -u postgres /usr/lib/postgresql/9.5/bin/pg_resetxlog -o $NEXTOID -x $NEXTXID -f /var/lib/postgresql/9.5/main/

/etc/init.d/postgresql start

Point In Time Recovery
PTR

Vagrant

La doc

Les Box sont des packages d’environement vagrant
catalogue de box

Initialise le projet et créé le VagrantFile

1
vagrant init

start une vm

1
vagrant up

liste les vm

1
vagrant status

se connect en ssh a la vm

1
vagrant ssh

stop une vm

1
vagrant halt

stop une vm et la supprime

1
vagrant destroy

Exim

Gestion de la queue

Supprimer un message en Queue :
En fonction de l’emeteur

1
# exiqgrep -i -f fromuser@domain.com | xargs exim -Mrm

En fonction du destinataire

1
# exiqgrep -i -t touser@domain.com | xargs exim -Mrm

re-run de la queue

1
# exim -qf

Mysql

Cluster Galera

sources.list

https://downloads.mariadb.org/mariadb/repositories/#mirror=urbach&distro=Debian

Bootstrapping a new cluster

1
$ mysqld --wsrep-new-cluster &

Adding node to a cluster

1
$ mysqld --wsrep_cluster_address=gcomm://192.168.0.1  # DNS names work as well

Cluster state

1
mysql> show global status like '%wsrep%';

Cluster conf

[mysqld]

#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

#galera settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name=”my_wsrep_cluster”
wsrep_cluster_address=”gcomm://172.16.8.5,172.16.8.6,172.16.8.4”
wsrep_sst_method=rsync

more conf

  • choose your donor
    wsrep_sst_donor=”10.0.100.10,10.0.100.8”

Doc

MariaDB

Troubleshooting

  • En cas de :

/usr//bin/wsrep_sst_rsync: 269: /usr//bin/wsrep_sst_rsync: [[: not found

remplacer /bin/sh par /bin/bash dans le shebang

  • Si le start timeout à cause d’une sync trop long

ajouter TimeoutStartSec=0 au [Service] systemd

  • Si tous les noeuds tombent en même temps.

~# mysqld –wsrep-cluster-address=”gcomm://“

  • Si aucun des noeud ne veut boostrap starter :

dans
/var/lib/mysql/grastate.dat

passer “safe_to_bootstrap: 0” à 1

rpm

déarchiver un rpm

1
# rpm2cpio poypoy.rpm  | cpio -idmvt

Find out whether a package s installed

1
# rpm -qa | grep package

Finding out which package installed a file

1
rpm -qf file_name