Posts

How to Configure MySQL Master-Master Replication

Step 1: Install MySQL Server

Install MySQL Server on both machines.

# apt-get update
# apt-get install mysql-server mysql-client

Step 2: Configure MySQL Servers

Edit the /etc/mysql/my.cnf file on both machines. Add or modify the following values:

Server 1:

# vi /etc/mysql/my.cnf
        server_id           = 1
        log_bin             = /var/log/mysql/mysql-bin.log
        log_bin_index       = /var/log/mysql/mysql-bin.log.index
        relay_log           = /var/log/mysql/mysql-relay-bin
        relay_log_index     = /var/log/mysql/mysql-relay-bin.index
        expire_logs_days    = 10
        max_binlog_size     = 100M
        log_slave_updates   = 1
        auto-increment-increment = 2
        auto-increment-offset = 1

Server 2:

# vi /etc/mysql/my.cnf
        server_id           = 2
        log_bin             = /var/log/mysql/mysql-bin.log
        log_bin_index       = /var/log/mysql/mysql-bin.log.index
        relay_log           = /var/log/mysql/mysql-relay-bin
        relay_log_index     = /var/log/mysql/mysql-relay-bin.index
        expire_logs_days    = 10
        max_binlog_size     = 100M
        log_slave_updates   = 1
        auto-increment-increment = 2
        auto-increment-offset = 2

Step 3: Modify my.cnf file with bind-address

Edit or add bind-address in my.cnf

# vi /etc/mysql/my.cnf    	
        bind-address    = x.x.x.x

Step 4: Restart MySQL Server

After inserting the above entries restart mysql server.

# service mysqld restart

Step 5: Create Replication Users

Connect with mysql server as root

# mysql -u root -p

Configure the replication users on each Linode. Replace x.x.x.x with the private IP address of the opposing Linode, and password with a strong password:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';

Run the following command to test the configuration. Use the private IP address of the opposing Linode:

 mysql -ureplication -p -h x.x.x.x -P 3306

Step 6: Configure Database Replication

Server 1:

While logged into MySQL on Server 1, query the master status:

mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      120 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

Server 2:

On Server 2 at the MySQL prompt, set up the slave functionality for that database. Replace x.x.x.x with the private IP from the first server. Also replace the value for master_log_file with the file value from the previous step, and the value for master_log_pos with the position value.

mysql> SLAVE STOP;
mysql> CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=106;
mysql> SLAVE START;

Step 7: Configure Database Replication Vice Versa

Server 2:

On Server 2, query the master status. Again note the file and position values.

mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      160 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

Server 1:

Set the slave database status on Server 1, replacing the same values swapped in step 2 with those from the Server 2.

mysql> SLAVE STOP;
mysql> CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=160;
mysql> SLAVE START;

Step 8: Create Database

Test by creating a database and inserting a row:

Server 1:

mysql> create database test;
mysql> create table test.books (`id` varchar(10));

Server 2:

mysql> show tables in test;

How to Configure Munin Monitoring Server

Step 1: Prerequisites

Firstly install all the required libraries that are dependent on munin installation:

# yum install -y httpd php gcc glibc glibc-common libpcre rrdtool

Step 2: Install munin Package

In order to configure munin monitoring server firstly install munin & munin-node package from EPEL repository.

# yum --enablerepo=epel -y install munin munin-node

Step 3: Configure munin package

Edit the munin.conf file and add your hostname name

# vi /etc/munin/munin.conf
[beta.tecdistro.com]
    address 127.0.0.1
    use_node_name yes

Edit /etc/httpd/conf.d/munin.conf file and allow and deny the networks in order to access the munin monitoring service.

# vi /etc/httpd/conf.d/munin.conf
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 10.0.0.0/24

Step 4: Configure Apache Authentication

We need to setup apache authentication for user munin-admin. Do not change this username. else you would required more changes in configuration.

# cd /var/www/html/munin
#vi .htaccess
AuthUserFile /var/www/html/munin/.htpasswd
AuthGroupFile /www.null
AuthName "Authorization Required"
AuthType Basic
require user munin-admin
Save the file and exit.
Execute the htpasswd to set the password againts munin-admin user
# htpasswd -c /var/www/html/munin/.htpasswd munin-admin
# vi /etc/httpd/conf/httpd.conf
 <Directory "/var/www/html/munin">
 AllowOverride AuthConfig
</Directory>
# service httpd restart

Now restart Apache service.

# service httpd restart
OR
# /etc/rc.d/init.d/httpd restart
Stopping httpd:             [ OK ]
Starting httpd:             [ OK ]

Step 5: Start Service

Configure Munin node as a monitoring target.

# vi /etc/munin/munin-node.conf
host_name tecdistro
# /etc/rc.d/init.d/munin-node start
Starting Munin Node:      [ OK ]

Also configure munin service to start on system start.

# chkconfig --add munin
# chkconfig munin on
# chkconfig munin-node on

Step 6: Configure Notifications & Alerts

# vi /etc/munin/munin.conf
contact.email.command mail -s "Munin-notification for ${var:group}::${var:host}" your_email_address
contact.log.command tee -a /var/log/munin/alert.log

To verify the notifications are configured properly execute the below command:

#su - munin --shell=/bin/bash -c "/usr/share/munin/munin-limits --contact email --force"

Step 7: Set the Alerts

Set the threshold of alerts(warning & critical notifications) in munin.conf file for services like cpu_load, disk_utilization, memory etc. Here we add cpu_load, disk_utilization in configuration file.

# vi /etc/munin/munin.conf
[tecdistro.com]
    address 127.0.0.1
    use_node_name yes
#Set warning and critical threshold of CPU
    cpu.user.warning :80
    cpu.user.critical :90
#Set warning and critical threshold of root partition
    df._dev_mapper_VolGroup_lv_root.warning :80
    df._dev_mapper_VolGroup_lv_root.critical :90
#Set warning and critical threshold of home2 partition(if exists)
    df._dev_mapper_VolGroup-lv_home2.warning :80
    df._dev_mapper_VolGroup_lv_home2.critical :90

How to Add Host in Munin Monitoring Server

In order to add munin client on target host follow the steps:

Install munin Package

In order to configure munin monitoring server firstly install munin & munin-node package from EPEL repository.

# yum --enablerepo=epel -y install munin munin-node

Configure munin package

Edit the munin-node.conf file and add your hostname

# vi /etc/munin/munin-node.conf 
host_name backup.distro
allow ^10\.10\.10\.20$

Start Service

# /etc/rc.d/init.d/munin-node start
Starting Munin Node:         [ OK ]

Also configure munin service to start on system start.

# chkconfig munin-node on

Add target host in monitoring server

Edit the munin.conf file and add remote host.

# vi /etc/munin/munin.conf
[backup.tecdistro.com]
    address 10.10.10.20
    use_node_name yes

Disk Management: How to configure RAID

RAID is a Redundant Array of Inexpensive disks, also known as Redundant Array of Independent drives.
RAID is used to increase the logical capacity of storage devices used, improve read/write performance and ensure redundancy in case of a hard disk failure. All these needs can be addressed by other means, usually more expensive than the RAID configuration of several hard disks. The adjective Inexpensive used in the name is not without a reason.

RAID 0
Stripping
RAID 1
Mirroring
RAID 5
Strip Set with priority bit
Min. Max Disk 2-32 2-2 3-32
Failure Support 0 1 1
Size-Loss 0% 50% N-1

How to Install phpmyadmin in CentOS / RedHat / Fedora

Step 1: Prerequisites

Step 2: Download Package

Download rpm package for CentOS / RedHat /Fedora

# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
# yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
# yum check-update

Step 3: Install phpmyadmin

# yum install phpMyAdmin

Step 4: Reload Apache Service

# service httpd restart

Step 5: Check on Browser

Open your favorite browser and Hit the  URL:http://192.168.1.1/phpMyAdmin

Troubleshooting

»  #2002 – Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
The server is not responding (or the local server’s socket is not correctly configured).
( This means your mysql server service is stopped , you must start the service  “service mysql start”)

» You don’t have permission to access /phpMyAdmin/ on this server.
Open /etc/httpd/conf.d/phpMyAdmin.conf file and find the lines “Deny from All” and comment those lines and restart httpd service

vi /etc/httpd/conf.d/phpMyAdmin.conf

» If you are installing phpmyadmin on Redhat 7 you may face this issue:
Error: Package: php-php-gettext-1.0.11-10.el7.noarch (epel)
Requires: php-mbstring
Error: Package: php-tcpdf-6.0.091-1.el7.noarch (epel)
Requires: php-bcmath
Error: Package: phpMyAdmin-4.2.8.1-2.el7.noarch (epel)
Requires: php-mbstring >= 5.3.0
Error: Package: php-tcpdf-6.0.091-1.el7.noarch (epel)
Requires: php-mbstring
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest

In order to resolve this issue follow the following steps:

# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/7/x86_64/yum-plugin-replace-0.2.7-1.ius.el7.noarch.rpm

Install yum replace package and replace entire PHP stack

# rpm -i yum-plugin-replace-0.2.7-1.ius.el7.noarch.rpm 
# yum replace php --replace-with php56u