#include <cluster_metadata.h>
|
| ClusterMetadata (const MetadataSchemaVersion &schema_version, MySQLSession *mysql, mysql_harness::SocketOperationsBase *sockops=mysql_harness::SocketOperations::instance()) |
|
virtual | ~ClusterMetadata ()=default |
|
virtual mysqlrouter::ClusterType | get_type ()=0 |
|
virtual void | verify_router_id_is_ours (const uint32_t router_id, const std::string &hostname_override="")=0 |
| Checks if Router with given id is already registered in metadata database, and belongs to our machine. More...
|
|
virtual uint32_t | register_router (const std::string &router_name, const bool overwrite, const std::string &hostname_override="")=0 |
| Registers Router in metadata database. More...
|
|
virtual void | update_router_info (const uint32_t router_id, const std::string &cluster_id, const std::string &target_cluster, const std::string &rw_endpoint, const std::string &ro_endpoint, const std::string &rw_x_endpoint, const std::string &ro_x_endpoint, const std::string &username)=0 |
|
virtual std::vector< std::string > | get_routing_mode_queries ()=0 |
|
virtual void | require_metadata_is_ok () |
| Verify that host is a valid metadata server. More...
|
|
virtual void | require_cluster_is_ok ()=0 |
| Verify that host is a valid cluster member (either Group Replication or ReplicaSet cluster) More...
|
|
virtual std::string | get_cluster_type_specific_id ()=0 |
|
virtual ClusterInfo | fetch_metadata_servers ()=0 |
|
virtual std::vector< std::string > | get_grant_statements (const std::string &new_accounts) const =0 |
|
virtual std::vector< std::tuple< std::string, unsigned long > > | fetch_cluster_hosts ()=0 |
|
MySQLSession & | get_session () |
|
virtual uint64_t | get_view_id (const std::string &) |
|
◆ ClusterMetadata()
◆ ~ClusterMetadata()
virtual mysqlrouter::ClusterMetadata::~ClusterMetadata |
( |
| ) |
|
|
virtualdefault |
◆ fetch_cluster_hosts()
virtual std::vector< std::tuple< std::string, unsigned long > > mysqlrouter::ClusterMetadata::fetch_cluster_hosts |
( |
| ) |
|
|
pure virtual |
◆ fetch_metadata_servers()
virtual ClusterInfo mysqlrouter::ClusterMetadata::fetch_metadata_servers |
( |
| ) |
|
|
pure virtual |
◆ get_cluster_type_specific_id()
virtual std::string mysqlrouter::ClusterMetadata::get_cluster_type_specific_id |
( |
| ) |
|
|
pure virtual |
◆ get_grant_statements()
virtual std::vector< std::string > mysqlrouter::ClusterMetadata::get_grant_statements |
( |
const std::string & |
new_accounts | ) |
const |
|
pure virtual |
◆ get_routing_mode_queries()
virtual std::vector< std::string > mysqlrouter::ClusterMetadata::get_routing_mode_queries |
( |
| ) |
|
|
pure virtual |
◆ get_session()
MySQLSession & mysqlrouter::ClusterMetadata::get_session |
( |
| ) |
|
|
inline |
◆ get_type()
◆ get_view_id()
virtual uint64_t mysqlrouter::ClusterMetadata::get_view_id |
( |
const std::string & |
| ) |
|
|
inlinevirtual |
◆ query_cluster_count()
virtual uint64_t mysqlrouter::ClusterMetadata::query_cluster_count |
( |
| ) |
|
|
protectedpure virtual |
◆ register_router()
virtual uint32_t mysqlrouter::ClusterMetadata::register_router |
( |
const std::string & |
router_name, |
|
|
const bool |
overwrite, |
|
|
const std::string & |
hostname_override = "" |
|
) |
| |
|
pure virtual |
Registers Router in metadata database.
- Parameters
-
router_name | Router name |
overwrite | if Router name is already registered, allow this registration to be "hijacked" instead of throwing |
hostname_override | If non-empty, this hostname will be used instead of getting queried from OS |
- Returns
- newly-assigned router_id
- Exceptions
-
LocalHostnameResolutionError(std::runtime_error) | on hostname query failure, std::runtime_error on other failure |
Implemented in mysqlrouter::ClusterMetadataGRV1, mysqlrouter::ClusterMetadataGRV2, and mysqlrouter::ClusterMetadataAR.
◆ require_cluster_is_ok()
virtual void mysqlrouter::ClusterMetadata::require_cluster_is_ok |
( |
| ) |
|
|
pure virtual |
◆ require_metadata_is_ok()
void ClusterMetadata::require_metadata_is_ok |
( |
| ) |
|
|
virtual |
Verify that host is a valid metadata server.
- Exceptions
-
MySQLSession::Error | |
std::runtime_error | |
std::out_of_range | |
std::logic_error | |
checks that the server
- has the metadata in the correct version
- contains metadata for the group it's in (in case of GR cluster) (metadata server group must be same as managed group currently)
Reimplemented in mysqlrouter::ClusterMetadataGRInClusterSet.
◆ update_router_info()
virtual void mysqlrouter::ClusterMetadata::update_router_info |
( |
const uint32_t |
router_id, |
|
|
const std::string & |
cluster_id, |
|
|
const std::string & |
target_cluster, |
|
|
const std::string & |
rw_endpoint, |
|
|
const std::string & |
ro_endpoint, |
|
|
const std::string & |
rw_x_endpoint, |
|
|
const std::string & |
ro_x_endpoint, |
|
|
const std::string & |
username |
|
) |
| |
|
pure virtual |
◆ verify_router_id_is_ours()
virtual void mysqlrouter::ClusterMetadata::verify_router_id_is_ours |
( |
const uint32_t |
router_id, |
|
|
const std::string & |
hostname_override = "" |
|
) |
| |
|
pure virtual |
Checks if Router with given id is already registered in metadata database, and belongs to our machine.
- Parameters
-
router_id | Router id |
hostname_override | If non-empty, this hostname will be used instead of getting queried from OS |
- Exceptions
-
LocalHostnameResolutionError(std::runtime_error) | on hostname query failure |
std::runtime_error | if router_id doesn't exist, or is associated with a different host |
MySQLSession::Error(std::runtime_error) | on database error |
Implemented in mysqlrouter::ClusterMetadataGRV1, mysqlrouter::ClusterMetadataGRV2, and mysqlrouter::ClusterMetadataAR.
◆ mysql_
◆ schema_version_
◆ socket_operations_
The documentation for this class was generated from the following files: