Table of Contents |
---|
Info |
---|
This guide is based on CentOS 6 |
Install MariaDB
Warning |
---|
Current reporting design has a problem with concurrent generation of the same report for the same enterprise, please visit Jasper concurrency for a workaround to this issue. |
Create repository
Create a file called ‘/etc/yum.repos.d/MariaDB.repo’ with the following content
Code Block | ||
---|---|---|
| ||
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos5-amd64
gpgcheck=1 |
Import repository key
Code Block |
---|
# rpm --import http://yum.mariadb.org/RPM-GPG-KEY-MariaDB |
Install MariaDB
...
Install MariaDB on replica server
Install the same MariaDB server package that Abiquo API server is using on the replica server.
On the replica server, Install your
abiquo-release package
Install MariaDB with this command
Code Block yum -y install MariaDB-server MariaDB-client
...
Configure
...
DB replication
...
Master server configuration
...
on the main DB server
On the main DB server, create the replication configuration file
Code Block cat <<EOF >/etc/my.cnf.d/replication.cnf
...
[server] log-basename=master log-bin binlog-format=row server_id=1 EOF
Restart the mysql service
Code Block
...
service mysql restart
Grant permissions to replicator user
...
Create a replicator user and grant it replication permissions by executing the query below on DB prompt. Replace
REPLICA_USER
,REPLICA_PASS,
andREPLICA_SERVER
with values for your environment.Code Block
...
grant
...
replication
...
slave
...
on *.*
...
to '
...
REPLICA_USER'@'
...
SLAVE_
...
SERVER'
...
identified
...
by '
...
REPLICA_PASS';
...
Slave server configuration
...
flush privileges;
...
Configure DB replication on replica DB server
Create the replication configuration file in Maria DB replica server.
Code Block cat <<EOF >/etc/my.cnf.d/replication.cnf
...
[server] server_id=2 EOF
Restart the
mysql
service.Code Block
...
service mysql restart
Initial replication
Get master binlog position
Flush and lock tables
On master's mysql prompt execute, is importat to keep this terminal open until replication has been completely configured.
Code Block |
---|
FLUSH TABLES WITH READ LOCK;
|
Get current binlog position
Execute on mysql prompt
Code Block |
---|
SHOW MASTER STATUS; |
This will show curren position on master's binfile, we will ned those values later:
Code Block |
---|
Warning |
To use multiple replica servers, in |
...
Perform initial replication
To perform the initial replication, get the current status of the main DB, including the file and the current position in the log, and then perform a dump of the database with the following steps
Open a new session on the main DB server at the
mysql
promptRun the following commands to get the file and current position
Code Block flush tables with read lock; show master status; +----------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +----------------------+----------+--------------+------------------+ |
...
master-bin.
...
000001 | 3712878 | | | +----------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
Copy existing database to slave server
...
Leave this session open and don’t make any changes until replication is completed.
On the MariaDB main server, open another session and dump the
kinton
andkinton_accounting
databases using--single-transaction
optionCode Block mysqldump --databases kinton kinton_accounting --routines --single-transaction > dump.sql
...
...
Configure slave replication point
Copy
...
dump.sql
from the previous step from the main DB server to the
...
replica DB server.
When the copy finishes, import it into replica DB server. If this is a new installation you may need to create the
kinton
...
databases.
Code Block mysql < dump.sql
Configure slave replication point
Once database is on the slave, we should tell mysql to start replicating the master from the frozen binlog position we set before.
On the mysql prompt execute:
...
When the import finishes, configure replica DB server replication. On the replica DB server, go to the
mysql
prompt and run the change master command belowReplace
MAIN_SERVER
,REPLICA_USER
andREPLICA_PASS
.Replace
MASTER_LOG_FILE
andMASTER_LOG_POS
from the show master status aboveCode Block change master to MASTER_HOST='
...
MAIN_SERVER', MASTER_USER='
...
REPLICA_USER', MASTER_PASSWORD='
...
REPLICA_PASS', MASTER_PORT=3306, MASTER_LOG_FILE='
...
MASTER_LOG_FILE', MASTER_LOG_POS=
...
MASTER_LOG_POS, MASTER_CONNECT_RETRY=10;
Notice we set as MASTER_USER the user we grant permission with correspondent password, and also we are using as MASTER_LOG_FILE and MASTER_LOG_POS the data we got previosly.
Start slave
Now you should start slave thread with command:
Code Block |
---|
START SLAVE; |
You can check replication status by executing on the slave:
...
For example, using the values from above of
master-bin.000001
and3712878
Code Block change master to MASTER_HOST='services.lab.example.com', MASTER_USER='abiquodb', MASTER_PASSWORD='abiquodbpassword', MASTER_PORT=3306, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=3712878, MASTER_CONNECT_RETRY=10;
On the replica server, at the
mysql
prompt, start replica DB replicationCode Block start slave;
To check replication status, run the following command on the replica DB
Code Block show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event
...
.
...
.
...
.
...
...
1 row in set (0.00 sec)
...
When
...
Slave_IO_State is
Waiting for master to send event
...
, replication is finished
Release locks by closing the first session on master DB server where locks were set and the master status was requested, and you are done!
References
https://mariadb.com/kb/en/setting-up-replication/