Sha256: e03455dfdefbeb49ea14f8f5bb6d226da19f291bccb80dcc897d4d1d216b0f33

Contents?: true

Size: 1.81 KB

Versions: 4

Compression:

Stored size: 1.81 KB

Contents

#!/usr/bin/env ruby

require "mysql_isolated_server"

threads = []
threads << Thread.new do
  $mysql_master = MysqlIsolatedServer.new(allow_output: false)
  $mysql_master.boot!

  puts "mysql master booted on port #{$mysql_master.port} -- access with mysql -uroot -h127.0.0.1 --port=#{$mysql_master.port} mysql"
end

threads << Thread.new do
  $mysql_slave = MysqlIsolatedServer.new
  $mysql_slave.boot!

  puts "mysql slave booted on port #{$mysql_slave.port} -- access with mysql -uroot -h127.0.0.1 --port=#{$mysql_slave.port} mysql"
end

threads << Thread.new do
  $mysql_slave_2 = MysqlIsolatedServer.new
  $mysql_slave_2.boot!

  puts "mysql chained slave booted on port #{$mysql_slave_2.port} -- access with mysql -uroot -h127.0.0.1 --port=#{$mysql_slave_2.port} mysql"
end

threads.each(&:join)

$mysql_master.connection.query("CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_password=''")
$mysql_slave.make_slave_of($mysql_master)
$mysql_slave_2.make_slave_of($mysql_slave)

$mysql_master.connection.query("GRANT ALL ON flexmaster_test.* to flex@localhost")
$mysql_master.connection.query("CREATE DATABASE flexmaster_test")
$mysql_master.connection.query("CREATE TABLE flexmaster_test.users (id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(20))")
$mysql_master.connection.query("INSERT INTO flexmaster_test.users set name='foo'")
$mysql_slave.set_rw(false)
$mysql_slave_2.set_rw(false)

# let replication for the grants and such flow down.  bleh.
repl_sync = false
while !repl_sync
  repl_sync = [[$mysql_master, $mysql_slave], [$mysql_slave, $mysql_slave_2]].all? do |master, slave|
    master_pos = master.connection.query("show master status").to_a.first["Position"]
    slave.connection.query("show slave status").to_a.first["Exec_Master_Log_Pos"] == master_pos
  end
  sleep 1
end

sleep if __FILE__ == $0

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ar_mysql_flexmaster-1.0.1 test/boot_mysql_env.rb
ar_mysql_flexmaster-1.0.0 test/boot_mysql_env.rb
ar_mysql_flexmaster-0.6.0 test/boot_mysql_env.rb
ar_mysql_flexmaster-0.5.0 test/boot_mysql_env.rb