48
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQL in a USB Fabric: Master Slave & Switching over safely Keith Hollman Principal Sales Consultant EMEA MySQL [email protected]

MySQL Fabric in a USB

Embed Size (px)

Citation preview

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL in a USB Fabric: Master Slave & Switching over safely Keith Hollman Principal Sales Consultant EMEA MySQL [email protected]

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Objective

• Have a fully functioning MySQL instance running as a Master from a USB pen drive, that’s ejectable.

• Locally on the same server, a MySQL Slave instance, that can be the master if needed.

• Be able to promote the slave, eject the master, then synchronize the master with the slave once plugged back in again. And promote the master back to it’s original master role.

2

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Component Installation

Installing MySQL

Fabric Configuration

Safe switchover / USB eject & switchback.

3

4

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Component Installation

4

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Component Installation Basically

• A MySQL master slave replication scenario has to be configured.

• In order to do the switchover & switchback transparently, it’s best done via MySQL Fabric.

• This means that we’ll require:

– MySQL Python Connector

– MySQL Utilities (MySQL Fabric)

– 1x MySQL binary (5.7.7 RC)

• There is an installation of MySQL Server in the server as well as the python connector & the Utilities (Fabric).

• The USB contains the Masters data and config file.

5

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing the Python Connector

• Download the binaries from http://dev.mysql.com/downloads/connector/python/.

• http://dev.mysql.com/doc/connector-python/en/connector-python-installation-source.html

“Installing Connector/Python from Source on Unix and Unix-Like Systems”

shell> tar xzf mysql-connector-python-1.2.2.tar.gz

shell> cd mysql-connector-python-1.2.2

shell> sudo python setup.py install

• http://dev.mysql.com/doc/connector-python/en/connector-python-verification.html

shell> ls –l /usr/lib/python2.7/dist-packages/mysql*

6

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Utilities

• Download the source code from http://dev.mysql.com/downloads/tools/utilities/1.6.html

• http://dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-install-source.html

“1.2. Source Code”

• As they’re python scripts, we can compile from source: shell> tar zxvf mysql-utilities-1.6.1.tar.gz

shell> cd /home/khollman/ofi/_MySQL/sw/utils/mysql-utilities-1.6.1

shell> python ./setup.py build

shell> sudo python ./setup.py install

shell> mysqluc –version

MySQL Utilities mysqluc version 1.6.1

License type: GPLv2

7

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Confirming MySQL Fabric availbility

• We can test that Fabric is installed and executbale via the following: shell> mysqlfabric –version

mysqlfabric 1.6.1

• Also check that the following file exists: shell> ls -lt /etc/mysql/fabric.cfg

8

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Component Installation

Installing MySQL

Fabric Configuration

Safe switchover / USB eject & switchback.

9

4

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL

10

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Requirements

• The MySQL instances will have the datadirs y configuration files:

– Installed locally on the server: MySQL Fabric ‘state store’ repository.

– Installed on the USB: MySQL instance for the ‘unpluggable’ Master.

– Installed locally on the server: MySQL Slave instance.

• In this example, the binaries to be used wil lbe installed locally on the server, not on the USB. On the USB there’ll only be data and config file.

• Requirements depend on the environments needs, free space, usage of separate installs, versions, application flexibility, security, etc.

11

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Common Tasks

• First, let’s prepare the environment and local installation:

shell> groupadd mysql

shell> useradd -r -g mysql mysql

shell> cd /usr/local

shell> tar zxvf mysql-5.7.7-rc-linux-glibc2.5-x86_64.tar.gz

shell> ln -s /usr/local/mysql-5.7.7-rc-linux-glibc2.5-x86_64 /usr/local/mysql

shell> cd mysql

shell> mkdir mysql-files

shell> chmod 770 mysql-files

shell> chown -R mysql .

shell> chgrp -R mysql .

12

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Fabric specific tasks

• Create a my.cnf config file for the Fabric repository:

• Eg. vi /usr/local/mysql/my.cnf

• Make the repository uniquely identifiable:

– port, server-id, and the path of the datadir “/opt/mysql/fabric/63301/data”, etc.

– See Annex “Fabric my.cnf”

• We’ll be using 5.7, so the install process will NOT use mysql_install_db: shell> mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=mysql

13

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Fabric specific tasks

• And in 5.7 security has been improved, so we’ll have to find the root password and change it:

shell> tail /opt/mysql/fabric/63301/data/mysqld.err

shell> mysqladmin --defaults-file=/usr/local/mysql/my.cnf --ssl=0 -uroot –S

/opt/mysql/fabric/63301/mysql.sock –p’JHjuyTnq3=Sk’ password ‘password‘

shell> mysql_ssl_rsa_setup --defaults-file=/usr/local/mysql/my.cnf

shell> chown -R root .

shell> chown -R mysql mysql-files (data está en /opt/mysql/fabric/63301)

• Start the instance so Fabric can work: shell> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf --user=mysql &

14

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Preparing the Master

• Now let’s prepare the USB that will hold the Masters’ data and my.cnf.

• Find the UUID of the USB:

shell> ls -lrt /dev/disk/by-UUID

• Get the UUID and enter it in /etc/fstab:

UUID=0012-D687 /media/usb_externo vfat

users,rw,noauto,exec,nofail,mand,suid 0 0

• And mount it as the o.s. user ‘mysql’:

shell> mount /media/usb_externo

15

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Preparing the Master I

shell> cd /media/external_usb/

shell> mkdir mysql

shell> cp /usr/local/mysql/my.cnf /media/external_usb/mysql/my3306.cnf

shell> ln -s /media/usb_externo/mysql/my3306.cnf

/usr/local/mysql/my3306.cnf

• Make sure the paths in the config file reflect the USB’s location: shell> vi my3306.cnf

:1,$ s!/opt/mysql/fabric/63301!/media/external_usb/mysql!g

• And that the socket file is located on the local server storage, and not on the USB pen drive.

– See Annex “my3306.cnf”

16

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Preparing the Master II

• We initialize the Master environment: shell> mysqld --defaults-file=/usr/local/mysql/my3306.cnf --initialize --

user=mysql

shell> tail /media/usb_externo/mysql/data/mysqld.err

shell> mysqladmin -S /tmp/mysql3306.sock -uroot –p’FjfLxwNfh0_t’ password

‘password‘

• Complete the secure installation for the Master:

shell> mysql_ssl_rsa_setup --defaults-file=/usr/local/mysql/my3306.cnf

• Start the Master instance:

shell> mysqld_safe --defaults-file=/usr/local/mysql/my3306.cnf --

user=mysql &

17

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Preparing the Slave

• Now we create the Slave environment: shell> cd /usr/local/mysql

shell> cp my.cnf my3307.cnf

• Make sure again that the config file reflects the paths we want for the slave:

shell> vi my3307.cnf (Annex my3307.cnf) :1,$ s!/opt/mysql/fabric/63301!/opt/mysql/fabric/3307!g

• Initialize the installation: shell> mysqld --defaults-file=/usr/local/mysql/my3307.cnf --initialize --user=mysql

tail /opt/mysql/fabric/3307/data/mysqld.err

shell> mysql_ssl_rsa_setup --defaults-file=/usr/local/mysql/my3307.cnf

shell> mysqld_safe --defaults-file=/usr/local/mysql/my3307.cnf --user=mysql &

shell> mysqladmin -S /tmp/mysql3306.sock -uroot -p'orL&qYnT26A!' password

‘password'

18

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Installing MySQL Just a reminder

• Startup: mysqld_safe --defaults-file=/usr/local/mysql/my.cnf --user=mysql &

mysqld_safe --defaults-file=/usr/local/mysql/my3306.cnf --user=mysql &

mysqld_safe --defaults-file=/usr/local/mysql/my3307.cnf --user=mysql &

• Shutdown: mysqladmin -S /tmp/mysql3306.sock -uroot -p shutdown

mysqladmin -S /opt/mysql/fabric/3307/mysql.sock -uroot -p shutdown

mysqladmin -S /opt/mysql/fabric/63301/mysql.sock -uroot -p shutdown

• mysql CLI mysql –S /tmp/mysql3306.sock –uroot

mysql –S /opt/mysql/fabric/3307/mysql.sock –uroot

mysql –S /opt/mysql/fabric/63301/mysql.sock -uroot

19

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Component Installation

Installing MySQL

Fabric Configuration

Safe switchover / USB eject & switchback.

20

4

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 21

Fabric Configuration

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Users

• We’ll need to give permission to root to be able to connect from the other instances, to be executed on all 3 (for this example):

mysql> GRANT ALL ON *.* TO root@'%' identified by ‘password‘;

– Ignore warnings of the type "Warning (Code 1287): Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER

statement."

• Now to create the user that the Fabric processes will need, again, on all 3 instances, and for this example, keeping it easy yet unsecure:

mysql> GRANT ALL ON *.* TO fabric@'%' identified by 'fabric‘;

Recommended permissions: http://dev.mysql.com/doc/mysql-fabric/1.6/en/fabric-create-user.html

22

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Users I

• Make sure we can access: shell> mysql -S /opt/mysql/fabric/63301/mysql.sock -ufabric –pfabric

• Quick change in fabric.cfg and we adjust the port (63301) and passwords: shell> vi /etc/mysql/fabric.cfg

• Now to start the logical configuration from within Fabric: shell> mysqlfabric --config=/etc/mysql/fabric.cfg manage setup

[INFO] 1437133916.793842 - MainThread - Initializing persister: user (fabric), server (localhost:63301), database

(fabric).

Finishing initial setup

=======================

Password for admin user is not yet set.

Password for admin/xmlrpc:

23

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Users II

• You have to enter the password twice for the ‘admin’ user, for the xmlrpc protocol.

• Afterwards, you can configure the config file /etc/mysql/fabric.cfg to make admin tasks easier. If not, Fabric will constantly ask us for the admin password each time.

• Up until this point, all that has been done is to create the repository, in which the ‘fabric’ schema holds the tables that contain the configuration of the ‘backing store’.

shell> mysql -S /opt/mysql/fabric/63301/mysql.sock -ufabric -pfabric fabric

mysql> show tables;

24

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Logical topology

• Let’s start the Fabric process in ‘daemon’ mode: shell> mysqlfabric manage start –daemonize

• Creating the logic. “mygroup” is the name of the group: shell> mysqlfabric group create mygroup

Password for admin:

Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e

Time-To-Live: 1

uuid finished success result

------------------------------------ -------- ------- ------

a46e3609-baa2-4ef4-a0d3-7d364b2a102f 1 1 1

state success when description

----- ------- ------------- ------------------------------------------------------------------

3 2 1437134826.51 Triggered by <mysql.fabric.events.Event object at 0x7f7d970ac710>.

4 2 1437134826.51 Executing action (_create_group).

5 2 1437134826.52 Executed action (_create_group).

25

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Logical topology I

• Check the group has been created ok: shell> mysqlfabric group lookup_groups

• >Add the 2 servers to the group: shell> mysqlfabric group add mygroup 127.0.0.1:3306

shell> mysqlfabric group add mygroup 127.0.0.1:3307

• Checking: shell> mysqlfabric group lookup_servers mygroup

• Make note of the “server_uuid”. As that’s what we’ll need to promote the Master:

mysqlfabric group promote mygroup --slave_id 247608f4-2be8-11e5-b6a5-7c7a91bc3176

26

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Logical topology II

• Checking again: shell> mysqlfabric group lookup_servers mygroup

server_uuid address status mode weight

------------------------------------ -------------- --------- ---------- ------

247608f4-2be8-11e5-b6a5-7c7a91bc3176 127.0.0.1:3306 PRIMARY READ_WRITE 1.0

fdd78d44-2bfb-11e5-b8d1-fcab64f39719 127.0.0.1:3307 SECONDARY READ_ONLY 1.0

• Now we have the configuration complete, we just need to activate the Fabric monitoring::

shell> mysqlfabric group activate mygroup

27

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Fabric Configuration Logical topology III

• Lets make sure replication is working. Running this on the Master: mysql -uroot -p -P3306 -h127.0.0.1

create database ant; create table master_info (id int(5), descr varchar(30));

insert into master_info values (1,'algo de descripcion'),(2,'otra descripcion');

select * from master_info;

• And we observe the slave: shell> mysql -uroot -p -P3307 -h127.0.0.1 -e "use ant; select * from

master_info;"

• As we’ve configured the 2 instances and promoted one, replication has been activated internally.

• Now let’s see what happens when we eject the USB; shutdown the master and promote the slave.

28

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Agenda

1

2

3

Component Installation

Installing MySQL

Fabric Configuration

Safe switchover / USB eject & switchback.

29

4

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Safe switchover / USB eject & switchback

30

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Safe Switchover Ejecting the USB

• As the key data is in the Master, we want to eject the USB with the data one way or another.

• In this example, we’ll do a controlled shutdown, where if we did an uncontrolled shutdown, Fabric would act in the same way.

• As we know we’re going to eject the USB, we first promote the Slave: shell> mysqlfabric group promote mygroup --slave_id=fdd78d44-2bfb-11e5-b8d1-

fcab64f39719

server_uuid address status mode weight

------------------------------------ -------------- --------- ---------- ------

247608f4-2be8-11e5-b6a5-7c7a91bc3176 127.0.0.1:3306 SECONDARY READ_ONLY 1.0

fdd78d44-2bfb-11e5-b8d1-fcab64f39719 127.0.0.1:3307 PRIMARY READ_WRITE 1.0

31

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Safe Switchover Ejecting the USB I

• Now we can shut down the instance on the USB: shell> mysqladmin -S /tmp/mysql3306.sock -uroot -p shutdown

• The status is: shell> mysqlfabric group health mygroup

uuid is_alive status is_not_running is_not_configured io_not_running

sql_not_running io_error sql_error

------------------------------------ -------- ------- -------------- ----------------- -------------- --

------------- -------- ---------

247608f4-2be8-11e5-b6a5-7c7a91bc3176 0 FAULTY 0 0 0

0 False False

fdd78d44-2bfb-11e5-b8d1-fcab64f39719 1 PRIMARY 0 0 0

0 False False

• Now we can eject the USB with the Master datadir and my3306.cnf without any problems.

32

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Safe Switchover Switchback – promoting the old Master

• Before bringing the old Master back online, let’s insert some data into the new master (-P3307 / UUID...9719):

mysql> insert into ant.master_info values (3,'some more info');

• Check: mysql -uroot -p -P3307 -h127.0.0.1 -e "use ant; select * from master_info;"

• Start the old master: mysqld_safe --defaults-file=/usr/local/mysql/my3306.cnf --user=mysql &

• Even though Fabric considers the old Master “FAULTY”, as it was a slave before we unplugged, and as soon as it starts, replication continues and keeps synchronizing:

mysql -uroot -p -P3306 -h127.0.0.1 -e “select * from ant.master_info;"

33

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Safe Switchover Switchback – promoting the old Master I

• Changing the old masters’ status in Fabric: mysqlfabric server set_status 247608f4-2be8-11e5-b6a5-7c7a91bc3176 spare

• Fabric includes the instance as SPARE as it detects everything is ok with the environment. Now we can change it to SECONDARY:

mysqlfabric server set_status 247608f4-2be8-11e5-b6a5-7c7a91bc3176 secondary

• Make sure replication continues working fine: mysql -uroot -p -P3307 -h127.0.0.1 -e "insert into ant.master_info values

(4,'additional');“

mysql -uroot -p -P3306 -h127.0.0.1 -e “select * from ant.master_info;"

• And now we promote the old Master back again: mysqlfabric group promote mygroup --slave_id=247608f4-2be8-11e5-b6a5-7c7a91bc3176

34

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Safe Switchover Switchback – promoting the old Master II

• Let’s check the overall status again: mysqlfabric group health mygroup

uuid is_alive status is_not_running is_not_configured io_not_running sql_not_running io_error

sql_error

------------------------------------ -------- --------- -------------- ----------------- --------------

--------------- -------- ---------

247608f4-2be8-11e5-b6a5-7c7a91bc3176 1 PRIMARY 0 0 0

0 False False

fdd78d44-2bfb-11e5-b8d1-fcab64f39719 1 SECONDARY 0 0 0

0 False False

35

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Starting and stopping a pre-configured environment

36

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Starting the pre-configured environment

• Just in case there’s any doubt, before we start, let’s make sure everything stopped correctly:

– Check the log for Fabric: /var/log/fabric.log

– Check the logs for each of the MySQL instances: • Master: /media/usb_externo/mysql/mysqld_safe.log

• Slave: /opt/mysql/fabric/3307/mysqld_safe.log

• First start the Fabric instance: mysqld_safe --defaults-file=/usr/local/mysql/my.cnf --user=mysql &

• Start Fabric monitoring: mysqlfabric manage start --daemonize

37

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Starting the pre-configured environment

• Then startup the Master & Slave instances: mysqld_safe --defaults-file=/usr/local/mysql/my3306.cnf --user=mysql &

mysqld_safe --defaults-file=/usr/local/mysql/my3307.cnf --user=mysql &

• Check the logs:

vi + /var/log/fabric.log

• Check the replication: mysqlfabric group health mygroup uuid is_alive status is_not_running is_not_configured io_not_running sql_not_running io_error

sql_error

------------------------------------ -------- --------- -------------- ----------------- --------------

--------------- -------- ---------

247608f4-2be8-11e5-b6a5-7c7a91bc3176 1 PRIMARY 0 0 0

0 False False

fdd78d44-2bfb-11e5-b8d1-fcab64f39719 1 SECONDARY 0 0 0

0 False False

38

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Controlled shutdown

• Depending on how we stop the environment, and for what reasons, we can shutdown in various different ways. If we stop Fabric first, the shutdown of the 2 instances is not registered within Fabric. If we stop the instances first, upon the following startup, Fabric will require us to change the status of each before monitoring can begin.

• Stop both Master and Slave instances as usual:

mysqladmin -S /tmp/mysql3306.sock -uroot -p shutdown

mysqladmin -S /opt/mysql/fabric/3307/mysql.sock -uroot -p shutdown

39

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Controlled shutdown

• Fabric: mysqlfabric manage ping

Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e

Time-To-Live: 1

mysqlfabric manage stop

Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e

Time-To-Live: 1

mysqlfabric manage ping

<urlopen error [Errno 111] Connection refused>

• Once the Fabric process is halted, we can stop the repository instance: mysqladmin -S /opt/mysql/fabric/63301/mysql.sock -uroot -p shutdown

40

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Annex

41

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Annex: Fabric my.cnf 63301 [mysqld_safe]

log-error =/opt/mysql/fabric/63301/mysqld_safe.log

lc-messages-dir =/usr/local/mysql/share/english/errmsg.sys

[mysqld]

performance-schema-instrument ='%=ON'

server-id =63301

port =63301

pid-file =/opt/mysql/fabric/63301/khollman-es_63301.pid

socket =/opt/mysql/fabric/63301/mysql.sock

datadir =/opt/mysql/fabric/63301/data

log-error =/opt/mysql/fabric/63301/data/mysqld.err

general-log =TRUE

innodb_buffer_pool_size =40M

innodb_file_per_table =1

innodb_log_buffer_size =8M

innodb_log_file_size =12M

innodb_flush_log_at_trx_commit =2

innodb_data_file_path =ibdata1:12M;ibdata2:12M:autoextend

innodb_open_files =150

table_open_cache =80

open_files_limit =300

query_cache_size =0

max_connections =100

user =mysql

read_buffer_size =2M

sort_buffer_size =2M

42

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Annex: Fabric my3306.cnf 3306 [mysqld_safe]

log-error =/media/usb_externo/mysql/mysqld_safe.log

lc-messages-dir =/usr/local/mysql/share/english/errmsg.sys

[mysqld]

performance-schema-instrument ='%=ON'

server-id =3306

port =3306

pid-file =/media/usb_externo/mysql/khollman-es_3306.pid

socket =/tmp/mysql3306.sock

datadir =/media/usb_externo/mysql/data

log-error =/media/usb_externo/mysql/data/mysqld.err

general-log =TRUE

innodb_buffer_pool_size =40M

innodb_file_per_table =1

innodb_log_buffer_size =8M

innodb_log_file_size =12M

innodb_flush_log_at_trx_commit =2

innodb_data_file_path =ibdata1:12M;ibdata2:12M:autoextend

innodb_open_files =150

table_open_cache =80

open_files_limit =300

query_cache_size =0

max_connections =100

user =mysql

read_buffer_size =2M

sort_buffer_size =2M

# Replication

log-bin =fabric3306

binlog-row-image =minimal

binlog-rows-query-log-events =1

log-slave-updates =TRUE

43

gtid-mode =ON

enforce-gtid-consistency =TRUE

master-info-repository =TABLE

relay-log-info-repository =TABLE

sync_binlog =1

sync_master_info =1

slave-parallel-workers =2

slave_transaction_retries =0

binlog-checksum =CRC32

master-verify-checksum =1

slave-sql-verify-checksum =1

binlog-rows-query-log-events =1

binlog_format =ROW

report-host =khollman-es

report-port =3306

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Annex: Fabric my3307.cnf 3307 [mysqld_safe]

log-error =/opt/mysql/fabric/3307/mysqld_safe.log

lc-messages-dir =/usr/local/mysql/share/english/errmsg.sys

[mysqld]

performance-schema-instrument ='%=ON'

server-id =3307

port =3307

pid-file =/opt/mysql/fabric/3307/khollman-es_3307.pid

socket =/opt/mysql/fabric/3307/mysql.sock

datadir =/opt/mysql/fabric/3307/data

log-error =/opt/mysql/fabric/3307/data/mysqld.err

general-log =TRUE

innodb_buffer_pool_size =40M

innodb_file_per_table =1

innodb_log_buffer_size =8M

innodb_log_file_size =12M

innodb_flush_log_at_trx_commit =2

innodb_data_file_path =ibdata1:12M;ibdata2:12M:autoextend

innodb_open_files =150

table_open_cache =80

open_files_limit =300

query_cache_size =0

max_connections =100

user =mysql

read_buffer_size =2M

sort_buffer_size =2M

# Replication

log-bin =fabric3307

binlog-row-image =minimal

binlog-rows-query-log-events =1

log-slave-updates =TRUE

44

gtid-mode =ON

enforce-gtid-consistency =TRUE

master-info-repository =TABLE

relay-log-info-repository =TABLE

sync_binlog =1

sync_master_info =1

slave-parallel-workers =2

slave_transaction_retries =0

binlog-checksum =CRC32

master-verify-checksum =1

slave-sql-verify-checksum =1

binlog-rows-query-log-events =1

binlog_format =ROW

report-host =khollman-es

report-port =3307

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Questions?

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Next Steps

46

Learn more:

• http://www.mysql.com/products/enterprise/fabric.html

• http://dev.mysql.com/doc/mysql-utilities/1.6/en/fabric.html

Try me:

• http://dev.mysql.com/downloads/utilities/

Let us know what you think:

• http://forums.mysql.com/list.php?144

[email protected]

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Additional Resources

• MySQL High-Availability

– http://mysqlhighavailability.com

• Mats Kindahl

– http://mysqlmusings.blogspot.com

• Alfranio Correia – http://alfranio-distributed.blogspot.com

• Narayanan Venkateswaran

– http://vnwrites.blogspot.com

47