You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.5 KiB
76 lines
2.5 KiB
5 months ago
|
|
||
|
##############################################################################
|
||
|
# WL#4677 Unique Server Ids for Replication Topology (UUIDs) #
|
||
|
#
|
||
|
# Each server has a UUID generated by server itself. It is stored in auto.cnf
|
||
|
# in @@DATADIR directory.
|
||
|
#
|
||
|
# @@SERVER_UUID is a readonly system variable, it is initialized as the
|
||
|
# server's UUID when starting. Users can get the server's UUID from
|
||
|
# @@SERVER_UUID.
|
||
|
#
|
||
|
# This test case tests whether the server's UUID can be generated, stored,
|
||
|
# initialized correctly.
|
||
|
##############################################################################
|
||
|
|
||
|
CALL mtr.add_suppression("Master's UUID has changed, its old UUID is");
|
||
|
|
||
|
--let $uuid_file= auto.cnf
|
||
|
--let $original_server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
|
||
|
|
||
|
--let $datadir= query_get_value(SELECT @@DATADIR, @@DATADIR, 1)
|
||
|
--copy_file $datadir/$uuid_file $datadir/original_$uuid_file
|
||
|
|
||
|
--echo
|
||
|
--echo # Case 1:
|
||
|
--echo # @@SERVER_UUID is readonly.
|
||
|
--echo -----------------------------------------------------------------------------
|
||
|
--error 1238
|
||
|
SET GLOBAL SERVER_UUID= UUID();
|
||
|
|
||
|
--echo
|
||
|
--echo # Case 2:
|
||
|
--echo # If the file does not exists, mysqld generates it automatically.
|
||
|
--echo -----------------------------------------------------------------------------
|
||
|
--remove_file $datadir/$uuid_file
|
||
|
--source include/restart_mysqld.inc
|
||
|
--let $server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
|
||
|
if (`SELECT '$server_uuid' = '' OR '$server_uuid' = 'NULL'`)
|
||
|
{
|
||
|
--die server's UUID is null
|
||
|
}
|
||
|
|
||
|
--echo
|
||
|
--echo # Case 3:
|
||
|
--echo # If there is no UUID in the file, mysqld generates it automatically.
|
||
|
--echo -----------------------------------------------------------------------------
|
||
|
|
||
|
--remove_file $datadir/$uuid_file
|
||
|
# There is a blank line in the file
|
||
|
--write_file $datadir/$uuid_file
|
||
|
[auto]
|
||
|
EOF
|
||
|
--source include/restart_mysqld.inc
|
||
|
|
||
|
--let $server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
|
||
|
if (`SELECT '$server_uuid' = '' OR '$server_uuid' = 'NULL'`)
|
||
|
{
|
||
|
--die server's UUID is null
|
||
|
}
|
||
|
|
||
|
--echo
|
||
|
--echo # Case 4:
|
||
|
--echo # If there is a UUID in the file, it will be loaded into SERVER_UUID.
|
||
|
--echo -----------------------------------------------------------------------------
|
||
|
|
||
|
--remove_file $datadir/$uuid_file
|
||
|
--move_file $datadir/original_$uuid_file $datadir/$uuid_file
|
||
|
--source include/restart_mysqld.inc
|
||
|
|
||
|
--let $server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
|
||
|
if ($server_uuid != $original_server_uuid)
|
||
|
{
|
||
|
--echo $server_uuid != $original_server_uuid
|
||
|
--die wrong server_uuid
|
||
|
}
|