mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-34494 Add server_uid global variable and add it to error log at startup
The feedback plugin server_uid variable and the calculate_server_uid() function is moved from feedback/utils.cc to sql/mysqld.cc server_uid is added as a global variable (shown in 'show variables') and is written to the error log on server startup together with server version and server commit id.
This commit is contained in:
@ -27,7 +27,7 @@ perl;
|
|||||||
large-files-support lower-case-file-system system-time-zone
|
large-files-support lower-case-file-system system-time-zone
|
||||||
collation-server character-set-server log-tc-size table-cache
|
collation-server character-set-server log-tc-size table-cache
|
||||||
table-open-cache table-open-cache-instances max-connections
|
table-open-cache table-open-cache-instances max-connections
|
||||||
tls-version version.*/;
|
server-uid tls-version version.*/;
|
||||||
|
|
||||||
# Plugins which may or may not be there:
|
# Plugins which may or may not be there:
|
||||||
@plugins=qw/innodb archive blackhole federated partition s3
|
@plugins=qw/innodb archive blackhole federated partition s3
|
||||||
|
@ -3072,6 +3072,16 @@ NUMERIC_BLOCK_SIZE 1
|
|||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
|
VARIABLE_NAME SERVER_UID
|
||||||
|
VARIABLE_SCOPE GLOBAL
|
||||||
|
VARIABLE_TYPE VARCHAR
|
||||||
|
VARIABLE_COMMENT Automatically calculated server unique id hash
|
||||||
|
NUMERIC_MIN_VALUE NULL
|
||||||
|
NUMERIC_MAX_VALUE NULL
|
||||||
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
ENUM_VALUE_LIST NULL
|
||||||
|
READ_ONLY YES
|
||||||
|
COMMAND_LINE_ARGUMENT NULL
|
||||||
VARIABLE_NAME SKIP_EXTERNAL_LOCKING
|
VARIABLE_NAME SKIP_EXTERNAL_LOCKING
|
||||||
VARIABLE_SCOPE GLOBAL
|
VARIABLE_SCOPE GLOBAL
|
||||||
VARIABLE_TYPE BOOLEAN
|
VARIABLE_TYPE BOOLEAN
|
||||||
|
@ -3522,6 +3522,16 @@ NUMERIC_BLOCK_SIZE 1
|
|||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
|
VARIABLE_NAME SERVER_UID
|
||||||
|
VARIABLE_SCOPE GLOBAL
|
||||||
|
VARIABLE_TYPE VARCHAR
|
||||||
|
VARIABLE_COMMENT Automatically calculated server unique id hash
|
||||||
|
NUMERIC_MIN_VALUE NULL
|
||||||
|
NUMERIC_MAX_VALUE NULL
|
||||||
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
ENUM_VALUE_LIST NULL
|
||||||
|
READ_ONLY YES
|
||||||
|
COMMAND_LINE_ARGUMENT NULL
|
||||||
VARIABLE_NAME SESSION_TRACK_SCHEMA
|
VARIABLE_NAME SESSION_TRACK_SCHEMA
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BOOLEAN
|
VARIABLE_TYPE BOOLEAN
|
||||||
|
@ -26,10 +26,8 @@ namespace feedback {
|
|||||||
ulong debug_startup_interval, debug_first_interval, debug_interval;
|
ulong debug_startup_interval, debug_first_interval, debug_interval;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char server_uid_buf[SERVER_UID_SIZE+1]; ///< server uid will be written here
|
|
||||||
|
|
||||||
/* backing store for system variables */
|
/* backing store for system variables */
|
||||||
static char *server_uid= server_uid_buf, *url, *http_proxy;
|
static char *url, *http_proxy;
|
||||||
char *user_info;
|
char *user_info;
|
||||||
ulong send_timeout, send_retry_wait;
|
ulong send_timeout, send_retry_wait;
|
||||||
|
|
||||||
@ -254,9 +252,6 @@ static int init(void *p)
|
|||||||
PSI_register(cond);
|
PSI_register(cond);
|
||||||
PSI_register(thread);
|
PSI_register(thread);
|
||||||
|
|
||||||
if (calculate_server_uid(server_uid_buf))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
prepare_linux_info();
|
prepare_linux_info();
|
||||||
|
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
@ -362,9 +357,6 @@ static int free(void *p)
|
|||||||
#define DEFAULT_PROTO "http://"
|
#define DEFAULT_PROTO "http://"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static MYSQL_SYSVAR_STR(server_uid, server_uid,
|
|
||||||
PLUGIN_VAR_READONLY | PLUGIN_VAR_NOCMDOPT,
|
|
||||||
"Automatically calculated server unique id hash.", NULL, NULL, 0);
|
|
||||||
static MYSQL_SYSVAR_STR(user_info, user_info,
|
static MYSQL_SYSVAR_STR(user_info, user_info,
|
||||||
PLUGIN_VAR_READONLY | PLUGIN_VAR_RQCMDARG,
|
PLUGIN_VAR_READONLY | PLUGIN_VAR_RQCMDARG,
|
||||||
"User specified string that will be included in the feedback report.",
|
"User specified string that will be included in the feedback report.",
|
||||||
@ -395,7 +387,6 @@ static MYSQL_SYSVAR_ULONG(debug_interval, debug_interval,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct st_mysql_sys_var* settings[] = {
|
static struct st_mysql_sys_var* settings[] = {
|
||||||
MYSQL_SYSVAR(server_uid),
|
|
||||||
MYSQL_SYSVAR(user_info),
|
MYSQL_SYSVAR(user_info),
|
||||||
MYSQL_SYSVAR(url),
|
MYSQL_SYSVAR(url),
|
||||||
MYSQL_SYSVAR(send_timeout),
|
MYSQL_SYSVAR(send_timeout),
|
||||||
|
@ -25,8 +25,7 @@ int fill_misc_data(THD *thd, TABLE_LIST *tables);
|
|||||||
int fill_linux_info(THD *thd, TABLE_LIST *tables);
|
int fill_linux_info(THD *thd, TABLE_LIST *tables);
|
||||||
int fill_collation_statistics(THD *thd, TABLE_LIST *tables);
|
int fill_collation_statistics(THD *thd, TABLE_LIST *tables);
|
||||||
|
|
||||||
static const int SERVER_UID_SIZE= 29;
|
extern char *user_info;
|
||||||
extern char server_uid_buf[SERVER_UID_SIZE+1], *user_info;
|
|
||||||
int calculate_server_uid(char *);
|
int calculate_server_uid(char *);
|
||||||
int prepare_linux_info();
|
int prepare_linux_info();
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ static void send_report(const char *when)
|
|||||||
str.length(0);
|
str.length(0);
|
||||||
str.append(STRING_WITH_LEN("FEEDBACK_SERVER_UID"));
|
str.append(STRING_WITH_LEN("FEEDBACK_SERVER_UID"));
|
||||||
str.append('\t');
|
str.append('\t');
|
||||||
str.append(server_uid_buf);
|
str.append(server_uid);
|
||||||
str.append('\n');
|
str.append('\n');
|
||||||
str.append(STRING_WITH_LEN("FEEDBACK_WHEN"));
|
str.append(STRING_WITH_LEN("FEEDBACK_WHEN"));
|
||||||
str.append('\t');
|
str.append('\t');
|
||||||
|
@ -412,31 +412,4 @@ int fill_collation_statistics(THD *thd, TABLE_LIST *tables)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
calculates the server unique identifier
|
|
||||||
|
|
||||||
UID is a base64 encoded SHA1 hash of the MAC address of one of
|
|
||||||
the interfaces, and the tcp port that the server is listening on
|
|
||||||
*/
|
|
||||||
int calculate_server_uid(char *dest)
|
|
||||||
{
|
|
||||||
uchar rawbuf[2 + 6];
|
|
||||||
uchar shabuf[MY_SHA1_HASH_SIZE];
|
|
||||||
|
|
||||||
int2store(rawbuf, mysqld_port);
|
|
||||||
if (my_gethwaddr(rawbuf + 2))
|
|
||||||
{
|
|
||||||
sql_print_error("feedback plugin: failed to retrieve the MAC address");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
my_sha1((uint8*) shabuf, (char*) rawbuf, sizeof(rawbuf));
|
|
||||||
|
|
||||||
assert(my_base64_needed_encoded_length(sizeof(shabuf)) <= SERVER_UID_SIZE);
|
|
||||||
my_base64_encode(shabuf, sizeof(shabuf), dest);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace feedback
|
} // namespace feedback
|
||||||
|
@ -352,6 +352,8 @@ LEX_STRING opt_init_connect, opt_init_slave;
|
|||||||
static DYNAMIC_ARRAY all_options;
|
static DYNAMIC_ARRAY all_options;
|
||||||
static longlong start_memory_used;
|
static longlong start_memory_used;
|
||||||
|
|
||||||
|
char server_uid[SERVER_UID_SIZE+1]; // server uid will be written here
|
||||||
|
|
||||||
/* Global variables */
|
/* Global variables */
|
||||||
|
|
||||||
bool opt_bin_log, opt_bin_log_used=0, opt_ignore_builtin_innodb= 0;
|
bool opt_bin_log, opt_bin_log_used=0, opt_ignore_builtin_innodb= 0;
|
||||||
@ -1130,6 +1132,8 @@ PSI_file_key key_file_map;
|
|||||||
PSI_statement_info stmt_info_new_packet;
|
PSI_statement_info stmt_info_new_packet;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int calculate_server_uid(char *dest);
|
||||||
|
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
void net_before_header_psi(struct st_net *net, void *thd, size_t /* unused: count */)
|
void net_before_header_psi(struct st_net *net, void *thd, size_t /* unused: count */)
|
||||||
{
|
{
|
||||||
@ -3872,6 +3876,9 @@ static int init_common_variables()
|
|||||||
if (IS_SYSVAR_AUTOSIZE(&server_version_ptr))
|
if (IS_SYSVAR_AUTOSIZE(&server_version_ptr))
|
||||||
set_server_version(server_version, sizeof(server_version));
|
set_server_version(server_version, sizeof(server_version));
|
||||||
|
|
||||||
|
if (calculate_server_uid(server_uid))
|
||||||
|
strmov(server_uid, "unknown");
|
||||||
|
|
||||||
mysql_real_data_home_len= uint(strlen(mysql_real_data_home));
|
mysql_real_data_home_len= uint(strlen(mysql_real_data_home));
|
||||||
|
|
||||||
sf_leaking_memory= 0; // no memory leaks from now on
|
sf_leaking_memory= 0; // no memory leaks from now on
|
||||||
@ -4735,8 +4742,10 @@ static int init_server_components()
|
|||||||
first in error log, for troubleshooting and debugging purposes
|
first in error log, for troubleshooting and debugging purposes
|
||||||
*/
|
*/
|
||||||
if (!opt_help)
|
if (!opt_help)
|
||||||
sql_print_information("Starting MariaDB %s source revision %s as process %lu",
|
sql_print_information("Starting MariaDB %s source revision %s "
|
||||||
server_version, SOURCE_REVISION, (ulong) getpid());
|
"server_uid %s as process %lu",
|
||||||
|
server_version, SOURCE_REVISION, server_uid,
|
||||||
|
(ulong) getpid());
|
||||||
|
|
||||||
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
|
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
|
||||||
/*
|
/*
|
||||||
@ -9849,3 +9858,31 @@ my_thread_id next_thread_id(void)
|
|||||||
mysql_mutex_unlock(&LOCK_thread_id);
|
mysql_mutex_unlock(&LOCK_thread_id);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
calculates the server unique identifier
|
||||||
|
|
||||||
|
UID is a base64 encoded SHA1 hash of the MAC address of one of
|
||||||
|
the interfaces, and the tcp port that the server is listening on
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int calculate_server_uid(char *dest)
|
||||||
|
{
|
||||||
|
uchar rawbuf[2 + 6];
|
||||||
|
uchar shabuf[MY_SHA1_HASH_SIZE];
|
||||||
|
|
||||||
|
int2store(rawbuf, mysqld_port);
|
||||||
|
if (my_gethwaddr(rawbuf + 2))
|
||||||
|
{
|
||||||
|
sql_print_error("feedback plugin: failed to retrieve the MAC address");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my_sha1((uint8*) shabuf, (char*) rawbuf, sizeof(rawbuf));
|
||||||
|
|
||||||
|
assert(my_base64_needed_encoded_length(sizeof(shabuf)) <= SERVER_UID_SIZE);
|
||||||
|
my_base64_encode(shabuf, sizeof(shabuf), dest);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -957,6 +957,8 @@ extern my_bool opt_mysql56_temporal_format, strict_password_validation;
|
|||||||
extern ulong binlog_checksum_options;
|
extern ulong binlog_checksum_options;
|
||||||
extern bool max_user_connections_checking;
|
extern bool max_user_connections_checking;
|
||||||
extern ulong opt_binlog_dbug_fsync_sleep;
|
extern ulong opt_binlog_dbug_fsync_sleep;
|
||||||
|
static const int SERVER_UID_SIZE= 29;
|
||||||
|
extern char server_uid[SERVER_UID_SIZE+1];
|
||||||
|
|
||||||
extern uint volatile global_disable_checkpoint;
|
extern uint volatile global_disable_checkpoint;
|
||||||
extern my_bool opt_help;
|
extern my_bool opt_help;
|
||||||
|
@ -3273,6 +3273,14 @@ Sys_server_id(
|
|||||||
VALID_RANGE(1, UINT_MAX32), DEFAULT(1), BLOCK_SIZE(1), NO_MUTEX_GUARD,
|
VALID_RANGE(1, UINT_MAX32), DEFAULT(1), BLOCK_SIZE(1), NO_MUTEX_GUARD,
|
||||||
NOT_IN_BINLOG, ON_CHECK(check_server_id), ON_UPDATE(fix_server_id));
|
NOT_IN_BINLOG, ON_CHECK(check_server_id), ON_UPDATE(fix_server_id));
|
||||||
|
|
||||||
|
char *server_uid_ptr= &server_uid[0];
|
||||||
|
|
||||||
|
static Sys_var_charptr Sys_server_uid(
|
||||||
|
"server_uid", "Automatically calculated server unique id hash",
|
||||||
|
READ_ONLY GLOBAL_VAR(server_uid_ptr),
|
||||||
|
CMD_LINE_HELP_ONLY,
|
||||||
|
DEFAULT(server_uid));
|
||||||
|
|
||||||
static Sys_var_on_access_global<Sys_var_mybool,
|
static Sys_var_on_access_global<Sys_var_mybool,
|
||||||
PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_COMPRESSED_PROTOCOL>
|
PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_COMPRESSED_PROTOCOL>
|
||||||
Sys_slave_compressed_protocol(
|
Sys_slave_compressed_protocol(
|
||||||
|
Reference in New Issue
Block a user