Previous Topic: MYSQL5 - MySQL Database ApplianceNext Topic: PGSQL64 - PostgreSQL Database Appliance


MYSQLR, MYSQLR64 - MySQL Database Appliance Suitable for Replication

MYSQLR64: MySQL Database Appliances Suitable for Replication

At a Glance

Catalog

System

Category

Database Appliances

User volumes

yes

Min. memory

160 MB

OS

Linux

Questions/Comments

Ask Forum

Functional Overview

MYSQLR64 is a database appliance based on the MySQL database engine (http://www.mysql.org). It provides an easy way to add a database to any application. The appliances can also be used in complex MYSQL replication scenarios. The appliances are based on MYSQL5 (CentOS 5.5/MySQL 5) but also handle database replication.

Database replication enables data from one MySQL database server (known as master) to be replicated to one or more MySQL database servers (known as slaves). The MYSQLR64 appliances can be setup for master-slave as well as master-master replication and replication with more than two masters.

The replication setup, management and monitoring is done via a web interface. The web interface provides an easy way to start replication with close to zero downtime on the master. It can also be used to repair a replication in case of problems. The web interface can be used for copying databases from older database appliances like MYSQL and MYSQL5. MYSQLR64 also provide an easy way for managing and browsing your database (based on phpMyAdmin).

Replication is useful in several cases:

In its default configuration MYSQLR64 acts exactly as a MYSQL5 appliance with a web interface for management. To use it for replication scenarios, you need at least two MYSQLR64 appliances with an appropriate configuration (see Typical Usage).

MYSQLR64 stores the database on an application-defined volume that can be configured on each MYSQLR64 instance. MYSQLR64 automatically creates an empty database when it starts on an empty volume.

Name

Latest Version

OS

!MySQL

Notes

MYSQLR

2.0.3-1

CentOS 5.5

5.5.8

MYSQLR64

2.0.3-1

CentOS 5.5 (64 bit)

5.5.8

 

Important! You should not mix 32-bit and 64-bit MYSQLR appliances when using replication as the database files are copied as is from the master to the slave. Also, data volumes from the 32-bit version of the appliance should not be used with a 64-bit version of the same appliance (and vice versa). To migrate a database between the 32-bit and 64-bit MYSQLR versions, dump the databases on one host and import them on the other as described here.

Boundary

Resources

Resource

Minimum

Maximum

Default

CPU

0.10

16

0.40

Memory

160 MB

32G

512 MB

Bandwidth

1 Mbps

2 Gbps

250 Mbps

Terminals

Name

Dir

Protocol

Description

in

in

MYSQL

Receives MySQL database requests.

rin

in

Any

Slave MYSQLR64 appliances that use the appliance as a master connect to this terminal.

ui

in

HTTP

Provides access to the web interface of MYSQLR64.

log

out

CIFS

Connect to a NAS appliance for storing error logs. This terminal may be left unconnected if not used.

rout

out

Any

Connects to a master MYSQLR64 server. This terminal may be left unconnected and should be used only in replication scenarios.

mon

out

CCE

Sends performance and resource usage statistics. This terminal may be left unconnected.

The default interface is enabled. It is intended for diagnostics and troubleshooting (over SSH). Future versions of this appliance may disable SSH access.
Important! The rin and rout terminals are used for both SSH (tcp 22) and MYSQL (tcp 3306) data. When gateways / VPN is used to connect those terminals, the firewalls should be configured to allow both ports.

User Volumes

Volume

Description

data

Volume used for the database data storage. This volume is mandatory.

binlogs

Volume used for binary logs when running in replication mode (either as master or slave). This volume is not mandatory, but if you use the appliance in replication (set rpl_mode to be something other than none) and you don't provide a binlogs volume, the appliance will fail to start.

The data volume can optionally contain a my.cnf file in its top directory, which includes MYSQL configuration options. See the Custom Configuration section for more details. This feature is available in MYSQLR64 1.6.1 or later.

Important!

To migrate a database from an old appliance (MYSQL, MYSQL5, MYSQL64), a database from a physical server or a database from MYSQLR (if migrating from 32 bit to 64 bit version of the appliance), see the 'Migrate database from another appliance' procedure.

Properties

Property Name

Type

Description

auto_create

Integer

Whether to create the database if it doesn't exist. Possible values are 1 to create it and 0 to prevent auto creation (to avoid accidental overwrite in case of corrupted volumes). If set to 0 and a database doesn't exist on the data volume, the appliance starts in maintenance mode (appliance will start properly, but the MySQL deamon will not be started so that the user can check the problem). Default is 1.

error_log_filename

String

Name for the error log file, relative to the log file system (for example, /mysql_logs/my.log). Directories in the path are auto created. If empty, error log is written to the data volume (/mnt/data/error.log). Default: (empty).

error_log_level

String

Error logging level. Possible values are: error logs only errors, warn logs both warnings and errors. This property is not case sensitive. Default: error

timezone

String

Specifies the time zone used in the appliance. If this property is empty, the timezone is not modified and left as-is. A list of supported time zones is available here. Default: empty

As of MYSQLR64 1.6.8, the use_old_passwords property was removed. If you need to enable old_passwords, create a custom configuration as described below.

The MYSQLR appliance will fail to start if the error_log_filename is specified and the log terminal is not connected or the file system cannot be mounted.

Advanced Properties

Property name

Type

Description

server_id

Integer

Server id. Possible values are from 1 to 10. This specifies the id of the server when doing replication. Help ensure you setup unique IDs for all your servers that are part of the replication. Default: 1

rpl_mode

String

Replication mode. Possible values are none (no replication), master, slave, and master_and_slave (for multi-master replication scenarios where a server is a master and a slave at the same time). Default: none

web_pwd

String

Password for authentication to the web interface. This property is optional. If set, the appliance's http server is started and the web interface is exposed on both the ui terminal and the default interface where it is accessible through the Login (web) option in the CA 3Tera AppLogic editor. Default: (empty).

Custom Configuration

This feature is available in MYSQLR64 1.6.1 or later.

MYSQLR64 allows the use of a custom MYSQL configuration file which can provide additional configuration options or overwrite existing configuration specified in /etc/my.cnf.

To use a custom configuration, create a file named my.cnf and place it in the top directory of the data volume. The format of the file should follow the MYSQL options file syntax as described in the MYSQL documentation.

For example, the following can be used to tune MYSQLR64 for better performance when using InnoDB? (the default MYSQLR64 configuration is optimized for MyISAM). The example is based on using 512M of memory (default for MYSQLR64).

[mysqld]
# Shrink down MyISAM buffers
key_buffer = 512K
myisam_sort_buffer_size = 512K

# Make InnoDB the default storage engine (optional)
default-storage-engine = INNODB

# Set InnoDB buffer size
innodb_buffer_pool_size=350M
innodb_log_file_size=128M
innodb_log_buffer_size=4M
innodb_thread_concurrency=8

# If you do not have too many tables use this option, so you will not have uncontrolled innodb main tablespace growth which you can’t reclaim.
innodb_file_per_table=1

Important! When used in replication mode, MYSQLR64 will also synchronize the my.cnf file on the data volume whenever you fix/initiate the replication, so your slave will have the same configuration as the master.

Web Interface

MYSQLR64 provides a web interface which can be accessed on both its ui terminal and its default interface through the Login (web) option in the CA 3Tera AppLogic editor. Using the web interface requires HTTP authentication. Leave the username blank and use the value of web_pwd as password. The interface has the following features:

browse and edit your databases using PhPMyAdmin

Replication Setup and Maintenance

Add Master-Slave Replications to MYSQLR64 Appliances

CA 3Tera AppLogic lets you add master-slave replications to existing MYSQLR64 appliances without losing any data.

To add master-slave replications to MYSQLR64 appliances

  1. Set rpl_mode to master on the existing appliance
  2. Add a new MYSQLR64 appliance to your application with an empty data volume. Connect its rout terminal to the rin terminal of the current appliance.
  3. (Optional) If you are going to use it in master-master replication, connect the eliminated terminal on the current appliance to the rin terminal of the new appliance.
  4. Restart the application.
  5. Log in to the web interface of the new appliance and select initiate/fix replication from the Manage Replication tab. Logging takes time depending on the size of the data on the master. If you use INSSLR for accessing MYSQLR64, help ensure to set the timeout property to a high value (36000) to avoid timeouts. Verify that there are no timeouts in any proxies on the client side (better not use proxy at all).

After replication is initiated, login to the web interface on both MYSQLR64 appliances and verify the replication status. Within 5 minutes or less, the replication should be running on both appliances.

Add MYSQLR64 Appliances to Master-Slave Replications

CA 3Tera AppLogic lets you add new MYSQLR64 appliances to existing master-master replications without losing any data.

To add MYSQLR64 appliances to master-slave replications

  1. Add a new MYSQLR64 appliance to your application with an empty data volume. For example, dbN, presuming that you already have N-1 MYSQLR64 appliances (3 <= N <= 10) and each appliance has its rout terminal connected to the rin terminal of the next appliance in a circular setup (db1 rout is connected to db2 rin, and so on).
  2. Set rpl_mode to master_and_slave of dbN.
  3. Connect the rout terminal of the dbN-1 appliance to the rin terminal of the dbN appliance.
  4. Connect the rout terminal of the dbN appliance to the rin terminal of the db1 appliance.
  5. Restart the application so that the changes take effect. After the restart, the replication will not be in sync until the end of the procedure. Data written to one appliance may not be replicated on all other appliances for the time of the procedure.
  6. Log in to the web interface of the dbN appliance and select initiate/fix replication from the ManageReplication tab. Logging takes time depending on the size of the data on the master. If you use INSSLR for accessing MYSQLR64, help ensure that the timeout property is set to a high value (36000) to avoid timeouts. Also, help ensure that there are no timeouts in any proxies on the client side (better not use proxy at all).
  7. After replication is initiated, log in to the web interface of dbN-1 and select reset master log position. Logging makes the application read dbN-1 and read dbN`s binary logs from the beginning.

Log in on to web interface of all MYSQLR64 appliances and verify the replication status, in 5 minutes or less the replication should be running on all appliances.

Repair Replication in Master-Slave Configurations

CA 3Tera AppLogic lets you repair replication in a master-slave setup without losing any data.

To repair replication in master-slave configurations

  1. Login to the web interface of the slave and select initiate/fix replication. Logging takes time depending on the size of the data on the master. During the operation, mysql service on the slave stops. No downtime is introduced on the master. This operation is equivalent to adding a new appliance to an existing MYSQLR64 appliance. If you use INSSLR for accessing MYSQLR64, verify that the timeout property is set to a high value (36000) to avoid timeouts. Also, verify that there are no timeouts in any proxies on the client side (better not use proxy at all).

After replication is initiated, log in to the web interface on the slave MYSQLR64 appliances and verify the replication status, within 5 minutes or less, the replication should be running.

Repair Replication in Master-Master Configurations

CA 3Tera AppLogic lets you repair replication in a master-master setup without losing any data.

Log in to the web interface of the appliance that reports the replication as failed and select initiate/fix replication. Logging takes time depending on the size of the database on the master. During the operation, mysql service on the appliance stops. No downtime is introduced on the master. The database will not be in sync among all masters until the end of the repair. The database updates may not be replicated on all other MYSQLR64 appliances for the duration of the repair.

All data on this appliance is initialized from the master. If there are any updates to the database on the current appliance since the replication is broken, they will be lost. In such cases, resolve the conflicts manually.

To repair replication in master-master configurations

  1. Login to the web interface of the appliance that has its rout terminal connected to the appliance that runs fix replication. Select reset master log position. Setting master log makes the application read the binary logs of the fixed appliance from the beginning. If you use INSSLR for accessing MYSQLR64, verify that the timeout property is set to a high value (36000) to avoid timeouts. Also, verify that there are no timeouts in any proxies on the client side (better not use proxy at all).

Log in on to web interface of all MYSQLR64 appliances and review the replication status. Within 5 minutes or less, the replication should be running on all appliances.

Replication Monitoring

There is a cron job that monitors the replication between MYSQLR64 appliances. In case the replication is enabled, the cron job runs every two minutes and sends alerts to the grid dashboard in the following cases:

In such cases, the user should solve the problem manually.

In case of failed replication, you can use the web interface to fix it as described in the section above.

Replication Monitoring

There is a cron job that monitors the replication between MYSQLR64 appliances. In case the replication is enabled, the cron job runs every two minutes and sends alerts to the grid dashboard in the following cases:

In such cases, the user should solve the problem manually.

In case of failed replication, you can use the web interface to fix it as described in the section above.

Custom Counters

The MYSQLR64 appliance reports the following custom counters through the mon terminal.

The following counters belong to the MySql counter group:

Counter Name

Description

Aborted Clients

Number of clients aborted by the server

Aborted Connections

Number of connects aborted by the server

Bytes Received

Number of received bytes

Bytes Sent

Number of sent bytes

Total Connections

Number of connections

Questions

Total number of questions

Slow Queries

Number of slow queries

Threads Created

Number of threads created

Threads Connected

Number of threads connected

Threads Running

Number of threads running

Max Used Connections

Number of max connections used

Open Files

Number of open files

Admin Commands

Number of admin commands

Alter Table Commands

Number of alter table commands

Analyze Commands

Number of analyze commands

Change DB Commands

Number of change DB commands

Change Master Commands

Number of change master commands

Check Commands

Number of check commands

Commit Commands

Number of commit commands

Create DB Commands

Number of create DB commands

Create Function Commands

Number of create function commands

Create Index Commands

Number of create index commands

Create Table Commands

Number of create table commands

Delete Commands

Number of delete commands

Drop DB Commands

Number of drop DB commands

Drop Function Commands

Number of drop function commands

Drop Index Commands

Number of drop index commands

Drop Table Commands

Number of drop table commands

Flush Commands

Number of flush commands

Grant Commands

Number of grant commands

Insert Commands

Number of insert commands

Insert Select Commands

Number of insert select commands

Kill Commands

Number of kill commands

Load Commands

Number of load commands

Lock Tables Commands

Number of lock tables commands

Optimize Commands

Number of optimize commands

Purge Commands

Number of purge commands

Rename Table Commands

Number of rename table commands

Repair Commands

Number of repair commands

Replace Commands

Number of replace commands

Replace Select Commands

Number of replace select commands

Reset Commands

Number of reset commands

Revoke Commands

Number of revoke commands

Rollback Commands

Number of rollback commands

Select Commands

Number of select commands

Set Option Commands

Number of set option commands

Truncate Commands

Number of truncate commands

Unlock Tables Commands

Number of unlock tables commands

Update Commands

Number of update commands

Error Messages

The following messages may appear in either the appliance log file or the system log of the grid controller when the appliance fails to start:

Error message

Description

Failed to set timezone!

Failed to set the appliance timezone as configured by the timezone property.

Appliance is running in [$rpl_mode] replication mode but binlogs volume is missing

The appliance is configured to run either as master, slave or master_and_slave but no binlogs volume has been given.

Appliance is running in [$rpl_mode] replication mode but the 'rout' terminal is not connected

The appliance is configured to run either as slave or master_and_slave but the rout terminal is not connected.

The 'rout' terminal is connected, but the [rpl_mode] property is set to 'none'. Either configure replication via the [rpl_mode] property or disconnect the 'rout' terminal

The rout terminal is connected, but the [rpl_mode] property is set to none. Either configure replication via the [rpl_mode] property or disconnect the 'rout' terminal.

Failed to start mysql due to error_log_filename set and log terminal not connected!

The error_log_filename property is configured but the log terminal is not connected.

Failed to mount share through log terminal!

The appliance was configured to write logs on the log terminal, but it failed to mount the share on the log terminal.

The share through the log terminal is not writeable!

The share on the log terminal is not writable.

Failed to create logdir [$logdir] on the log terminal!

Failed to create logdir [$logdir] on the log terminal!

The logdir [$logdir] is not writeable!

The logdir [$logdir] on the log terminal is not writeable!

The logfile [$error_log] is not writable!

The logfile [$error_log] on the log terminal is not writable!

Failed to create database!

Appliance was started with no database and it failed to install mysql databases.

Failed to setup replication!

Appliance failed to configure replication.

Failed to start mysql!

The MySQL daemon could not be started.

Insufficient permissions in the mysql database!

Either the permissions for the 'root'@'%' are insufficient or if used in replication mode, the 'replication_user'@'%' does not have enough permissions to run MySQL replication.

Web interface failed to start!

Web interface failed to start!

The data volume size should be at least 100Mb

data volume should be bigger then 100 megabytes. See notes on volume requirements.

Additionally, the following errors may appear on the grid dashboard while the appliance is running:

Error message

Description

Free space on the data volume is running low, please check!

Free space on the data volume is below 20%.

Replication of master server is not running, please check!

Replication of master server is not running.

Replication of slave is too much behind master, please check!

Replication of slave is too much behind master.

Free space on the binlogs volume is running low, please check!

Free space on the binlogs volume is below 20%.

Typical Usage

Simple Two-tier Application (No Replication)

The following diagram shows a typical usage of the MYSQLR64 appliance in a two-tier web application:

Simple two-tier application (no replication)

Appliances in use:

Client request arrives on the user gateway. The gateway forwards the requests to the web server, which serves the request. When scripts (for example, Perl or PHP) on web need to access persistent data, they use the db appliance through the out terminal of the web server. The db appliance is configured to store its log files within the root directory of the share exposed by logs.

Using a browser, administrators connect to the admin gateway to view the mysql or web server log files. The admin gateway forwards the requests to the logs NAS appliance.

Example property configuration (properties that are not listed should be left to their default values):

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

Note: The data volume must also be configured on the db appliance as well as the logs, content and mon appliances. To create application volumes that can be used here, see the Grid Users Guide.

Scalable Two-tier Application (No Replication)

The following diagram shows a typical usage of the MYSQLR64 appliance in a two-tier web application in which the database is used to share state and data between multiple, load-balanced web servers. In addition, this example has a separate input for maintenance, through which an administrator can log in and access the database for maintenance and an input through which an administrator can log in and view the mysql error log.

Scalable two-tier application (no replication)

Appliances in use:

Client request arrives on the user gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers web1 and web2. The web servers access the db database.

The db database and web1 and web2 servers write their log files to the logs appliance through the log terminals. In addition, an administrator can log in through the maint gateway to the logs appliance and view the log files.

Additionally, an administrator can log in over SSH through the maint gateway to the admin server (public-private keys need to be setup). From the admin server, the administrator can access the db database for statistics or changing the database schema. The admin server can access the Internet through the gway gateway, for example, to download a newer version of libraries or the database schema.

Example property configuration (properties that are not listed should be left to their default values):

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

Notes:

The maint, admin, gway, mon and log appliances are not required for the operation of the two-tier application. If present, the admin server may have cron jobs for database scrubbing, sending e-mail, and so on.

N-tier Application with Master-Slave Replication (Suitable for Backups)

The following diagram shows a typical usage of the MYSQL appliance in a web application in which the database is replicated to a slave server. The slave server can be used to make consistent backups of the data without stopping the master server, thus introducing zero downtime of the application.

N-tier application with master-slave replication (suitable for doing backups)

Appliances in use:

Client request arrives on the user gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers web1 and web2. The web servers access the master database.

The slave appliance is connected to the master appliance and replicates its data. Slave can be stopped at any time for doing consistent backups of the SQL data or heavy analytics without interfering with the performance of the master appliance and the rest of the application.

Web access to master and slave is available via admin gateway on port 8080 and 8081.

The master, slave, web1 and web2 appliances are configured to store their log files within the root directory of the share exposed by logs. In addition, an administrator can view log files through the admin gateway.

Example property configuration (properties that are not listed should be left to their default values):

master

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

master-db.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

1

Master server (not mandatory to be 1, should be different from server_id on the slave)

rpl_mode

master

Write binary logs to have replication

slave

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

slave-db.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

2

Slave server (not mandatory to be 2, should be different from server_id on the master)

rpl_mode

slave

Connect to master

Notes:

The admin, mon and log appliances are not required for the operation of the replication.

N-tier Application with Master-Master Replication (Suitable for Load Balancing)

The following diagram shows a typical usage of the MYSQLR64 appliance in a web application in which the database is replicated to two servers in a master-master replication scenario. In this use case, the application uses both WEB and MYSQLR64 servers during operation for load-balancing. Also, in the case where one of the WEB/MYSQLR64 instances fails, the other WEB/MYSQLR64 instance can be used to prevent application downtime.

N-tier application with master-master replication (suitable for doing load balancing)

Appliances in use:

Client request arrives on the user gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers web1 and web2. web1 uses the db1 database appliance, web2 uses the db2 database appliance. db1 and db2 are connected to replicate the updates that the web servers do to the database. Each MYSQLR64 appliance uses an offset (equal to its server_id) for its auto_increment columns so that no duplicate entries occur.

Web access to db1 and db2 is available via admin gateway on port 8080 and 8081.

The db1, db2, web1 and web2 appliances are configured to store their log files within the root directory of the share exposed by logs. In addition, an administrator can view log files through the admin gateway.

Example property configuration (properties that are not listed should be left to their default values):

db1

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db1.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

1

Master server (not mandatory to be 1, should be different from server_id on the slave)

rpl_mode

master_and_slave

master and slave

db2

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db2.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

2

Master server (not mandatory to be 1, should be different from server_id on the slave)

rpl_mode

master_and_slave

master and slave

Notes:

The admin, mon and log appliances are not required for the operation of the replication.

N-tier Application with Multi-node Master-Master Replication (Suitable for Load Balancing)

The following diagram shows a typical usage of the MYSQLR64 appliance in a web application in which the database is replicated to four servers in a master-master replication scenario. In this use case, the application uses all of the WEB and MYSQLR64 servers during operation for load-balancing. Also, in the case where one of the WEB/MYSQLR64 instances fails, the other WEB/MYSQLR64 instances can be used to prevent application downtime(MYSQLR64 does not take care of failures).

N-tier application with multi-node master-master replication (suitable for doing load balancing)

Appliances in use:

Client request arrives on the user gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers web1, web2, web3 and web4. Each web server uses its own database appliance. All database appliances are connected in a circular way to replicate the updates that the web servers do to the database. Thus an update to db1 for example is replicated to db2, db3 and db4. Each MYSQLR64 appliance uses an offset (equal to its server_id) for its auto_increment columns so that no duplicate entries occur.

Web access to db1, db2, db3, db4 is available via admin gateway on port 8080, 8081, 8082 and 8083.

The db1, db2, web1 and web2 appliances are configured to store their log files within the root directory of the share exposed by logs. In addition, an administrator can view log files through the admin gateway.

Example property configuration (properties that are not listed should be left to their default values):

db1

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db1.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

1

Master server 1

rpl_mode

master_and_slave

master and slave

db2

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db2.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

2

Master server 2

rpl_mode

master_and_slave

master and slave

db3

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db3.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

3

Master server 3

rpl_mode

master_and_slave

master and slave

db4

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

db4.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

4

Master server 4

rpl_mode

master_and_slave

master and slave

Notes:

The admin, mon and log appliances are not required for the operation of the replication.

N-tier Application Running on Different Facilities (Suitable for Load Balancing and Failover)

The following diagram shows a typical usage of the MYSQLR64 appliance in a web application running in more than one facility. With this setup you can have two or more identical applications running in different facilities with the database being replicated to all applications in master-master setup. This is useful in two cases:

Master application

N-tier application running on different facilities (suitable for doing load balancing and failover)

Slave application

Slave application

Appliances in use:

Client request arrive on the user gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers web1 and web2. The web servers access the master database. The master appliance connects to the remote (slave) application, the only difference being the server_id of slave and the network setup) to replicate the database. The remote application connects to the master appliance through the vpn gateway which is configured to allow connection only from the vpn gateway of the remote application. The master and slave appliances in the two applications are running in master-master setup so they always have identical data.

Example property configuration (properties that are not listed should be left to their default values):

Web access to master and slave is available via admin gateway on port 8080.

master

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

master-db.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

1

Master server (not mandatory to be 1, should be different from server_id on the slave)

rpl_mode

master

Write binary logs to have replication

master vpn

Property name

Value

Notes

mode

server

Operate as a server.

tunnel

certificates

Using SSL certificates.

tcp_ports

3306,22

Allow ports needed by MYSQLR64.

ip_addr

master_vpn_ip

IP address of the VPN in the master application.

remote_host

slave_vpn_ip

IP address of the VPN in the slave application.

slave

Property name

Value

Notes

auto_create

1

Create the database if the volumes are empty.

error_log_filename

slave-db.error

Name of error log file that is to be stored on the logs data volume.

error_log_level

error

Error logging level

server_id

2

Slave server (not mandatory to be 2, should be different from server_id on the master)

rpl_mode

slave

Connect to master

slave vpn

Property name

Value

Notes

mode

client

Operate as a client.

tunnel

certificates

Using SSL certificates.

auth_path

"client1"

Path to the SSL certificate file.

ip_addr

slave_vpn_ip

IP address of the VPN in the slave application.

remote_host

master_vpn_ip

IP address of the VPN in the master application.

The remote application is an exact copy, the only difference is the network setup of the user, admin, and vpn appliances, connection(s) between the vpn appliance and master=/=slave, and the server_id of the master=/=slave appliance (it should be unique).

Migrate database from another appliance

If you need to migrate from MYSQLR to MYSQLR64 (and vice versa), you should not only use the volumes from the 32-bit appliance on a 64-bit one (or vice versa) as this could cause data corruption. The recommended way to do this is by dumping the database on the old appliance, transferring the dumped file to the new appliance, and then import the database into the new appliance.

The same procedure can be used to migrate a database from an older database appliance (MYSQL, MYSQL5, MYSQL64) or a mysql database not running on a CA 3Tera AppLogic appliance.

To migrate the database:

The database is now transferred and the appliance is ready for use.

Notes

Be aware of the following:

Important! When creating users for the database, verify all users are created with no restrictions on the host they connect from. For example:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

http://dev.mysql.com/doc/refman/5.0/en/index.html -- MySQL 5.0 documentation

Third Party Open Source Software Used in the Appliance

MYSQLR64 uses the following third party open source packages in addition to the 3rd party open source packages used by its base class LUX64.

Software

Version

Modified

License

Notes

aspell

0.60.3-7.1

No

LGPLv2.1

N/A

aspell-en

6.0-2.1

No

LGPLv2.1

N/A

curl

7.15.5-2

No

MIT

N/A

device-mapper-event

1.02.32-1

No

GPLv2

N/A

freetype

1.02.32-1

No

FTL

N/A

gmp

4.1.4-10.el5

No

LGPLV2.1

N/A

libidn

0.6.5-1.1

No

LGPLv2.1

N/A

libjpeg

6b-37

No

Distributable

N/A

libpng

1.2.10-7.0.2

No

zlib/libpng

N/A

lvm2

2.6.26-2.1.2.8

No

GPLv2.0

N/A

mysql

5.0.77-3.el5

No

GPL

N/A

mysql-server

5.0.77-3.el5

No

GPLv2

N/A

perl-DBD-MySQL

3.0007-2.el5

No

Artistic

N/A

perl-DBI

1.52-2.el5

No

Artistic

N/A

php-cli

5.1.6-23.el5

No

PHPv3.01

N/A

php-common

5.1.6-23.el5

No

PHPv3.01

N/A

php-gd

5.1.6-23.el5

No

PHPv3.01

N/A

php-mbstring

5.1.6-23.el5

No

PHPv3.01

N/A

php-mysql

5.1.6-23.el5

No

PHPv3.01

N/A

php-pdo

5.1.6-23.el5

No

PHPv3.01

N/A

rsync

2.6.8-3.1

No

GPLv2

N/A

samba-client

3.0.28-1.el5_2.1

No

GPLv2

N/A

samba-common

3.0.28-1.el5_2.1

No

GPLv2

N/A

sudo

1.6.8p12-10

No

ISC

N/A

lighttpd

1.4.18-1.el5.rf

No

BSD

N/A

perl-IPC-Run

0.84-1.el5.rf

No

Artistic

N/A

perl-Time-Duration

1.06-1.el5.rf

No

Artistic

N/A

phpMyAdmin

2.11.10-1

No

GPLv2

N/A

MYSQLR Troubleshooting
MYSQLR Appliance Freezes Upon Restart

Starting with MYSQLR 1.6.2, you can set/change a password for the root database account. However, the MSYQLR appliance has a few root accounts with different hostnames. When setting/changing a password, you should always use the root@% account. The root@% account is the account that appliances connected to the in terminal of MYSQLR will authenticate against. The other root accounts are used only from local users and a password should never be set for them as doing so will cause the MYSQLR appliance to fail to start.

Note: If you leave the root@localhost account without a password, it is not a security issue because this account can only be used by local users on the appliance and anyone who has access to the appliance can change the password.

Recover a MYSQLR appliance that fails to start after changing the root database password

To recover an appliance that fails to start due to changing the database root password, perform the following steps:

  1. Start the appliance or application in debug mode.
    Appliance Start Command
    comp start main.MYSQLR --debug 
    
    Application Start Command
    app start --debug 
    

    You should be able to login to the appliance a few seconds after you start the appliance. It is not necessary to wait for the appliance to time out.

  2. Login over SSH to the appliance and perform the following commands:
    mysql -p -e "update mysql.user set Password='' where User='root'" 
    mysqladmin -p flush-privileges 
    mysql -e 'update mysql.user set password=PASSWORD("NEWPASSWORD") where User="root" and Host="%"' 
    mysqladmin flush-privileges
    

Restart the appliance to verify that it boots, and that mysql connections on the 'in' terminal for user root require a password.