mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-16437: merge 5.7 P_S replication instrumentation and tables
Merge 'replication_applier_configuration' table. This table captures SQL_THREAD configuration parameters.
This commit is contained in:
@ -228,7 +228,7 @@ mutex_instances 10 Dynamic
|
|||||||
objects_summary_global_by_type 10 Dynamic
|
objects_summary_global_by_type 10 Dynamic
|
||||||
performance_timers 10 Fixed
|
performance_timers 10 Fixed
|
||||||
prepared_statements_instances 10 Dynamic
|
prepared_statements_instances 10 Dynamic
|
||||||
replication_applier_configuration 10 Fixed
|
replication_applier_configuration 10 Dynamic
|
||||||
replication_applier_status 10 Fixed
|
replication_applier_status 10 Fixed
|
||||||
replication_applier_status_by_coordinator 10 Dynamic
|
replication_applier_status_by_coordinator 10 Dynamic
|
||||||
replication_applier_status_by_worker 10 Dynamic
|
replication_applier_status_by_worker 10 Dynamic
|
||||||
|
@ -853,7 +853,7 @@ def performance_schema prepared_statements_instances SUM_SORT_ROWS 32 NULL NO bi
|
|||||||
def performance_schema prepared_statements_instances SUM_SORT_SCAN 33 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def performance_schema prepared_statements_instances SUM_SORT_SCAN 33 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def performance_schema prepared_statements_instances SUM_NO_INDEX_USED 34 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def performance_schema prepared_statements_instances SUM_NO_INDEX_USED 34 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def performance_schema prepared_statements_instances SUM_NO_GOOD_INDEX_USED 35 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def performance_schema prepared_statements_instances SUM_NO_GOOD_INDEX_USED 35 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def performance_schema replication_applier_configuration CHANNEL_NAME 1 NULL NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references NEVER NULL
|
def performance_schema replication_applier_configuration CHANNEL_NAME 1 NULL NO varchar 256 768 NULL NULL NULL utf8 utf8_general_ci varchar(256) select,insert,update,references NEVER NULL
|
||||||
def performance_schema replication_applier_configuration DESIRED_DELAY 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL
|
def performance_schema replication_applier_configuration DESIRED_DELAY 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL
|
||||||
def performance_schema replication_applier_status CHANNEL_NAME 1 NULL NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references NEVER NULL
|
def performance_schema replication_applier_status CHANNEL_NAME 1 NULL NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references NEVER NULL
|
||||||
def performance_schema replication_applier_status SERVICE_STATE 2 NULL NO enum 3 9 NULL NULL NULL utf8 utf8_general_ci enum('ON','OFF') select,insert,update,references NEVER NULL
|
def performance_schema replication_applier_status SERVICE_STATE 2 NULL NO enum 3 9 NULL NULL NULL utf8 utf8_general_ci enum('ON','OFF') select,insert,update,references NEVER NULL
|
||||||
|
35
mysql-test/suite/rpl/r/rpl_perfschema_applier_config.result
Normal file
35
mysql-test/suite/rpl/r/rpl_perfschema_applier_config.result
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
include/assert.inc [On master, the table should return an empty set.]
|
||||||
|
connection slave;
|
||||||
|
|
||||||
|
# Verify that SELECT works and produces an output similar to
|
||||||
|
# the corresponding field in SHOW SLAVE STATUS(SSS) in all scenarios.
|
||||||
|
|
||||||
|
|
||||||
|
# Verify that output is same as SSS on a fresh slave.
|
||||||
|
|
||||||
|
include/assert.inc [Value returned by SSS and PS table for Desired_Delay should be same.]
|
||||||
|
|
||||||
|
# Verify that the value of this field is correct after STOP SLAVE.
|
||||||
|
|
||||||
|
include/stop_slave.inc
|
||||||
|
include/assert.inc [Value returned by SSS and PS table for Desired_Delay should be same.]
|
||||||
|
|
||||||
|
# Verify that, when desired delay is set, the value is shown corectly.
|
||||||
|
|
||||||
|
change master to master_delay= 2;
|
||||||
|
include/start_slave.inc
|
||||||
|
include/assert.inc [Value returned by SSS and PS table for Desired_Delay should be same.]
|
||||||
|
|
||||||
|
# Verify that the value is preserved after STOP SLAVE.
|
||||||
|
|
||||||
|
include/stop_slave.inc
|
||||||
|
include/assert.inc [Value returned by SSS and PS table for Desired_Delay should be same.]
|
||||||
|
|
||||||
|
# Verify that, when desired delay is reset, the value is shown corectly.
|
||||||
|
|
||||||
|
change master to master_delay= 0;
|
||||||
|
include/start_slave.inc
|
||||||
|
include/assert.inc [Value returned by SSS and PS table for Desired_Delay should be same.]
|
||||||
|
include/rpl_end.inc
|
97
mysql-test/suite/rpl/t/rpl_perfschema_applier_config.test
Normal file
97
mysql-test/suite/rpl/t/rpl_perfschema_applier_config.test
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# This test script serves as the functionality testing for the table
|
||||||
|
# performance_schema.replication_applier_configuration. Test for ddl and dml
|
||||||
|
# operations is a part of the perfschema suite. The ddl/dml tests are named:
|
||||||
|
# 1) ddl_replication_applier_configuration.test and
|
||||||
|
# 2) dml_replication_applier_configuration.test.
|
||||||
|
#
|
||||||
|
# The follwing scenarios are tested in this script:
|
||||||
|
#
|
||||||
|
# - Verify that output is same as SSS on a fresh slave.
|
||||||
|
# - Verify that the value of this field is correct after STOP SLAVE.
|
||||||
|
# - Verify that, when desired delay is set, the value is shown corectly.
|
||||||
|
# - Verify that the value is preserved after STOP SLAVE.
|
||||||
|
# - Verify that, when desired delay is reset, the value is shown corectly.
|
||||||
|
#
|
||||||
|
# ==== Related Worklog ====
|
||||||
|
#
|
||||||
|
# MDEV-16437: merge 5.7 P_S replication instrumentation and tables
|
||||||
|
#
|
||||||
|
|
||||||
|
source include/have_perfschema.inc;
|
||||||
|
source include/have_binlog_format_mixed.inc;
|
||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
let $assert_text= On master, the table should return an empty set.;
|
||||||
|
let $assert_cond= count(*) = 0 from performance_schema.replication_applier_configuration;
|
||||||
|
source include/assert.inc;
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # Verify that SELECT works and produces an output similar to
|
||||||
|
--echo # the corresponding field in SHOW SLAVE STATUS(SSS) in all scenarios.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # Verify that output is same as SSS on a fresh slave.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
let $sss_value= query_get_value(SHOW SLAVE STATUS, SQL_Delay, 1);
|
||||||
|
let $ps_value= query_get_value(select Desired_Delay from performance_schema.replication_applier_configuration, Desired_Delay, 1);
|
||||||
|
let $assert_text= Value returned by SSS and PS table for Desired_Delay should be same.;
|
||||||
|
let $assert_cond= "$sss_value" = "$ps_value";
|
||||||
|
source include/assert.inc;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # Verify that the value of this field is correct after STOP SLAVE.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
source include/stop_slave.inc;
|
||||||
|
|
||||||
|
let $sss_value= query_get_value(SHOW SLAVE STATUS, SQL_Delay, 1);
|
||||||
|
let $ps_value= query_get_value(select Desired_Delay from performance_schema.replication_applier_configuration, Desired_Delay, 1);
|
||||||
|
let $assert_text= Value returned by SSS and PS table for Desired_Delay should be same.;
|
||||||
|
let $assert_cond= "$sss_value" = "$ps_value";
|
||||||
|
source include/assert.inc;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # Verify that, when desired delay is set, the value is shown corectly.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
eval change master to master_delay= 2;
|
||||||
|
source include/start_slave.inc;
|
||||||
|
|
||||||
|
let $sss_value= query_get_value(SHOW SLAVE STATUS, SQL_Delay, 1);
|
||||||
|
let $ps_value= query_get_value(select Desired_Delay from performance_schema.replication_applier_configuration, Desired_Delay, 1);
|
||||||
|
let $assert_text= Value returned by SSS and PS table for Desired_Delay should be same.;
|
||||||
|
let $assert_cond= "$sss_value" = "$ps_value";
|
||||||
|
source include/assert.inc;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # Verify that the value is preserved after STOP SLAVE.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
source include/stop_slave.inc;
|
||||||
|
|
||||||
|
let $ss_value= query_get_value(SHOW SLAVE STATUS, SQL_Delay, 1);
|
||||||
|
let $ps_value= query_get_value(select Desired_Delay from performance_schema.replication_applier_configuration, Desired_Delay, 1);
|
||||||
|
let $assert_text= Value returned by SSS and PS table for Desired_Delay should be same.;
|
||||||
|
let $assert_cond= "$sss_value" = "$ps_value";
|
||||||
|
source include/assert.inc;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # Verify that, when desired delay is reset, the value is shown corectly.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
eval change master to master_delay= 0;
|
||||||
|
source include/start_slave.inc;
|
||||||
|
|
||||||
|
let $sss_value= query_get_value(SHOW SLAVE STATUS, SQL_Delay, 1);
|
||||||
|
let $ps_value= query_get_value(select Desired_Delay from performance_schema.replication_applier_configuration, Desired_Delay, 1);
|
||||||
|
let $assert_text= Value returned by SSS and PS table for Desired_Delay should be same.;
|
||||||
|
let $assert_cond= "$sss_value" = "$ps_value";
|
||||||
|
source include/assert.inc;
|
||||||
|
|
||||||
|
source include/rpl_end.inc;
|
@ -29,17 +29,15 @@
|
|||||||
//#define HAVE_REPLICATION
|
//#define HAVE_REPLICATION
|
||||||
|
|
||||||
#include "my_global.h"
|
#include "my_global.h"
|
||||||
|
#ifdef HAVE_REPLICATION
|
||||||
#include "table_replication_applier_configuration.h"
|
#include "table_replication_applier_configuration.h"
|
||||||
#include "pfs_instr_class.h"
|
#include "pfs_instr_class.h"
|
||||||
#include "pfs_instr.h"
|
#include "pfs_instr.h"
|
||||||
#include "slave.h"
|
#include "slave.h"
|
||||||
//#include "rpl_info.h"
|
|
||||||
#include "rpl_rli.h"
|
#include "rpl_rli.h"
|
||||||
#include "rpl_mi.h"
|
#include "rpl_mi.h"
|
||||||
#include "sql_parse.h"
|
#include "sql_parse.h"
|
||||||
//#include "rpl_msr.h" /* Multisource replication */
|
|
||||||
|
|
||||||
#ifdef HAVE_REPLICATION
|
|
||||||
THR_LOCK table_replication_applier_configuration::m_table_lock;
|
THR_LOCK table_replication_applier_configuration::m_table_lock;
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
@ -54,7 +52,7 @@ table_replication_applier_configuration::m_share=
|
|||||||
sizeof(pos_t), /* ref length */
|
sizeof(pos_t), /* ref length */
|
||||||
&m_table_lock,
|
&m_table_lock,
|
||||||
{ C_STRING_WITH_LEN("CREATE TABLE replication_applier_configuration("
|
{ C_STRING_WITH_LEN("CREATE TABLE replication_applier_configuration("
|
||||||
"CHANNEL_NAME CHAR(64) collate utf8_general_ci not null,"
|
"CHANNEL_NAME VARCHAR(256) collate utf8_general_ci not null,"
|
||||||
"DESIRED_DELAY INTEGER not null)") },
|
"DESIRED_DELAY INTEGER not null)") },
|
||||||
false /* perpetual */
|
false /* perpetual */
|
||||||
};
|
};
|
||||||
@ -141,7 +139,7 @@ void table_replication_applier_configuration::make_row(Master_info *mi)
|
|||||||
|
|
||||||
m_row.channel_name_length= static_cast<uint>(mi->connection_name.length);
|
m_row.channel_name_length= static_cast<uint>(mi->connection_name.length);
|
||||||
memcpy(m_row.channel_name, mi->connection_name.str, m_row.channel_name_length);
|
memcpy(m_row.channel_name, mi->connection_name.str, m_row.channel_name_length);
|
||||||
m_row.desired_delay= 0; //mi->rli->get_sql_delay();
|
m_row.desired_delay= mi->rli.get_sql_delay();
|
||||||
|
|
||||||
mysql_mutex_unlock(&mi->rli.data_lock);
|
mysql_mutex_unlock(&mi->rli.data_lock);
|
||||||
mysql_mutex_unlock(&mi->data_lock);
|
mysql_mutex_unlock(&mi->data_lock);
|
||||||
@ -159,18 +157,7 @@ int table_replication_applier_configuration::read_row_values(TABLE *table,
|
|||||||
if (unlikely(! m_row_exists))
|
if (unlikely(! m_row_exists))
|
||||||
return HA_ERR_RECORD_DELETED;
|
return HA_ERR_RECORD_DELETED;
|
||||||
|
|
||||||
/*
|
DBUG_ASSERT(table->s->null_bytes == 0);
|
||||||
Note:
|
|
||||||
There are no NULL columns in this table,
|
|
||||||
so there are no null bits reserved for NULL flags per column.
|
|
||||||
There are no VARCHAR columns either, so the record is not
|
|
||||||
in HA_OPTION_PACK_RECORD format as most other performance_schema tables.
|
|
||||||
When HA_OPTION_PACK_RECORD is not set,
|
|
||||||
the table record reserves an extra null byte, see open_binary_frm().
|
|
||||||
*/
|
|
||||||
|
|
||||||
DBUG_ASSERT(table->s->null_bytes == 1);
|
|
||||||
buf[0]= 0;
|
|
||||||
|
|
||||||
for (; (f= *fields) ; fields++)
|
for (; (f= *fields) ; fields++)
|
||||||
{
|
{
|
||||||
@ -178,10 +165,10 @@ int table_replication_applier_configuration::read_row_values(TABLE *table,
|
|||||||
{
|
{
|
||||||
switch(f->field_index)
|
switch(f->field_index)
|
||||||
{
|
{
|
||||||
case 0: /**channel_name*/
|
case 0: /* channel_name */
|
||||||
set_field_char_utf8(f, m_row.channel_name, m_row.channel_name_length);
|
set_field_varchar_utf8(f, m_row.channel_name, m_row.channel_name_length);
|
||||||
break;
|
break;
|
||||||
case 1: /** desired_delay */
|
case 1: /* desired_delay */
|
||||||
set_field_ulong(f, static_cast<ulong>(m_row.desired_delay));
|
set_field_ulong(f, static_cast<ulong>(m_row.desired_delay));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -35,8 +35,6 @@
|
|||||||
#include "rpl_mi.h"
|
#include "rpl_mi.h"
|
||||||
#include "mysql_com.h"
|
#include "mysql_com.h"
|
||||||
#include "my_thread.h"
|
#include "my_thread.h"
|
||||||
//#include "rpl_msr.h"
|
|
||||||
//#include "rpl_info.h" /*CHANNEL_NAME_LENGTH*/
|
|
||||||
|
|
||||||
class Master_info;
|
class Master_info;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user