Clean bash history

The history entries has a copy in the memory and it will flush back to the file when you log out.
To clear the bash history completely on the server, open terminal and type following command:

 

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

MySQL replica

Replication

Se il master è nuovo e lo slave è nuovo

MASTER:

1. Bisogna azitutto creare un utente ad hoc per la replica, non è obbligatorio ma è preferibile

2. Vengono poi dati i permessi di replica dagli slave all’utente appena creato:

3. Aggiungere nel file /etc/my.cnf se non c’è:

questa operazione necessita il reboot di mysql.

SLAVE:

1. Fare girare da utente ROOT mysql:

Se ometto MASTER_LOG_FILE e MASTER_LOG_POS allora vengono inizializzati a “” e 4 rispettivamente.

2. Impostare in /etc/my.cnf il server_id = NUM diverso da NUM impostato per MASTER, preferibilmente uguale al gruppo D dell’indirizzo della macchina.

Esempio: 192.168.100. 2

[ DEPRECATA ] Questa parte sostituisce invece il punto 1. per lo slave (alternativa) da aggiungere in /etc/my.cnf :

NB:

Ricordare di riavviare master e slave se effettuate modifiche sui rispettivi /etc/my.cnf.

Se il master è già funzionante e lo slave è nuovo

In questo caso non possiamo partire da zero.

MASTER:

1. Bisogna ottenere le informazioni dello stato del master, per far questo anzitutto occorre bloccare le scritture:

anche entrando semplicemente come utente normale.

2. Controllo ora, senza uscire dal prompt di mysql, se no le lock vengono rilasciate, lo stato del master:

e mi scrivo nome del file e posizione in cui mi trovo.

3. Lascio il client attivo e lancio ora il dump sul db del master da un’altra shell:

4. Posso uscire dal client aperto al punto 1. per rilasciare i lock.

SLAVE:

1. Vedi sopra il caso di master e slave nuovi

Come avviare o controllare lo stato dello slave

Per avviare lo slave:

SLAVE START;

Per stoppare lo slave

SLAVE STOP;

Per vederne lo stato:

SHOW SLAVE STATUS\G

Per reset dello slave:

RESET SLAVE;

Come recuperare una data posizione di un mysql-bin. del master

Se si vuole recuperare una log_pos specifica dentro un mysql-bin specifico basta eseguire il suddetto comando:

questo permette di far partire il CHANGE MASTER TO da una data posizione. Torna utile se si ha un dump che parte ad un certo orario della notte, nel caso in cui si corrompa qualcosa durante il giorno, per ripartire dal dump + le operazioni eseguite da quella log_pos specifica.

In caso di errori nella replica

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; slave start;

identificare il codice di errore e inserirlo in
[root@backup-rgb ~]# vi /etc/my.cnf

# DA TOGLIERE QUANDO FINITO IL SYNC CON IL MASTER
#slave-skip-errors = 1062,1452

/etc/init.d/mysql restart

 

Compress / Uncompress Fields

Per far si che si possa fare una compressione di un campo accertarsi che il db sia stato compilato con zlib.

Fatto questo definire di tipo VARBINARY il campo, o i campi, per i quali serve fare una compressione.

NB.

In ogni record il numero massimo dei caratteri dentro campi VARBINARY non può superare i 65535 (caratteri sommati tra i campi VARBINARY)**

** Capire se è la somma di tutti i VARBINARY o se sono da contare anche i VARCHAR e altro.

Prima di fare la INSERT o la UPDATE davanti al valore da inserire in questi dati campi inserire COMPRESS( valore ) e prima della lettura UNCOMPRESS( valore )

my.cnf

Per abilitare la replication ma mantenere solo N giorni indietro i file mysql-log.bin:

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
expire_logs_days = N

Impostare il numero di connessioni a db da 151 di default almeno a 250:

max_connection=250 # Portare il valore tranquilla mente anche a 1000

 

Caching degli indici per singola tabella

E’ possibile far si che ogni tabella possa avere per gli indici una cache dedicata.

Queste le sequenze di istruzioni da aggiungere su my.cnf per gestire la creazione e l’assegnazione del buffer creato:

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

How to compile PHP 7 on centos

PHP 7 went out yesterday: 3 December 2015.

Here the HowTo to install PHP 7 on centos.

Merry Christmas!

Suggested resource :
https://www.howtoforge.com/tutorial/how-to-install-php-7-on-debian/

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Selinux

Unless the server is part of a super secure environment, I would simply disable Selinux.

On RedHat / CentOS / Scientific Linux this can easily be done by editing /etc/sysconfig/selinux – find the parameter “selinux” and change the option “enforcing” to “disabled” as per the extract below:

It is probably wise to reboot the server after making this change.

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

PHP and IP localization through GeoIP

How to install GeoIP module for PHP on CentOS:

How to use it:

Output:

 

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Work as Jenkins user

Jenkins user is not usable from shell because his passwd line is:

To login as Jenkins you can use these commands:

 

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Git tricks

Git is a version control which allows you to do amazing things during development process.
One of the most powerful feature of git is the easy way to create branches. Each branch is a kind of stand alone version of the code.
I use to use git from command line as a proper geek 🙂 , but to make it easier there are some tweaks you should apply to your command prompt.

Install git

First of all you need to install git in your local environment:
on CentOS:

on Debian (like):

 git auto-completion

The auto completion activated by “tab” key is a really cool feature to add to your shell. It works with sub commands of git and with branche’s names.

Download the script from github.com:

add these lines to your .bashrc (for mac users the file is .bash_profile):

git global configurations

To active the colors:

To configure the default git author:

To push always just the current branch:

Show the branches

One of the most interesting part of this tutorial is probably the tweak to show the branch in your command prompt. To get it you just have to add few lines to your .bashrc (for mac users the file is .bash_profile) in your home directory.

Then you have to change your bash custom prompt (PS1) setup.

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Composer

Let’s assume that:

  • I have 2 repositories;
  • The first one is a dependency of the second one;
  • The first one has a tag: v1.0.0;
  • The second requires the first one in composer.

composer.json in the first repository:

composer.json of the second repository

 

Discoveries

  • “prefer-stable”: true is mandatory if you want to use a tag.
  • @dev@stable, @RC are not considered at all (if you do not have “prefer-stable”: true you won’t get a tag if you specified @stable)
  • “require-dev” has higher priority than “require”
  • if you run composer install –no-dev, you will not get dependencies specified in “require-dev”
  • “minimum-stability”: “dev” must be specified if you want to make alias work
  • aliases can be specified against different branches than master as follow: “dev-{branchName}”: “{major}.{minor}.x-dev”
  • an alias allows you to use a tag when you require a version, composer will download the last commit of the associated branch (and alias does not affect the git repository anyhow)
  • in production you should run composer as follow: composer install –no-dev –optimize-autoloader
  • name is used in the fist composer.json file to be used as require name in the second composer.json
  • to speed up a bit the repositories lookup, you can write as follow:
  • if you don’t have an alias in your dependency’s composer.json, you can specify repositories as follow:

 

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

Install a Centos 6.x as a LAMP server

 

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone