diff --git a/trove/guestagent/strategies/replication/mysql_binlog.py b/trove/guestagent/strategies/replication/mysql_binlog.py index c51fbf27a4..604b516e52 100644 --- a/trove/guestagent/strategies/replication/mysql_binlog.py +++ b/trove/guestagent/strategies/replication/mysql_binlog.py @@ -39,6 +39,7 @@ SLAVE_CONFIG = """ [mysqld] log_bin = /var/lib/mysql/mysql-bin.log relay_log = /var/lib/mysql/mysql-relay-bin.log +read_only = true """ REPL_BACKUP_NAMESPACE = 'trove.guestagent.strategies.backup.mysql_impl' diff --git a/trove/tests/api/replication.py b/trove/tests/api/replication.py index 05a76c350d..e60a29c7f0 100644 --- a/trove/tests/api/replication.py +++ b/trove/tests/api/replication.py @@ -116,6 +116,13 @@ class VerifySlave(object): poll_until(slave_is_running()) @test(depends_on=[test_correctly_started_replication]) + def test_slave_is_read_only(self): + cmd = "mysql -BNq -e \\\'select @@read_only\\\'" + server = create_server_connection(slave_instance.id) + stdout, stderr = server.execute(cmd) + assert_equal(stdout, "1\n") + + @test(depends_on=[test_slave_is_read_only]) def test_create_db_on_master(self): databases = [{'name': slave_instance.replicated_db}] instance_info.dbaas.databases.create(instance_info.id, databases) @@ -174,6 +181,16 @@ class DetachReplica(object): poll_until(slave_is_running(False)) + @test(depends_on=[test_detach_replica]) + def test_slave_is_not_read_only(self): + if CONFIG.fake_mode: + raise SkipTest("Test not_read_only not supported in fake mode") + + cmd = "mysql -BNq -e \\\'select @@read_only\\\'" + server = create_server_connection(slave_instance.id) + stdout, stderr = server.execute(cmd) + assert_equal(stdout, "0\n") + @test(groups=[GROUP], depends_on=[WaitForCreateSlaveToFinish],