title: Setting up master/slave replication databases within my Vagrant box
body: <p>Currently, I am using Vagrant 1.4.3 in-conjunction with VirtualBox running Unix (Centos) for my development server (using MariaDB). </p>
  
  <p>I didn't setup the box myself (so my knowledge of setting this up is limited) I would basically like to do the following (if this is possible)...</p>
  
  <p>Please note I can appreciate that a <strong>full explanation</strong> for doing this might be out of the scope of StackOverflow.</p>
  
  <p>Essentially I would like to:</p>
  
  <ul>
  <li>Run two databases on separate ports that run in a 'master-slave'</li>
  <li>This setup needs to run within my Vagrant setup</li>
  </ul>
  
  <p>For instance, let's say 'Database 1' has the port 3306 and will be the master, and 'Database 2' has the port 4406 will be the slave. I want any changes made to Database 1 to automatically be 'pushed' to Database 2.</p>
  
  <p>I've never had to do this before.</p>
  
  <p>Any advice on the matter would be appreciated, I presume I'm not the only guy who is struggling with mysql-replication :)</p>
  
  <p>If it helps - my current vagrant file looks like the following:</p>
  
  <pre><code># -*- mode: ruby -*-
  # vi: set ft=ruby :
  
  # Config Github Settings
  github_username = "ACMEINC"
  github_repo     = "vagrant"
  github_tag      = "0.11"
  github_path     = "https://raw.github.com/#{github_username}/#{github_repo}/#{github_tag}/"
  
  # Server Configuration
  
  # Set a local private network IP address.
  # See http://en.wikipedia.org/wiki/Private_network for explanation
  # You can use the following IP ranges:
  #   10.0.0.1    - 10.255.255.254
  #   172.16.0.1  - 172.31.255.254
  #   192.168.0.1 - 192.168.255.254
  server_ip              = "192.168.30.10"
  
  server_memory          = "4096" # MB
  server_timezone        = "UTC"
  server_cpuexecutioncap = "90"
  server_cpus            = 4
  
  nginx_port            = "80"
  varnish_port          = "5580"
  
  nodejs_version        = "latest"   # By default "latest" will equal the latest stable version
  nodejs_packages       = []         # List any global NodeJS packages that you want to install
  
  ruby_version          = "2.1.1"
  
  # Lets do this
  Vagrant.configure(2) do |config|
  
  # Which box are we using?
  config.vm.box = "centos-65-x64-virtualbox-nocm"
  config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box"
  
  # Network settings
  config.vm.hostname = "vagrant"
  config.vm.network "private_network", ip: server_ip
  
  # Port forwarding
  config.vm.network "forwarded_port", guest: 35729, host: 35729 #LiveReload
  config.vm.network "forwarded_port", guest: 80, host: 8081 #HTTP
  
  # Folder sharing
  config.vm.synced_folder ".", "/vagrant"
  #    id: "core",
  #    type: "nfs",
  #    :mount_options =&gt; ['nolock,vers=3,udp,noatime']
  
  # Virtualbox settings
  config.vm.provider "virtualbox" do |vb|
  
  # Set memory
  vb.customize ["modifyvm", :id, "--memory", server_memory]
  
  # Trying to speed things up a bit http://www.adrikodde.nl/blog/2013/tips-debug-slow-vagrant-box/
  vb.customize ["modifyvm", :id, "--cpuexecutioncap", server_cpuexecutioncap]
  vb.customize ["modifyvm", :id, "--cpus", server_cpus]
  
  # Set the timesync threshold to 10 seconds, instead of the default 20 minutes.
  # If the clock gets more than 15 minutes out of sync (due to your laptop going
  # to sleep for instance, then some 3rd party services will reject requests.
  vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
  # Prevent VMs running on Ubuntu to lose internet connection
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  
  end
  
  # Configure cached packages to be shared between instances of the same base box.
  # More info on http://fgrehm.viewdocs.io/vagrant-cachier/usage
  if Vagrant.has_plugin?("vagrant-cachier")
  config.cache.scope = :box
  end
  
  # Provision Base Packages
  config.vm.provision "shell", path: "#{github_path}scripts/base.sh"
  
  # Provision PHP 5.4
  config.vm.provision "shell", path: "#{github_path}scripts/php54.sh"
  
  # Install Nodejs
  config.vm.provision "shell", path: "#{github_path}scripts/nodejs.sh", privileged: false, args: nodejs_packages.unshift(nodejs_version)
  
  # Install rbenv
  config.vm.provision "shell", path: "#{github_path}scripts/rbenv.sh", privileged: false, args: ruby_version
  
  # Provision Nginx
  config.vm.provision "shell", path: "#{github_path}scripts/nginx.sh", args: [server_ip, nginx_port]
  
  # Provision MariaDB
  config.vm.provision "shell", path: "#{github_path}scripts/mariadb55.sh"
  
  # Install AMQP
  config.vm.provision "shell", path: "#{github_path}scripts/amqp.sh"
  
  # Install APC
  config.vm.provision "shell", path: "#{github_path}scripts/apc.sh"
  
  # Install RabbitMQ
  config.vm.provision "shell", path: "#{github_path}scripts/rabbitmq.sh"
  
  # Install Supervisord
  config.vm.provision "shell", path: "#{github_path}scripts/supervisord.sh"
  
  # Install Phantomjs
  config.vm.provision "shell", path: "#{github_path}scripts/phantomjs.sh"
  
  # Install Varnish
  config.vm.provision "shell", path: "#{github_path}scripts/varnish.sh", args: [server_ip, nginx_port, varnish_port]
  
  # Install fonts
  config.vm.provision "shell", path: "#{github_path}scripts/fonts.sh"
  
  # Finalise install
  config.vm.provision "shell", path: "#{github_path}scripts/finalise.sh", privileged: false
  
  end
  </code></pre>