Skip to content
This repository has been archived by the owner on Mar 5, 2021. It is now read-only.

ekeih/setup-mysql-slave

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

This fixes the regex:
```
["sed: -e expression #1, char 1: unknown command: `\"'"],
```

And:
```
"msg": "dest is an existing directory, use a trailing slash if you want to
fetch src into that directory"}
```
c84bfe8

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

Setup MySQL replication

This playbook will setup a MySQL replication by doing the following steps:

  1. Backup the current databases from the MySQL master
  2. Compress the backup
  3. Download the backup
  4. Upload and uncompress the backup to the MySQL slave
  5. Stop MySQL on the slave
  6. Delete all old MySQL databases from the MySQL slave
  7. Import the backup
  8. Start MySQL on the slave
  9. Configute the MySQL slave process
  10. Start the MySQL slave process

The slave will use SSL to connect to the master. So you have to make sure that your master has a valid SSL certificate that can be validated by a CA from /etc/ssl/certs on the slave. (Checkout Letsencrypt)

WARNING: This playbook will delete all previous data from the MySQL slave!

Requirements

  • A working MySQL installation on the master with valid SSL setup.
  • A replication User on the master. (GRANT REPLICATION SLAVE ON *.* TO 'SOMEIP'@'SLAVEHOST';) You may also want to use REQUIRE SSL.
  • innobackupex to backup the master.
  • A working MySQL installation on the slave.

Options

Option Default Description
master The MySQL master from your Ansible inventory.
slave The MySQL slave from your Ansible inventory. All MySQL data from this host will be deleted.
mysql_replication_master master The Hostname or IP that will be set as MASTER_HOST in MySQL.
mysql_replication_user MASTER_USER in MySQL.
mysql_replication_password MASTER_PASSWORD in MySQL.

Example

Assuming that you defined mysql_replication_user and mysql_replication_password in your host_vars you can simply run:

ansible-playbook main.yml -e 'master=master.exmaple.com slave=slave.example.com'

About

An Ansible playbook to setup MySQL replication

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published