June 2019
M T W T F S S
« May    
 12
3456789
10111213141516
17181920212223
24252627282930

Categories

WordPress Quotes

Happiness depends more on the inward disposition of mind than on outward circumstances.
Benjamin Franklin
June 2019
M T W T F S S
« May    
 12
3456789
10111213141516
17181920212223
24252627282930

Short Cuts

2012 SERVER (64)
2016 windows (9)
AIX (13)
Amazon (36)
Ansibile (19)
Apache (134)
Asterisk (2)
cassandra (2)
Centos (211)
Centos RHEL 7 (267)
chef (3)
cloud (2)
cluster (3)
Coherence (1)
DB2 (5)
DISK (25)
DNS (9)
Docker (30)
Eassy (11)
ELKS (1)
EXCHANGE (3)
Fedora (6)
ftp (5)
GIT (3)
GOD (2)
Grub (1)
Hacking (10)
Hadoop (6)
health (1)
horoscope (23)
Hyper-V (10)
IIS (15)
IPTABLES (15)
JAVA (7)
JBOSS (32)
jenkins (1)
Kubernetes (6)
Ldap (5)
Linux (188)
Linux Commands (166)
Load balancer (5)
mariadb (14)
Mongodb (4)
MQ Server (24)
MYSQL (84)
Nagios (5)
NaturalOil (13)
Nginx (35)
Ngix (1)
openldap (1)
Openstack (6)
Oracle (35)
Perl (3)
Postfix (19)
Postgresql (1)
PowerShell (2)
Python (3)
qmail (36)
Redis (12)
RHCE (28)
SCALEIO (1)
Security on Centos (29)
SFTP (1)
Shell (64)
Solaris (58)
Sql Server 2012 (4)
squid (3)
SSH (10)
SSL (14)
Storage (1)
swap (3)
TIPS on Linux (28)
tomcat (62)
Uncategorized (29)
Veritas (2)
vfabric (1)
VMware (28)
Weblogic (38)
Websphere (71)
Windows (19)
Windows Software (2)
wordpress (1)
ZIMBRA (17)

WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.

Who's Online

15 visitors online now
4 guests, 11 bots, 0 members

Hit Counter provided by dental implants orange county

MySQL Databases to Separate Disks

You may have a database server which started out small, with all its databases stored on the same disks, that is now experiencing severe storage I/O bottlenecks. With so many heavily accessed databases on the same storage device your queries are timing out while waiting for response from disk. And despite all your efforts in optimizing the databases and queries, there has come a time where the disks just can’t keep up. For this type of scenario, you need to spread your load across more storage devices.

Sadly, MySQL doesn’t have an option to configure separate storage paths for each database like more enterprise database servers do. The solution is to symbolicly link your databases from the new storage device to the MySQL data home directory

 

As long as the new location has the proper ownership and SELINUX context, this fools MySQL into believing your migrated databases still exist in the data home directory.

Objectives

  1. Prepare new storage for databases.
  2. Moving I/O heavy databases to separate storage.

Scenario

We have a MySQL 5.1 server hosting five databases on a single disk. One of the five databases is flooding the disk with I/O due to its work profile and needs to be moved to separate storage. The databases information is shown below.

Database Old Data Location New Data Location
webapp02 /var/lib/mysql/webapp02 /Databases/webapp02

The storage for the the database.

Device Name Type Configuration
sdb SCSI 4 physical disks in RAID 10

Preparing Your new Storage

  1. Attach the new storage devices to the server.
  2. Create a single partition and format it with a filesystem.Create a root directory which will be used to contain mount points for your new storage.
    mkdir /Databases
  3. For each database being migrated, create a folder for its storage device to mount to.
    mkdir /Databases/webapp02
  4. Set the SELINUX context type of the new directories to mysqld_db_t to allow MySQL access to them.
    chcon -r -t mysqld_db_t /Database
  5. Modify fstab so that

Copying Databases to New Storage

  1. Copy your database’s files to the new location, using cp and -preserve=all to maintain ownership and SELINUX contexts.
    cp -r -preserve=all /var/lib/mysql/mydb1 /new-mydb1-location
  2. Verify the SELINUX context is applied correctly to the directories and files.
    ls -lZ /Databases && ls -lZ /Databases/*

Point MySQL to New Database Locations

  1. Stop the MySQL daemon.
    service mysqld stop
  2. Navigate to the MySQL data home directory, which is /var/lib/mysql by default.
  3. Delete the databases directories for the databases being migrated, making note of the directory names. They’ll be needed in the next step.
  4. Create soft links to the storage of each database being migrated. The link file names must must the name of the database’s directory name.
    ln -s /Databases/myappdb1 myappdb1
  5. Repeat the process for every databases being moved.
  6. After all databases have been migrated, restart the MySQL daemon.
  7. If all goes well, MySQL should start correctly. If it does not, check the system logs for Selinux context errors.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Blue Captcha Image
Refresh

*

Protected by WP Anti Spam