How to configure MySQL Master-Slave Replication in RHEL 6.X/Centos 6.X
- Working Linux OS like CentOS 6.3, RedHat 6.3 or Fedora 17
- Master and Slave are CentOS 6.3 Linux Servers.
- Master IP Address is: 10.65.62.30
- Slave IP Address is: 10.66.191.232
- Master and Slave are on the same LAN network.
- Master and Slave has MySQL version installed.
- Master allow remote MySQL connections on
port 3306.
Master side (10.65.62.30):
[root@station1 Desktop]# yum install -y
mysql*
[root@station1 Desktop]# service mysqld
start
[root@station1 Desktop]# mysqladmin -u
root password password ------> setting password for the root
user
[root@station1 Desktop]# mysql -u root
-ppassword ------> login
Welcome to the MySQL monitor. Commands
end with ; or \g.
Your MySQL connection id is 15
Server version: 5.1.52 Source
distribution
Copyright (c) 2000, 2010, Oracle and/or
its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO
WARRANTY. This is free software,
and you are welcome to modify and
redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type
'\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use mysql;
Reading table information for
completion of table and column names
You can turn off this feature to get a
quicker startup with -A
Database changed
mysql> DELETE FROM mysql.user WHERE
user = ''; ----> to delete anonymous users.
mysql> flush privileges;
mysql> create database Ranjith;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Ranjith |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use Ranjith;
Reading table information for
completion of table and column names
You can turn off this feature to get a
quicker startup with -A
Database changed
mysql> create table contacts (
`first_name` char(20), `last_name` char(20), `mob_no` char(20),
`email_id` char(30), PRIMARY KEY (`email_id`));
mysql> show tables;
+-------------------+
| Tables_in_Ranjith |
+-------------------+
| contacts |
+-------------------+
1 row in set (0.00 sec)
mysql> describe contacts;
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key |
Default | Extra |
+------------+----------+------+-----+---------+-------+
| first_name | char(20) | YES | |
NULL | |
| last_name | char(20) | YES | |
NULL | |
| mob_no | char(20) | YES | |
NULL | |
| email_id | char(30) | NO | PRI |
| |
+------------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> INSERT INTO contacts
(first_name,last_name,mob_no,email_id) VALUES
('Ranjith','Pandurangan','+918056316316','upload.vellore@licindia.com');
mysql> select * from contacts;
+------------+-------------+---------------+----------------------+
| first_name | last_name | mob_no
| email_id |
+------------+-------------+---------------+----------------------+
| Ranjith | Pandurangan |
+918056316316 | upload.vellore@licindia.com |
+------------+-------------+---------------+----------------------+
2 rows in set (0.00 sec)
mysql>quit;
[root@station1 ~]# service mysqld stop
Stopping mysqld:
[ OK ]
[root@station1 ~]# vim /etc/my.cnf
[mysqld]
server-id = 1
binlog-do-db=Ranjith ----> Name of
database to be replicated in slave
relay-log =
/var/lib/mysql/mysql-relay-bin
relay-log-index =
/var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file =
/var/lib/mysql/mysql-master.info
relay-log-info-file =
/var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is
recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@station1 ~]# ls /var/lib/mysql
ibdata1 ib_logfile0 ib_logfile1
mysql Ranjith test
[root@station1 ~]# service mysqld start
Starting mysqld:
[ OK ]
[root@station1 ~]# ls /var/lib/mysql
ibdata1 ib_logfile0 ib_logfile1
mysql mysql-bin.000001 mysql-bin.index mysql.sock Ranjith test
[root@station1 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands
end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.61-log Source
distribution
Copyright (c) 2000, 2011, Oracle and/or
its affiliates. All rights reserved.
Oracle is a registered trademark of
Oracle Corporation and/or its
affiliates. Other names may be
trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type
'\c' to clear the current input statement.
mysql> GRANT REPLICATION SLAVE ON
*.* TO 'root'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position |
Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | Ranjith
| |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> quit
Please write down the File
(mysql-bin.000001) and
Position (106) numbers,
we required these numbers later on Slave server.
Next apply READ LOCK to databases to export all the
database and master database information with mysqldump
command.
[root@station1 ~]# mysqldump -u root -p
--all-databases --master-data > /root/ranjithdb.db
Enter password:
[root@station1 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands
end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.61-log Source
distribution
Copyright (c) 2000, 2011, Oracle and/or
its affiliates. All rights reserved.
Oracle is a registered trademark of
Oracle Corporation and/or its
affiliates. Other names may be
trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type
'\c' to clear the current input statement.
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
[root@station1 ~]# scp -r
/root/ranjithdb.db 10.66.191.232:/root/
Slave side (10.66.191.232):
[root@vellore ~]#
ping 10.65.62.30
PING 10.65.62.30
(10.65.62.30) 56(84) bytes of data.
64 bytes from
10.65.62.30: icmp_seq=1 ttl=59 time=28.2 ms
64 bytes from
10.65.62.30: icmp_seq=2 ttl=59 time=28.2 ms
^C
--- 10.65.62.30
ping statistics ---
2 packets
transmitted, 2 received, 0% packet loss, time 1332ms
rtt
min/avg/max/mdev = 28.236/28.237/28.238/0.001 ms
[root@station1
Desktop]# yum install -y mysql*
[root@station1
Desktop]# service mysqld start
[root@station1
Desktop]# mysqladmin -u root password password ------> setting
password for the root user
[root@station1
Desktop]# mysql -u root -ppassword ------> login
Welcome to the
MySQL monitor. Commands end with ; or \g.
Your MySQL
connection id is 15
Server version:
5.1.52 Source distribution
Copyright (c)
2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software
comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are
welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or
'\h' for help. Type '\c' to clear the current input statement.
mysql> show
databases;
+--------------------+
| Database
|
+--------------------+
|
information_schema |
| mysql
|
| test
|
+--------------------+
4 rows in set
(0.00 sec)
mysql> use
mysql;
Reading table
information for completion of table and column names
You can turn off
this feature to get a quicker startup with -A
Database changed
mysql> DELETE
FROM mysql.user WHERE user = ''; ----> to delete anonymous users.
mysql> flush
privileges;
mysql> create
database Ranjith;
mysql> show
databases;
+--------------------+
| Database
|
+--------------------+
|
information_schema |
| Ranjith
|
| mysql
|
| test
|
+--------------------+
4 rows in set
(0.02 sec)
mysql> quit
Bye
[root@vellore ~]#
mysql -u root -ppassword Ranjith < /root/ranjithdb.db
[root@vellore ~]#
vim /etc/my.cnf
[mysqld]
server-id = 2
master-host=10.65.62.30
master-connect-retry=60
master-user=root
master-password=password
replicate-do-db=Ranjith
relay-log =
/var/lib/mysql/mysql-relay-bin
relay-log-index =
/var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file =
/var/lib/mysql/mysql-master.info
relay-log-info-file =
/var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is
recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@vellore ~]# service mysqld
restart
Stopping mysqld:
[ OK ]
Starting mysqld:
[ OK ]
[root@vellore ~]# mysql -u root
-ppassword
mysql> slave stop; mysql> CHANGE MASTER TO MASTER_HOST='10.65.62.30', MASTER_USER='root',
MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106;
mysql> slave start; mysql> show slave status\G
mysql> show slave status\G
*************************** 1. row
***************************
Slave_IO_State: Waiting
for master to send event
Master_Host:
10.65.62.30
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
mysql-bin.000004
Read_Master_Log_Pos: 400
Relay_Log_File:
mysql-relay-bin.000008
Relay_Log_Pos: 390
Relay_Master_Log_File:
mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: Ranjith
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 400
Relay_Log_Space: 545
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
Verifying MySQL Replication on Master and Slave Server
Master Side (10.65.62.30):
[root@station1 ~]# mysql -u root
-ppassword
Welcome to the MySQL monitor. Commands
end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.61-log Source
distribution
Copyright (c) 2000, 2011, Oracle and/or
its affiliates. All rights reserved.
Oracle is a registered trademark of
Oracle Corporation and/or its
affiliates. Other names may be
trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type
'\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Ranjith |
| mysql |
| test |
+--------------------+
4 rows in set (0.02 sec)
mysql> use Ranjith;
Reading table information for
completion of table and column names
You can turn off this feature to get a
quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_Ranjith |
+-------------------+
| contacts |
+-------------------+
1 row in set (0.00 sec)
mysql> select * from contacts where
First_name='Ranjith';
+------------+-------------+---------------+-----------------------------+
| first_name | last_name | mob_no
| email_id |
+------------+-------------+---------------+-----------------------------+
| Ranjith | Pandurangan |
+918056316316 | upload.vellore@licindia.com |
+------------+-------------+---------------+-----------------------------+
1 row in set (0.02 sec)
mysql> UPDATE contacts SET
last_name='' WHERE first_name='Ranjith';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings:
0
mysql> select * from contacts where
First_name='Ranjith';
+------------+-----------+---------------+-----------------------------+
| first_name | last_name | mob_no
| email_id |
+------------+-----------+---------------+-----------------------------+
| Ranjith | |
+918056316316 | upload.vellore@licindia.com |
+------------+-----------+---------------+-----------------------------+
1 row in set (0.00 sec)
mysql>
Slave Side (10.66.191.232:
[root@vellore ~]# mysql -u root
-ppassword
Welcome to the MySQL monitor. Commands
end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.61-log Source
distribution
Copyright (c) 2000, 2011, Oracle and/or
its affiliates. All rights reserved.
Oracle is a registered trademark of
Oracle Corporation and/or its
affiliates. Other names may be
trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type
'\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Ranjith |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use Ranjith;
Reading table information for
completion of table and column names
You can turn off this feature to get a
quicker startup with -A
Database changed
mysql> select * from contacts where
First_name='Ranjith';
+------------+-----------+---------------+-----------------------------+
| first_name | last_name | mob_no
| email_id |
+------------+-----------+---------------+-----------------------------+
| Ranjith | |
+918056316316 | upload.vellore@licindia.com |
+------------+-----------+---------------+-----------------------------+
1 row in set (0.00 sec)
mysql>quit
From the above example you can see that when i remove my last name in Master database, the same thing gets replicated automatically in my slave server.
Thanks watching. Having any doubts or errors give a comment.
No comments:
Post a Comment