mercredi 21 décembre 2011

Replication MySQL : serveur esclave

Pour ce faire, il te faut créer un fichier de configuration de type "SLAVE", root(a)...:~# vi /etc/mysql/conf.d/replication-slave.cnf
et d'y coller la portion de configuration suivante : [mysqld]
server-id = 2
# log_bin = /var/log/mysql/mysql-bin.log
# expire_logs_days = 10
# max_binlog_size = 100M
master-host = master.mysqlhost.com
master-port = 3306
master-user = rpldbuser
master-password = rpldbpasswd
master-connect-retry = 60 # 60 secondes par defaut

# ignored databases (optionnal)
#replicate-ignore-db = db1
#replicate-ignore-db = db2
#...
#replicate-ignore-db = dbn

# ignored tables (optional)
#replicate-ignore-table=db_name.table_name

# skip errors (optional)
# slave-skip-errors = 1062,1053,1146,1051,1050,1007,1008

# some info about skippable errors (do not uncomment)
# Error: 1050 SQLSTATE: 42S01 (ER_TABLE_EXISTS_ERROR)
# Message: Table '%s' already exists

# Error: 1051 SQLSTATE: 42S02 (ER_BAD_TABLE_ERROR)
# Message: Unknown table '%s'

# Error: 1053 SQLSTATE: 08S01 (ER_SERVER_SHUTDOWN)
# Message: Server shutdown in progress

# Error: 1062 SQLSTATE: 23000 (ER_DUP_ENTRY)
# Message: Duplicate entry '%s' for key %d

# Error: 1146 SQLSTATE: 42S02 (ER_NO_SUCH_TABLE)
# Message: Table '%s.%s' doesn't exist

# Error: 1007 SQLSTATE: HY000 (ER_DB_CREATE_EXISTS)
# Message: Can't create database '%s'; database exists

# Error: 1008 SQLSTATE: HY000 (ER_DB_DROP_EXISTS)
# Message: Can't drop database '%s'; database doesn't exist


allez hop un petit redemarrage du service mysql pour que cette config soit prise en compte

root(a)...:~# /etc/init.d/mysql restart

c'est terminé...

Replication MySQL : serveur maitre

Pour ce faire, il te faut créer un fichier de configuration de type "MASTER".
root(a)...:~# vi /etc/mysql/conf.d/replication-master.cnf

et d'y "copier-coller" la portion de configuration suivante :
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M


allez hop un petit redemarrage du service mysql pour que cette config soit prise en compte
root(a)...:~# /etc/init.d/mysql restart

Il ne te reste plus qu'à creer un utilisateur dédié a la réplication des bases :
# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is ...

Server version: 5.1.41-3ubuntu12.10 (Ubuntu)



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



mysql> grant replication slave, replication client on *.* TO rpldbuser@"%" identified by 'rpldbpasswd';

mysql> quit;

Manipulation de BDD MySQL

Exporter une base de données $ mysqldump -u root -p database_name > database_name.sql
Enter password:

Importer une base de données $ mysql -u root -p database_name < database_name.sql
Enter password:

Si tu souhaite voir une application concrète de l'utilisation de ces deux commandes, je t'invite a jeter un oeil sur le post suivant :
http://ubuntout.blogspot.com/2010/12/comment-sauvegarder-tes-bases-mysql.html