当前位置: 首页 > news >正文

MySQL5.7用于控制副本服务器的 SQL 语句

  官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.4.2 SQL Statements for Controlling Replica Servers

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

MySQL 5.7 参考手册  /  ...  /  CHANGE MASTER TO 语句
13.4.2.1 将 MASTER 更改为语句
CHANGE MASTER TO option [, option] ... [ channel_option ]option: {MASTER_BIND = 'interface_name'| MASTER_HOST = 'host_name'| MASTER_USER = 'user_name'| MASTER_PASSWORD = 'password'| MASTER_PORT = port_num| MASTER_CONNECT_RETRY = interval| MASTER_RETRY_COUNT = count| MASTER_DELAY = interval| MASTER_HEARTBEAT_PERIOD = interval| MASTER_LOG_FILE = 'source_log_name'| MASTER_LOG_POS = source_log_pos| MASTER_AUTO_POSITION = {0|1}| RELAY_LOG_FILE = 'relay_log_name'| RELAY_LOG_POS = relay_log_pos| MASTER_SSL = {0|1}| MASTER_SSL_CA = 'ca_file_name'| MASTER_SSL_CAPATH = 'ca_directory_name'| MASTER_SSL_CERT = 'cert_file_name'| MASTER_SSL_CRL = 'crl_file_name'| MASTER_SSL_CRLPATH = 'crl_directory_name'| MASTER_SSL_KEY = 'key_file_name'| MASTER_SSL_CIPHER = 'cipher_list'| MASTER_SSL_VERIFY_SERVER_CERT = {0|1}| MASTER_TLS_VERSION = 'protocol_list'| IGNORE_SERVER_IDS = (server_id_list)
}channel_option:FOR CHANNEL channelserver_id_list:[server_id [, server_id] ... ]

CHANGE MASTER TO更改副本用于连接到复制源服务器、读取源的二进制日志以及读取副本的中继日志的参数。它还更新复制元数据存储库的内容(请参见 第 16.2.4 节“中继日志和复制元数据存储库”)。CHANGE MASTER TO需要 SUPER特权。

STOP SLAVE在 MySQL 5.7.4 之前,必须在发出此语句之前 停止复制线程(如有必要)。在 MySQL 5.7.4 及更高版本中,您可以CHANGE MASTER TO在运行的副本上发出语句,而无需执行此操作,具体取决于复制 SQL 线程和复制 I/O 线程的状态。本节稍后提供管理此类使用的规则。

当使用多线程副本(换句话说 slave_parallel_workers大于 0)时,停止副本可能会导致 从中继日志执行的事务序列中出现“间隙”,无论副本是有意停止还是其他原因。当存在这种差距时,发行就会CHANGE MASTER TO 失败。在这种情况下的解决方案是发出 START SLAVE UNTIL SQL_AFTER_MTS_GAPS确保弥补差距的问题。

可选子句使您能够指定该语句适用于哪个复制通道。提供子句将语句应用于 特定的复制通道,并用于添加新通道或修改现有通道。例如,要添加一个名为channel2的新通道: FOR CHANNEL channelFOR CHANNEL channelCHANGE MASTER TO

CHANGE MASTER TO MASTER_HOST=host1, MASTER_PORT=3002 FOR CHANNEL 'channel2'

如果未指定子句且不存在额外通道,则该语句适用于默认通道。

使用多个复制通道时,如果CHANGE MASTER TO语句未使用子句命名通道 ,则会发生错误。有关更多信息 ,请参见第 16.2.2 节 “复制通道” 。FOR CHANNEL channel

未指定的选项保留其值,除非以下讨论中指出。因此,在大多数情况下,无需指定不更改的选项。例如,如果连接到复制源服务器的密码已更改,请发出以下语句以告知副本新密码:

CHANGE MASTER TO MASTER_PASSWORD='new3cret';

MASTER_HOSTMASTER_USER、 MASTER_PASSWORD、 并向 MASTER_PORT副本提供有关如何连接到其复制源服务器的信息:

  • MASTER_HOST和 MASTER_PORT是主控主机的主机名(或 IP 地址)及其 TCP/IP 端口。

    笔记

    复制不能使用 Unix 套接字文件。您必须能够使用 TCP/IP 连接到复制源服务器。

    如果指定MASTER_HOST或 MASTER_PORT选项,副本将假定源与之前不同(即使选项值与其当前值相同。)在这种情况下,将考虑源二进制日志文件名和位置的旧值不再适用,因此如果您不在声明中 指定MASTER_LOG_FILEand ,则 and 会默默地附加到它后面。 MASTER_LOG_POSMASTER_LOG_FILE=''MASTER_LOG_POS=4

    设置MASTER_HOST=''(即将其值显式设置为空字符串)与 根本设置不同 。MASTER_HOST从 MySQL 5.5 开始,尝试设置MASTER_HOST为空字符串会失败并出现错误。以前,设置 MASTER_HOST为空字符串会导致 START SLAVE随后失败。(错误#28796)

    检查 用于的值MASTER_HOST和其他 选项的换行符(或);这些值中存在此类字符会导致语句失败并显示 。(错误#11758581,错误#50801) CHANGE MASTER TO\n0x0AER_MASTER_INFO

  • MASTER_USER和 MASTER_PASSWORD是用于连接到源的帐户的用户名和密码。如果您指定MASTER_PASSWORD, MASTER_USER也是必需的。语句中用于复制用户帐户的密码 CHANGE MASTER TO长度限制为 32 个字符;在 MySQL 5.7.5 之前,如果密码较长,语句会成功,但任何多余的字符都会被静默截断。在 MySQL 5.7.5 及更高版本中,尝试使用超过 32 个字符的密码会导致CHANGE MASTER TO失败。(错误#11752299,错误#43439)

    可以通过指定 来设置空用户名 MASTER_USER='',但不能使用空用户名启动复制通道。MASTER_USER仅当您出于安全目的需要从副本存储库中清除以前使用的凭据时,才 设置空用户名,并且之后不要尝试使用该通道。

    正在运行的语句的文本CHANGE MASTER TO(包括 MASTER_USER和 的 值MASTER_PASSWORD)可以在并发语句的输出中看到SHOW PROCESSLIST。(声明的完整文本 START SLAVE也可见SHOW PROCESSLIST。)

设置MASTER_SSL=1复制连接,然后不设置其他 选项对应于 客户端的设置,如 加密连接的命令选项中所述。使用 时 ,仅当可以建立加密连接时,连接尝试才会成功。复制连接不会回退到未加密的连接,因此没有与 复制设置相对应的设置。如果设置,则对应于 。 MASTER_SSL_xxx--ssl-mode=REQUIREDMASTER_SSL=1--ssl-mode=PREFERREDMASTER_SSL=0--ssl-mode=DISABLED

重要的

为了帮助防止复杂的中间人攻击,副本验证服务器的身份非常重要。您可以指定 与 设置相对应的附加选项 MASTER_SSL_xxx--ssl-mode=VERIFY_CA--ssl-mode=VERIFY_IDENTITY,这是比默认设置更好的选择,有助于防止此类攻击。通过这些设置,副本会检查服务器的证书是否有效,并检查副本所使用的主机名是否与服务器证书中的标识相匹配。要实现这些级别的验证之一,您必须首先确保服务器的 CA 证书可供副本可靠地使用,否则将导致可用性问题。因此,它们不是默认设置。

选项 和选项指定副本如何使用加密和密码来保护复制连接。即使在不支持 SSL 的情况下编译的副本上,也可以更改这些选项。它们会保存到源元数据存储库,但如果副本未启用 SSL 支持,则会被忽略。和 选项执行的功能与 加密连接的命令选项中描述的 和 客户端选项 相同。两组选项的对应关系以及 和的使用MASTER_SSL_xxxMASTER_TLS_VERSIONMASTER_SSL_xxxMASTER_TLS_VERSION--ssl-xxx--tls-versionMASTER_SSL_xxxMASTER_TLS_VERSION设置安全连接的选项,在 第 16.3.8 节 “设置复制以使用加密连接”中进行了解释。

、和 选项控制副本如何识别与源的连接已丢失MASTER_HEARTBEAT_PERIOD并 尝试重新连接。 MASTER_CONNECT_RETRYMASTER_RETRY_COUNT

  • 该slave_net_timeout 系统变量指定在副本认为连接已断开、中止读取并尝试重新连接之前,副本等待来自源的更多数据或心跳信号的秒数。默认值为 60 秒(一分钟)。在 MySQL 5.7.7 之前,默认值为 3600 秒(一小时)。

  • 心跳间隔是由该选项控制的,它可以在连接仍然良好的情况下停止在没有数据的情况下发生连接超时 MASTER_HEARTBEAT_PERIOD。在该秒数后,将向副本发送心跳信号,并且只要源的二进制日志随事件更新,等待时间就会重置。因此,仅当二进制日志文件中没有未发送事件的时间长于此时间时,源才会发送心跳。心跳间隔interval 是一个十进制值,范围为0到4294967秒,分辨率为毫秒;最小的非零值为 0.001。环境interval设为 0 会完全禁用心跳。心跳间隔默认为系统变量值的一半 slave_net_timeout。它记录在源元数据存储库中并显示在 replication_connection_configuration 性能架构表中。

  • 在 MySQL 5.7.4 之前,不包括 MASTER_HEARTBEAT_PERIOD导致 CHANGE MASTER TO将心跳间隔重置为默认值( slave_net_timeout系统变量值的一半)和 Slave_received_heartbeats 0。除了 之外,现在不会重置心跳间隔 RESET SLAVE。(错误#18185490)

  • 请注意,更改 的值或默认设置 slave_net_timeout不会自动更改心跳间隔,无论是已明确设置还是使用先前计算的默认值。@@GLOBAL.slave_net_timeout如果您设置的值小于当前心跳间隔的值,则会发出警告 。如果 slave_net_timeout发生更改,您还必须发出CHANGE MASTER TO将心跳间隔调整为合适的值,使心跳信号在连接超时之前发生。如果不这样做,心跳信号将不起作用,并且如果没有从源接收到数据,副本可能会重复尝试重新连接,从而创建僵尸转储线程。

  • 如果副本确实需要重新连接,则第一次重试会在超时后立即发生。 MASTER_CONNECT_RETRY指定重新连接尝试的时间间隔,并 MASTER_RETRY_COUNT限制重新连接尝试的次数。如果使用这两种默认设置,副本将在两次重新连接尝试之间等待 60 秒 ( MASTER_CONNECT_RETRY=60),并在 60 天内继续尝试以此速率重新连接 ( MASTER_RETRY_COUNT=86400)。设置为 0MASTER_RETRY_COUNT意味着对重新连接尝试的次数没有限制,因此副本会无限期地不断尝试重新连接。这些值记录在源元数据存储库中并显示在 replication_connection_configuration 性能架构表。 MASTER_RETRY_COUNT取代 --master-retry-count服务器启动选项。

MASTER_DELAY指定副本必须落后于源多少秒。interval从源接收到的事件直到在源上执行后至少几秒后才会执行 。默认值为 0。如果 不是 0 到 2 31interval -1范围内的非负整数,则会发生错误。有关更多信息,请参见第 16.3.10 节 “延迟复制”。

从 MySQL 5.7 开始,当复制 SQL 线程停止时,可以在正在运行的副本上执行使用 CHANGE MASTER TO该选项的语句。MASTER_DELAY

MASTER_BIND用于具有多个网络接口的副本,并确定选择副本的哪个网络接口来连接到源。

使用此选项配置的地址(如果有)可以在Master_Bind输出的列 中看到SHOW SLAVE STATUS。如果您使用源元数据存储库(服务器以 开头)的表 master_info_repository=TABLE,则该值也可以视为表Master_bind 的列mysql.slave_master_info

NDB Cluster 还支持将副本绑定到特定网络接口的功能。

MASTER_LOG_FILE和 MASTER_LOG_POS是复制 I/O 线程下次启动时应开始从源读取的坐标。 RELAY_LOG_FILE和 RELAY_LOG_POS是复制 SQL 线程下次启动时应开始从中继日志读取的坐标。如果您指定了这些选项中的任何一个,则无法指定MASTER_AUTO_POSITION = 1(本节稍后将介绍)。如果两者均未 MASTER_LOG_FILE指定 MASTER_LOG_POS,则副本将使用之前复制 SQL 线程的最后一个坐标CHANGE MASTER TO发出。这可以确保复制不会中断,即使复制 SQL 线程比复制 I/O 线程晚,当您只想更改(例如要使用的密码)时也是如此。

从 MySQL 5.7 开始,当复制 SQL 线程停止时,可以在正在运行的副本上执行CHANGE MASTER TO使用RELAY_LOG_FILE、 或这两个选项的语句。RELAY_LOG_POS在 MySQL 5.7.4 之前,CHANGE MASTER TO删除所有中继日志文件并启动新的中继日志文件,除非您指定RELAY_LOG_FILE或 RELAY_LOG_POS。在这种情况下,中继日志文件将被保留;全局relay_log_purge 变量静默设置为 0。在 MySQL 5.7.4 及更高版本中,如果复制 SQL 线程和复制 I/O 线程中至少之一正在运行,则会保留中继日志。如果两个线程都停止,则所有中继日志文件都将被删除,除非至少有以下之一RELAY_LOG_FILE: RELAY_LOG_POS已指定。对于组复制应用程序通道 ( group_replication_applier),它只有一个 SQL 线程而没有 I/O 线程,如果 SQL 线程停止,就会出现这种情况,但对于该通道,您不能使用 和 RELAY_LOG_FILE选项 RELAY_LOG_POS

RELAY_LOG_FILE可以使用绝对路径或相对路径,并使用与 相同的基本名称 MASTER_LOG_FILE。(错误#12190)

MASTER_AUTO_POSITION = 1与 一起使用 CHANGE MASTER TO时,副本尝试使用基于 GTID 的复制的自动定位功能(而不是基于二进制日志文件的位置)连接到源。CHANGE MASTER TO从 MySQL 5.7 开始,仅当复制 SQL 线程和复制 I/O 线程都停止时才能使用此选项 。副本和源都必须启用 GTID(GTID_MODE=ON, ON_PERMISSIVE,或 OFF_PERMISSIVE在副本和 GTID_MODE=ON源上)。 MASTER_LOG_FILE、 MASTER_LOG_POS、 RELAY_LOG_FILE、 和 RELAY_LOG_POS不能与 一起指定MASTER_AUTO_POSITION = 1。如果副本上启用了多源复制,则需要设置MASTER_AUTO_POSITION = 1每个适用的复制通道的选项。

通过MASTER_AUTO_POSITION = 1设置,在初始连接握手中,副本会发送一个 GTID 集,其中包含它已接收、提交或两者的事务。源通过发送其二进制日志中记录的所有事务进行响应,这些事务的 GTID 不包含在副本发送的 GTID 集中。此交换确保源仅发送具有副本尚未记录或提交的 GTID 的事务。如果副本从多个源接收事务(如钻石拓扑的情况),自动跳过功能可确保事务不会应用两次。有关如何计算副本发送的 GTID 集的详细信息,请参阅 第 16.1.3.3 节 “GTID 自动定位”。

如果源应发送的任何事务已从源的二进制日志中清除,或gtid_purged 通过其他方法添加到系统变量中的 GTID 集中,则源会将错误发送 ER_MASTER_HAS_PURGED_REQUIRED_GTIDS 到副本,并且复制不会启动。此外,如果在事务交换期间发现副本已记录或提交了 GTID 中源 UUID 的事务,但源本身尚未提交这些事务,则源会将错误发送到 ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER 副本,并且复制不会启动。有关如何处理这些情况的信息,请参阅 第 16.1.3.3 节“GTID 自动定位”。

IGNORE_SERVER_IDS采用 0 个或多个服务器 ID 的逗号分隔列表。源自相应服务器的事件将被忽略,但日志轮转和删除事件除外,这些事件仍记录在中继日志中。

在循环复制中,原始服务器通常充当其自身事件的终结者,因此它们不会被多次应用。因此,当删除循环中的一台服务器时,此选项在循环复制中非常有用。假设您有一个包含 4 台服务器的循环复制设置,服务器 ID 为 1、2、3 和 4,并且服务器 3 发生故障。通过启动从服务器 2 到服务器 4 的复制来弥补差距时,您可以在服务器 4 上发出的语句中包含IGNORE_SERVER_IDS = (3)该CHANGE MASTER TO语句,以告诉它使用服务器 2 而不是服务器 3 作为源。这样做会导致它忽略而不是传播源自不再使用的服务器的任何语句。

如果CHANGE MASTER TO发出的语句没有任何IGNORE_SERVER_IDS 选项,则保留任何现有列表。要清除被忽略的服务器列表,需要使用带有空列表的选项:

CHANGE MASTER TO IGNORE_SERVER_IDS = ();

MySQL 5.7.5 之前, RESET SLAVE ALL对服务器 ID 列表没有影响。在 MySQL 5.7.5 及更高版本中,RESET SLAVE ALL清除 IGNORE_SERVER_IDS. (错误#18816897)

如果IGNORE_SERVER_IDS包含服务器自己的 ID 并且服务器是在 --replicate-same-server-id启用该选项的情况下启动的,则会产生错误。

源元数据存储库和 的输出 SHOW SLAVE STATUS提供当前被忽略的服务器列表。有关更多信息,请参阅第 16.2.4.2 节“复制元数据存储库”和 第 13.7.5.34 节“SHOW SLAVE STATUS 语句”。

调用会导致、 、 和 CHANGE MASTER TO的先前值以及执行前有关副本状态的其他信息写入错误日志。 MASTER_HOSTMASTER_PORTMASTER_LOG_FILEMASTER_LOG_POS

CHANGE MASTER TO导致正在进行的事务的隐式提交。请参见第 13.3.3 节“导致隐式提交的语句”。

在 MySQL 5.7.4 及更高版本中,删除了在发出任何语句 STOP SLAVE之前 (以及之后) 执行的严格要求 。的行为不取决于副本是否停止,而是取决于(在 MySQL 5.7.4 及更高版本中)复制 SQL 线程和复制 I/O 线程的状态;现在停止或运行这些线程中的哪一个决定了在给定时间点可以或不能与语句一起使用的选项。做出此决定的规则如下: CHANGE MASTER TOSTART SLAVECHANGE MASTER TOCHANGE MASTER TO

  • 如果 SQL 线程停止,您可以 使用、 和 选项CHANGE MASTER TO允许的任意组合 执行,即使复制 I/O 线程正在运行也是如此。当 I/O 线程运行时,此语句不能使用其他选项。 RELAY_LOG_FILERELAY_LOG_POSMASTER_DELAY

  • 如果 I/O 线程停止,您可以 CHANGE MASTER TO使用此语句的任何选项(以任何允许的组合) 执行,除了 RELAY_LOG_FILE、 RELAY_LOG_POS、 MASTER_DELAY, MASTER_AUTO_POSITION = 1甚至当 SQL 线程正在运行时。

  • CHANGE MASTER TO 在发出使用 的语句 之前,必须停止 SQL 线程和 I/O 线程MASTER_AUTO_POSITION = 1

您可以使用 检查复制 SQL 线程和复制 I/O 线程的当前状态SHOW SLAVE STATUS。请注意,组复制应用程序通道 ( group_replication_applier) 没有 I/O 线程,只有 SQL 线程。

有关更多信息,请参阅 第 16.3.7 节 “故障转移期间切换源”。

CHANGE MASTER TO 如果您使用基于语句的复制和临时表,则语句后面的语句 可能会STOP SLAVE在副本上留下临时表。ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO从 MySQL 5.7 开始,每当发生这种情况时都会发出警告 ( )。在这种情况下,您可以通过在执行此类语句之前确保 Slave_open_temp_tables系统状态变量的值等于 0 来 避免这种情况CHANGE MASTER TO

CHANGE MASTER TO当您拥有复制源服务器的快照并记录了与快照时间相对应的源二进制日志坐标时,这对于设置副本非常有用。将快照加载到副本以将其与源同步后,您可以在副本上运行以指定副本应开始读取源二进制日志的坐标。 CHANGE MASTER TO MASTER_LOG_FILE='log_name', MASTER_LOG_POS=log_pos

以下示例更改副本使用的复制源服务器,并建立副本开始读取的源二进制日志坐标。当您想要设置副本来复制源时,可以使用此选项:

CHANGE MASTER TOMASTER_HOST='source2.example.com',MASTER_USER='replication',MASTER_PASSWORD='password',MASTER_PORT=3306,MASTER_LOG_FILE='source2-bin.001',MASTER_LOG_POS=4,MASTER_CONNECT_RETRY=10;

下一个示例显示了不太常用的操作。当副本具有中继日志文件且您因某种原因希望其再次执行时使用它。为此,源不需要可达。您只需要使用 CHANGE MASTER TO并启动 SQL 线程 ( START SLAVE SQL_THREAD):

CHANGE MASTER TORELAY_LOG_FILE='replica-relay-bin.006',RELAY_LOG_POS=4025;

下表显示了字符串值选项的最大允许长度。

选项最大长度
MASTER_HOST60
MASTER_USER96
MASTER_PASSWORD32
MASTER_LOG_FILE511
RELAY_LOG_FILE511
MASTER_SSL_CA511
MASTER_SSL_CAPATH511
MASTER_SSL_CERT511
MASTER_SSL_CRL511
MASTER_SSL_CRLPATH511
MASTER_SSL_KEY511
MASTER_SSL_CIPHER511
MASTER_TLS_VERSION511

 

MySQL 5.7 参考手册  /  ...  /  CHANGE REPLICATION FILTER 语句
13.4.2.2 更改复制过滤器语句
CHANGE REPLICATION FILTER filter[, filter][, ...]filter: {REPLICATE_DO_DB = (db_list)| REPLICATE_IGNORE_DB = (db_list)| REPLICATE_DO_TABLE = (tbl_list)| REPLICATE_IGNORE_TABLE = (tbl_list)| REPLICATE_WILD_DO_TABLE = (wild_tbl_list)| REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)| REPLICATE_REWRITE_DB = (db_pair_list)
}db_list:db_name[, db_name][, ...]tbl_list:db_name.table_name[, db_table_name][, ...]
wild_tbl_list:'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...]db_pair_list:(db_pair)[, (db_pair)][, ...]db_pair:from_db, to_db

CHANGE REPLICATION FILTER在副本上设置一个或多个复制过滤规则,其方式与使用复制过滤选项(例如 或 ) 启动副本mysqld相同。使用此语句设置的过滤器与使用服务器选项设置的过滤器在两个关键方面有所不同: --replicate-do-db--replicate-wild-ignore-table

  1. 该语句不需要重新启动服务器即可生效,只需STOP SLAVE SQL_THREAD先停止使用复制SQL线程(然后重新启动 START SLAVE SQL_THREAD)即可。

  2. 该声明的影响不是持久的;CHANGE REPLICATION FILTER重新启动副本 mysqld后,使用的任何过滤器设置都会丢失。

CHANGE REPLICATION FILTER 需要SUPER特权。

笔记

无法在配置为组复制的 MySQL 服务器实例上设置复制过滤器,因为过滤某些服务器上的事务会使组无法就一致状态达成一致。

以下列表显示了这些选项以及它们与服务器选项 CHANGE REPLICATION FILTER的关系 :--replicate-*

  • REPLICATE_DO_DB:包括基于数据库名称的更新。相当于 --replicate-do-db。

  • REPLICATE_IGNORE_DB:根据数据库名称排除更新。相当于 --replicate-ignore-db。

  • REPLICATE_DO_TABLE:包括基于表名的更新。相当于 --replicate-do-table。

  • REPLICATE_IGNORE_TABLE:根据表名排除更新。相当于 --replicate-ignore-table。

  • REPLICATE_WILD_DO_TABLE:包括基于通配符模式匹配表名称的更新。相当于 --replicate-wild-do-table。

  • REPLICATE_WILD_IGNORE_TABLE:排除基于通配符模式匹配表名的更新。相当于 --replicate-wild-ignore-table。

  • REPLICATE_REWRITE_DB:将副本上的新名称替换为源上的指定数据库后,对副本执行更新。相当于 --replicate-rewrite-db。

REPLICATE_DO_DB和 过滤器 的精确效果REPLICATE_IGNORE_DB取决于基于语句的复制还是基于行的复制有效。有关更多信息,请参阅第 16.2.5 节“服务器如何评估复制过滤规则”。

可以通过用逗号分隔规则来在单个语句中创建多个复制过滤规则 CHANGE REPLICATION FILTER,如下所示:

CHANGE REPLICATION FILTERREPLICATE_DO_DB = (d1), REPLICATE_IGNORE_DB = (d2);

发出刚才显示的语句相当于使用 options 启动副本mysqld。 --replicate-do-db=d1 --replicate-ignore-db=d2

如果多次指定相同的过滤规则,则仅 实际使用最后一个过滤规则。例如,此处显示的两个语句具有完全相同的效果,因为REPLICATE_DO_DB 第一个语句中的第一个规则被忽略:

CHANGE REPLICATION FILTERREPLICATE_DO_DB = (db1, db2), REPLICATE_DO_DB = (db3, db4);CHANGE REPLICATION FILTERREPLICATE_DO_DB = (db3,db4);
警告

此行为与 --replicate-*筛选选项的行为不同,多次指定同一选项会导致创建多个筛选规则。

不包含任何特殊字符的表和数据库的名称不需要加引号。REPLICATION_WILD_TABLE与一起 使用的值 REPLICATION_WILD_IGNORE_TABLE是字符串表达式,可能包含(特殊)通配符,因此必须用引号引起来。以下示例语句显示了这一点:

CHANGE REPLICATION FILTERREPLICATE_WILD_DO_TABLE = ('db1.old%');CHANGE REPLICATION FILTERREPLICATE_WILD_IGNORE_TABLE = ('db1.new%', 'db2.new%');

与一起 使用的值REPLICATE_REWRITE_DB 表示数据库名称对;每个这样的值都必须括在括号中。以下语句将 源 数据库上发生的语句重写为副本数据库上的语句: db1db2

CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));

刚刚显示的语句包含两组括号,一组括着一对数据库名称,另一组括着整个列表。这在以下示例中可能更容易看出,该示例创建了两条 rewrite-db规则,一条将数据库重写 dbAdbB,一条将数据库重写dbC为 dbD

CHANGE REPLICATION FILTERREPLICATE_REWRITE_DB = ((dbA, dbB), (dbC, dbD));

该语句使任何现有的复制过滤规则保持不变;要取消设置给定类型的所有过滤器,请将过滤器的值设置为显式空列表,如此例所示,这将删除所有现有的 REPLICATE_DO_DB和 REPLICATE_IGNORE_DB规则:

CHANGE REPLICATION FILTERREPLICATE_DO_DB = (), REPLICATE_IGNORE_DB = ();

以这种方式将过滤器设置为空会删除所有现有规则,不会创建任何新规则,并且不会使用--replicate-* 命令行或配置文件中的选项恢复 mysqld 启动时设置的任何规则。

REPLICATE_WILD_DO_TABLE 与一起 使用的值REPLICATE_WILD_IGNORE_TABLE必须采用以下格式 。在 MySQL 5.7.5 之前,这并没有严格执行,尽管在这些选项中使用不合格的值可能会导致错误的结果(Bug #18095449)。 db_name.tbl_name

有关更多信息,请参见第 16.2.5 节 “服务器如何评估复制过滤规则”。

MySQL 5.7 参考手册  /  ...  /  RESET SLAVE 语句
13.4.2.3 RESET SLAVE 语句
RESET SLAVE [ALL] [channel_option]channel_option:FOR CHANNEL channel

RESET SLAVE使副本忘记其在源二进制日志中的复制位置。该语句旨在用于干净启动:它清除复制元数据存储库,删除所有中继日志文件,并启动新的中继日志文件。MASTER_DELAY它还会将选项指定的复制延迟重置为 0 CHANGE MASTER TO

笔记

所有中继日志文件都将被删除,即使它们尚未被复制 SQL 线程完全执行。STOP SLAVE(如果您已发出语句或副本负载较高,则 副本上可能存在这种情况 。)

对于正在使用 GTID 的服务器(gtid_modeis ON),发出RESET SLAVE对 GTID 执行历史记录没有影响。gtid_executed该语句不会更改或 gtid_purged或 表的值 mysql.gtid_executed。如果需要重置 GTID 执行历史记录,请使用RESET MASTER,即使启用 GTID 的服务器是禁用二进制日志记录的副本。

RESET SLAVE需要 RELOAD特权。

要使用RESET SLAVE,必须停止复制线程,因此 STOP SLAVE在发出 之前 在运行的副本上使用RESET SLAVE。要在组复制组成员上使用 RESET SLAVE,成员状态必须为 OFFLINE,这意味着插件已加载,但该成员当前不属于任何组。可以通过语句使群组成员下线STOP GROUP REPLICATION。

可选子句使您能够指定该语句适用于哪个复制通道。提供子句将该 语句应用于特定的复制通道。将子句与 选项组合可删除指定的通道。如果未指定通道且不存在额外通道,则该语句适用于默认通道。当存在多个复制通道时 发出 不带子句的语句会删除所有复制通道并仅重新创建默认通道。 有关更多信息 ,请参见第 16.2.2 节 “复制通道” 。FOR CHANNEL channelFOR CHANNEL channelRESET SLAVEFOR CHANNEL channelALLRESET SLAVE ALLFOR CHANNEL channel

RESET SLAVE不会更改任何复制连接参数,例如源的主机名和端口,或者复制用户帐户名及其密码。

  • 从 MySQL 5.7.24 开始,当 master_info_repository=TABLE 在服务器上设置 时,复制连接参数将作为操作的一部分 保留在崩溃安全InnoDB表 中。它们也被保留在记忆中。如果在发出之后 但在发出之前服务器意外退出或故意重新启动,将从表中检索复制连接参数并将其重新用于新连接。 mysql.slave_master_infoRESET SLAVERESET SLAVESTART SLAVE

  • 当 master_info_repository=FILE 在服务器上设置(这是MySQL 5.7中的默认值)时,复制连接参数仅保留在内存中。如果由于服务器意外退出或故意重启而导致副本mysqld在发出后立即重新启动 RESET SLAVE,则连接参数会丢失。在这种情况下,您必须 CHANGE MASTER TO在服务器启动后发出一条语句,重新指定连接参数,然后再发出START SLAVE。

如果您想有意重置连接参数,则需要使用 RESET SLAVE ALL,它会清除连接参数。在这种情况下,您必须CHANGE MASTER TO在服务器启动后发出一条语句来指定新的连接参数。

RESET SLAVE导致正在进行的事务的隐式提交。请参见第 13.3.3 节“导致隐式提交的语句”。

如果复制 SQL 线程在停止并 RESET SLAVE发出时正在复制临时表,则这些复制的临时表将在副本上删除。

在 MySQL 5.7.5 之前,还具有重置心跳周期 ( ) 和 RESET SLAVE的效果。此问题在 MySQL 5.7.5 及更高版本中已修复。(错误#18777899、错误#18778485) Slave_heartbeat_periodSSL_VERIFY_SERVER_CERT

MySQL 5.7.5之前,RESET SLAVE ALL没有清除 .setIGNORE_SERVER_IDS设置的列表 CHANGE MASTER TO。在 MySQL 5.7.5 及更高版本中,该语句会清除列表。(错误#18816897)

笔记

在 NDB Cluster 副本 SQL 节点上使用时,RESET SLAVE清除 mysql.ndb_apply_status表。在使用此语句时应记住,该语句 ndb_apply_status使用 NDB存储引擎,因此由附加到副本集群的所有 SQL 节点共享。

您可以通过在执行之前 发出来覆盖此行为 ,这可以防止副本 在这种情况下清除表。 SET GLOBAL @@ndb_clear_apply_status=OFFRESET SLAVEndb_apply_status

MySQL 5.7 参考手册  /  ...  /  SET GLOBAL sql_slave_skip_counter 语法
13.4.2.4 SET GLOBAL sql_slave_skip_counter 语法
<span style="background-color:#ffffff"><span style="color:#555555"><span style="background-color:#f8f8f8"><span style="color:#000000"><code class="language-sql"><span style="color:#0077aa">SET</span> <span style="color:#0077aa">GLOBAL</span> sql_slave_skip_counter <span style="color:#a67f59">=</span> <em>N</em></code></span></span></span></span>

N 该语句跳过主设备的下 一个事件。这对于从语句引起的复制停止中恢复非常有用。

该语句仅在从属线程未运行时有效。否则,会产生错误。

使用此语句时,重要的是要了解二进制日志实际上是组织为称为事件组的组序列。每个事件组由一系列事件组成。

  • 对于事务表,一个事件组对应一个事务。

  • 对于非事务表,事件组对应于单个 SQL 语句。

笔记

单个事务可以包含对事务性表和非事务性表的更改。

当您使用SET GLOBAL sql_slave_skip_counter跳过事件并且结果位于组的中间时,从属设备将继续跳过事件,直到到达组的末尾。然后从下一个事件组开始执行。

MySQL 5.7 参考手册  /  ...  /  START SLAVE 语句
13.4.2.5 START SLAVE 语句
START SLAVE [thread_types] [until_option] [connection_options] [channel_option]thread_types:[thread_type [, thread_type] ... ]thread_type:IO_THREAD | SQL_THREADuntil_option:UNTIL {   {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set|   MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos|   RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos|   SQL_AFTER_MTS_GAPS  }connection_options:[USER='user_name'] [PASSWORD='user_pass'] [DEFAULT_AUTH='plugin_name'] [PLUGIN_DIR='plugin_dir']channel_option:FOR CHANNEL channelgtid_set:uuid_set [, uuid_set] ...| ''uuid_set:uuid:interval[:interval]...uuid:hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhhh:[0-9,A-F]interval:n[-n](n >= 1)

START SLAVE一起或单独启动复制线程。该声明需要 SUPER特权。START SLAVE导致正在进行的事务的隐式提交(请参见第 13.3.3 节,“导致隐式提交的语句”)。

对于螺纹类型选项,您可以指定 IO_THREADSQL_THREAD、两者都指定,或都不指定。只有启动的线程才会受到该语句的影响。

  • START SLAVE如果没有线程类型选项,则会启动所有复制线程,同时 START SLAVE使用两个线程类型选项也会启动所有复制线程。

  • IO_THREAD启动复制接收器线程,该线程从源服务器读取事件并将它们存储在中继日志中。

  • SQL_THREAD启动复制应用程序线程,该线程从中继日志中读取事件并执行它们。多线程副本( slave_parallel_workers> 0)使用协调器线程和多个应用程序线程应用事务,并SQL_THREAD启动所有这些线程。

重要的

START SLAVE所有复制线程启动后向用户发送确认。但是,复制接收器线程可能尚未成功连接到源,或者应用程序线程在启动后立即应用事件时可能会停止。START SLAVE线程启动后不会继续监视线程,因此如果线程随后停止或无法连接,它不会向您发出警告。您必须检查副本的错误日志中是否有复制线程生成的错误消息,或者检查它们是否与 SHOW SLAVE STATUS. 成功的 START SLAVE语句会导致 SHOW SLAVE STATUS显示 Slave_SQL_Running=Yes,但它可能会也可能不会显示Slave_IO_Running=Yes,因为Slave_IO_Running=Yes仅当接收器线程正在运行且已连接时才显示。有关更多信息,请参阅 第 16.1.7.1 节 “检查复制状态”。

可选子句使您能够指定该语句适用于哪个复制通道。提供子句将该 语句应用于特定的复制通道。如果未指定子句且不存在额外通道,则该语句适用于默认通道。使用多个通道时,如果 语句没有定义通道,则该语句为所有通道启动指定线程。有关更多信息 ,请参见 第 16.2.2 节 “复制通道” 。FOR CHANNEL channelFOR CHANNEL channelSTART SLAVESTART SLAVE

group_replication_applier组复制(和 ) 的复制通道group_replication_recovery由服务器实例自动管理。您可以与之交互的唯一组复制通道是 group_replication_applier通道。该通道只有applier线程,没有receiver线程,因此可以使用SQL_THREAD 不带IO_THREAD选项的选项来启动。 START SLAVE根本不能与通道一起使用 group_replication_recovery

START SLAVE支持使用、和 选项进行可插入用户密码身份验证(请参见第 6.2.13 节 “可插入身份验证”) ,如下列表中所述。使用这些选项时,必须启动接收线程(选项)或所有复制线程;您不能单独启动复制应用程序线程(选项)。 USERPASSWORDDEFAULT_AUTHPLUGIN_DIRIO_THREADSQL_THREAD

USER

帐户的用户名。PASSWORD如果使用则必须设置此项 。该选项不能设置为空或空字符串。

PASSWORD

指定用户帐户的密码。

DEFAULT_AUTH

身份验证插件的名称。默认是 MySQL 本机身份验证。

PLUGIN_DIR

身份验证插件的位置。

重要的

您设置的密码START SLAVE 在写入 MySQL 服务器的日志、性能模式表和SHOW PROCESSLIST语句时会被屏蔽。但是,它通过连接以纯文本形式发送到副本服务器实例。要保护传输中的密码,请对副本服务器实例与您用来发出 的客户端之间的连接使用 SSL/TLS 加密、SSH 隧道或其他保护连接免遭未经授权查看的方法 START SLAVE

UNTIL子句使副本开始复制,然后处理事务直到您在UNTIL子句中指定的点,然后再次停止。该UNTIL子句可用于使副本继续进行,直到您想要跳过不需要的事务的点之前,然后跳过该事务,如第 16.1.7.3 节 “跳过事务”中所述。要识别事务,可以将mysqlbinlog与源的二进制日志或副本的中继日志一起使用,或者使用 SHOW BINLOG EVENTS语句。

您还可以使用该UNTIL子句通过一次处理一个事务或分段处理事务来调试复制。如果您使用UNTIL 该子句来执行此操作,请使用选项启动副本 --skip-slave-start以防止在副本服务器启动时运行 SQL 线程。该过程完成后删除该选项,以便在服务器意外重启时不会忘记该选项。

该SHOW SLAVE STATUS语句包括显示条件当前值的输出字段 UNTILUNTIL 只要受影响的线程仍在运行, 该情况就会持续,并在线程停止时被删除。

UNTIL子句在复制应用程序线程(SQL_THREAD选项)上运行。您可以使用该SQL_THREAD选项或让副本默认启动两个线程。如果单独使用该 IO_THREAD选项,该 UNTIL子句将被忽略,因为应用程序线程未启动。

您在子句中指定的点UNTIL 可以是以下选项中的任何一个(且只能是一个):

SOURCE_LOG_FILE和 SOURCE_LOG_POS

这些选项使复制应用程序将事务处理到其中继日志中的某个位置,该位置由源服务器上二进制日志中相应点的文件名和文件位置标识。应用程序线程在指定位置或指定位置之后找到最近的事务边界,完成应用事务,并在那里停止。

RELAY_LOG_FILE和 RELAY_LOG_POS

这些选项使复制应用程序将事务处理到副本中继日志中的某个位置,该位置由中继日志文件名和该文件中的位置标识。应用程序线程在指定位置或指定位置之后找到最近的事务边界,完成应用事务,并在那里停止。

SQL_BEFORE_GTIDS

此选项使复制应用程序开始处理事务,并在遇到指定 GTID 集中的任何事务时停止。不应用 GTID 集中遇到的事务,也不应用 GTID 集中的任何其他事务。该选项采用包含一个或多个全局事务标识符的 GTID 集作为参数(请参阅 GTID 集)。GTID集中的事务不一定按照其GTID的顺序出现在复制流中,因此应用程序停止之前的事务不一定是最早的。

SQL_AFTER_GTIDS

此选项使复制应用程序开始处理事务,并在处理完指定 GTID 集中的所有事务后停止。该选项采用包含一个或多个全局事务标识符的 GTID 集作为参数(请参阅 GTID 集)。

使用 时SQL_AFTER_GTIDS,复制线程在处理完 GTID 集中的所有事务后停止。事务按照接收到的顺序进行处理,因此这些事务可能不属于 GTID 集,但在提交该集中的所有事务之前接收(并处理)这些事务。例如,执行 START SLAVE UNTIL SQL_AFTER_GTIDS = 3E11FA47-71CA-11E1-9E33-C80AA9429562:11-56 会导致副本从源获取(并处理)所有事务,直到处理完具有序列号 11 到 56 的所有事务,然后在到达该点后停止而不处理任何其他事务。

SQL_AFTER_GTIDS与多线程从站不兼容。如果此选项与多线程从属设备一起使用,则会发出警告,并且从属设备切换到单线程模式。根据使用情况,可以使用START SLAVE UNTIL MASTER_LOG_POSSTART SLAVE UNTIL SQL_BEFORE_GTIDS来代替。您还可以使用 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(),它会等待直到到达正确的位置,但不会停止从属线程。

SQL_AFTER_MTS_GAPS

仅对于多线程副本( slave_parallel_workers> 0),此选项使副本处理事务直到从中继日志执行的事务序列中不再有间隙。使用多线程副本时,在以下情况下可能会出现间隙:

  • 协调器线程已停止。

  • 应用程序线程中发生错误。

  • mysqld意外关闭。

当复制通道存在间隙时,副本的数据库将处于源上可能从未存在过的状态。副本在内部跟踪间隙,并不允许CHANGE MASTER TO 执行会删除间隙信息的语句。

START SLAVE在从中继日志执行的事务序列中存在间隙的多线程副本上发出会生成警告 。要纠正这种情况,解决方案是使用START SLAVE UNTIL SQL_AFTER_MTS_GAPS. 有关更多信息,请参阅 第 16.4.1.32 节“复制和事务不一致” 。

如果需要将失败的多线程副本更改为单线程模式,可以按所示顺序发出以下一系列语句:

START SLAVE UNTIL SQL_AFTER_MTS_GAPS;
SET @@GLOBAL.slave_parallel_workers = 0;
START SLAVE SQL_THREAD;
MySQL 5.7 参考手册  /  ...  /  STOP SLAVE 语句
13.4.2.6 停止从属语句
STOP SLAVE [thread_types] [channel_option]thread_types:[thread_type [, thread_type] ... ]thread_type: IO_THREAD | SQL_THREADchannel_option:FOR CHANNEL channel

停止复制线程。STOP SLAVE需要 SUPER特权。STOP SLAVE建议的最佳实践是在停止副本服务器之前在副本上 执行(有关更多信息,请参阅第 5.1.16 节 “服务器关闭过程”)。

使用基于行的日志记录格式时:如果要复制任何使用非事务性存储引擎的表,则应在关闭副本服务器之前在副本上 STOP SLAVE或 (请参阅本节后面的注释)。 STOP SLAVE SQL_THREAD

与 一样,该语句可以与和 选项START SLAVE一起使用来命名要停止的一个或多个线程。请注意,组复制应用程序通道 ( ) 没有复制 I/O 线程,只有复制 SQL 线程。因此,使用该 选项可以完全停止该通道。 IO_THREADSQL_THREADgroup_replication_applierSQL_THREAD

STOP SLAVE导致正在进行的事务的隐式提交。请参见第 13.3.3 节“导致隐式提交的语句”。

gtid_nextAUTOMATIC必须在发出此语句之前 设置为 。

STOP SLAVE您可以通过设置 系统变量来 控制超时之前等待的时间rpl_stop_slave_timeout。这可用于避免 STOP SLAVE使用与副本的不同客户端连接的其他 SQL 语句之间的死锁。当达到超时值时,发出请求的客户端返回错误消息并停止等待,但STOP SLAVE 指令仍然有效。一旦复制线程不再繁忙,STOP SLAVE就会执行该语句并且副本会停止。

CHANGE MASTER TO副本运行时允许使用 某些语句,具体取决于复制 SQL 线程和复制 I/O 线程的状态。但是,在这种情况下,仍然支持STOP SLAVE在执行之前 使用。有关更多信息, CHANGE MASTER TO请参阅第 13.4.2.1 节“CHANGE MASTER TO 语句”和 第 16.3.7 节“故障转移期间切换源” 。

可选子句使您能够指定该语句适用于哪个复制通道。提供子句将该 语句应用于特定的复制通道。如果未指定通道且不存在额外通道,则该语句适用于默认通道。如果在使用多个通道时语句未命名通道,则该语句将停止所有通道的指定线程。该语句不能与通道一起使用 。有关更多信息 ,请参见第 16.2.2 节 “复制通道” 。FOR CHANNEL channelFOR CHANNEL channelSTOP SLAVESTOP SLAVEgroup_replication_recovery

使用基于语句的复制时:在源打开临时表时更改源可能不安全。这是不建议基于语句的临时表复制的原因之一。Slave_open_temp_tables您可以通过检查;的值来了解副本上是否有临时表。 当使用基于语句的复制时,执行前该值应为 0CHANGE MASTER TO。如果副本上打开了任何临时表,则CHANGE MASTER TO在发出一条语句后发出一条语句STOP SLAVE会导致 ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO 警告。

使用多线程副本(slave_parallel_workers是非零值)时,从中继日志执行的事务序列中的任何间隙都会作为停止工作线程的一部分而被关闭。如果在执行语句时副本意外停止(例如,由于工作线程中的错误或另一个线程发出KILL) STOP SLAVE,中继日志中执行的事务的顺序可能会变得不一致。有关更多信息,请参阅 第 16.4.1.32 节“复制和事务不一致”。

如果当前复制事件组已修改一个或多个非事务表,则 STOP SLAVE 将等待最多 60 秒以等待事件组完成,除非您 为复制 SQL 线程发出KILL QUERYor 语句。KILL CONNECTION如果超时后事件组仍然不完整,则会记录一条错误消息。

相关文章:

MySQL5.7用于控制副本服务器的 SQL 语句

官网地址&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 13.4.2 SQL Statements for Controlling Replica Servers 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 5.7 参考手册 / ... / CHANGE M…...

stable diffusion 人物高级提示词(四)朝向、画面范围、远近、焦距、机位、拍摄角度

一、朝向 英文中文front view正面Profile view / from side侧面half-front view半正面Back view背面(quarter front view:1.5)四分之一正面 prompt/英文中文翻译looking at the camera看向镜头facing the camera面对镜头turned towards the camera转向镜头looking away from …...

C#.Net学习笔记——设计模式六大原则

***************基础介绍*************** 1、单一职责原则 2、里氏替换原则 3、依赖倒置原则 4、接口隔离原则 5、迪米特法原则 6、开闭原则 一、单一职责原则 举例&#xff1a;类T负责两个不同的职责&#xff1a;职责P1&#xff0c;职责P2。当由于职责P1需求发生改变而需要修…...

go 修改postgresql的配置参数

postgresql.conf与postgresql.auto.conf的区别 postgresql.auto.conf的优先级高于postgresql.conf&#xff0c;如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面&#xff0c;系统会先读postgresql.auto.conf的参数配置。 使用alter system set修改的是postgres…...

解决word图片格式错乱、回车图片不跟着换行的问题

解决word图片格式错乱、回车图片不跟着换行的问题 1.解决方法。 先设置为嵌入型 但是设置的话会出现下面的问题。图片显示不全。 进一步设置对应的行间距&#xff0c;原先设置的是固定值&#xff0c;需要改为1.5倍行距的形式&#xff0c;也就是说不能设置成固定值就可以。...

密码学(二)

文章目录 前言一、Certificate Authorities二、Key Agreement Protocols 前言 本文来自 Intel SGX Explained 请参考&#xff1a;密码学&#xff08;一&#xff09; 一、Certificate Authorities 非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。…...

mysql进阶-视图

目录 1. 用途 2. 语法 2.1 创建或替换视图 2.2 修改视图 2.3 查看视图&#xff1a; 2.4 删除视图&#xff1a; 3. 其他 3.1 操作视图 3.2 迁移数据库 1. 用途 视图可以理解为一个复杂查询的简称&#xff0c;它可以帮助我们简化查询&#xff0c;主要用于报表查询:例如…...

力扣-34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 力扣题目代码 力扣题目 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算…...

Cesium笔记 初始化 使用Vue-Cesium 组件

参考 A Vue 3 based component library of CesiumJS for developers | Vue for CesiumVue for Cesium, a Vue 3.x based component library of CesiumJS for GISerhttps://zouyaoji.top/vue-cesium/#/zh-CN/component/quickstart...

QTday2作业

思维导图: 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数; 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断u界面上输入的账号是否为"admin"&#xff0c…...

scVI与MultiVI

scVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html MultiVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/multivi.html 目录 scVI生成推理任务 MultiVI生成推理 scVI single cell variational inference提出了一个…...

java Servlet体育馆运营管理系统myeclipse开发mysql数据库网页mvc模式java编程计算机网页设计

一、源码特点 JSP 体育馆运营管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用serlvetdaobean&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…...

2、UML类图

UML(Unified Modeling Language)统一建模语言&#xff0c;用来进行设计软件的可视化建模语言。 2.1 类图概述 类类图(Class diagram)是显示了模型的静态结构&#xff0c;特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。类图是面向对象建模的主要组成部分。 2.…...

2023 年度合辑 | 出海大年的全球化产品洞察和服务动向

2023 年度合辑 年度关键词 出海&全球化 出海 & 全球化通信服务全面升维 出海大年&#xff0c;融云全球互联网通信云作为“全球化最佳基础设施”之一&#xff0c;发挥技术沉淀和实践积累带来的核心优势&#xff0c;结合市场变化对出海 & 全球化通信服务进行了全方位…...

python 基础笔记

基本数据类型 函数 lamda 匿名函数 成员方法 类 类与对象 构造方法 魔术方法 私有成员 私有方法 继承 注解 变量注解 函数注解 Union类型 多态 参考链接&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了_哔哩哔哩_bilib…...

[原创][R语言]股票分析实战[8]:因子与subset的关系

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…...

uniapp使用tcp和udp的区别和例子

在Node.js中&#xff0c;主要有三种socket&#xff1a;TCP&#xff0c;UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例&#xff1a; TCP socket TCP socket提供了可靠的、面向连接的通信流&#xff0c;适用于需要可靠传输的应用&#xff0c;例如Web浏览器的HTTP请…...

静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1VN4y1q7cz/?vd_source5f425e0074a7f92921f53ab87712357b 源码&#xff1a;https://space.bilibili.co…...

APP出海需知——Admob广告变现竞价策略

越来越多的出海公司更加重视应用的广告变现&#xff0c;Admob因其提供丰富的广告资源&#xff0c;稳定的平台支持&#xff0c;被广泛采用接入。 Admob广告变现策略 1、bidding竞价策略 Bidding目前是Admob广泛推广的较成熟的变现方案&#xff0c;当竞价网络和瀑布流混合时&a…...

微服务实战系列之API加密

前言 随着一阵阵凛冽寒风的呼啸&#xff0c;新的年轮不知不觉滚滚而来。故事随着2023的远去&#xff0c;尘封于案底&#xff1b;希望迎着新年&#xff0c;绽放于枝头。在2024新岁启航&#xff0c;扬帆破浪之时&#xff0c;让烦恼抛洒于九霄&#xff0c;让生机蓬勃于朝朝暮暮。 …...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...