MySQL5.7用于控制副本服务器的 SQL 语句
官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.4.2 SQL Statements for Controlling Replica Servers
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
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
channel
FOR CHANNEL
channel
CHANGE 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_HOST
、MASTER_USER
、 MASTER_PASSWORD
、 并向 MASTER_PORT
副本提供有关如何连接到其复制源服务器的信息:
-
MASTER_HOST
和MASTER_PORT
是主控主机的主机名(或 IP 地址)及其 TCP/IP 端口。笔记复制不能使用 Unix 套接字文件。您必须能够使用 TCP/IP 连接到复制源服务器。
如果指定
MASTER_HOST
或MASTER_PORT
选项,副本将假定源与之前不同(即使选项值与其当前值相同。)在这种情况下,将考虑源二进制日志文件名和位置的旧值不再适用,因此如果您不在声明中 指定MASTER_LOG_FILE
and ,则 and 会默默地附加到它后面。MASTER_LOG_POS
MASTER_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
\n
0x0A
ER_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=REQUIRED
MASTER_SSL=1
--ssl-mode=PREFERRED
MASTER_SSL=0
--ssl-mode=DISABLED
为了帮助防止复杂的中间人攻击,副本验证服务器的身份非常重要。您可以指定 与 设置相对应的附加选项 MASTER_SSL_
xxx
--ssl-mode=VERIFY_CA
--ssl-mode=VERIFY_IDENTITY
,这是比默认设置更好的选择,有助于防止此类攻击。通过这些设置,副本会检查服务器的证书是否有效,并检查副本所使用的主机名是否与服务器证书中的标识相匹配。要实现这些级别的验证之一,您必须首先确保服务器的 CA 证书可供副本可靠地使用,否则将导致可用性问题。因此,它们不是默认设置。
选项 和选项指定副本如何使用加密和密码来保护复制连接。即使在不支持 SSL 的情况下编译的副本上,也可以更改这些选项。它们会保存到源元数据存储库,但如果副本未启用 SSL 支持,则会被忽略。和 选项执行的功能与 加密连接的命令选项中描述的 和 客户端选项 相同。两组选项的对应关系以及 和的使用MASTER_SSL_
xxx
MASTER_TLS_VERSION
MASTER_SSL_
xxx
MASTER_TLS_VERSION
--ssl-
xxx
--tls-version
MASTER_SSL_
xxx
MASTER_TLS_VERSION
设置安全连接的选项,在 第 16.3.8 节 “设置复制以使用加密连接”中进行了解释。
、和 选项控制副本如何识别与源的连接已丢失MASTER_HEARTBEAT_PERIOD
并 尝试重新连接。 MASTER_CONNECT_RETRY
MASTER_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_HOST
MASTER_PORT
MASTER_LOG_FILE
MASTER_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 TO
CHANGE MASTER TO
-
如果 SQL 线程停止,您可以 使用、 和 选项
CHANGE MASTER TO
允许的任意组合 执行,即使复制 I/O 线程正在运行也是如此。当 I/O 线程运行时,此语句不能使用其他选项。RELAY_LOG_FILE
RELAY_LOG_POS
MASTER_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_HOST | 60 |
MASTER_USER | 96 |
MASTER_PASSWORD | 32 |
MASTER_LOG_FILE | 511 |
RELAY_LOG_FILE | 511 |
MASTER_SSL_CA | 511 |
MASTER_SSL_CAPATH | 511 |
MASTER_SSL_CERT | 511 |
MASTER_SSL_CRL | 511 |
MASTER_SSL_CRLPATH | 511 |
MASTER_SSL_KEY | 511 |
MASTER_SSL_CIPHER | 511 |
MASTER_TLS_VERSION | 511 |
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
-
该语句不需要重新启动服务器即可生效,只需STOP SLAVE SQL_THREAD先停止使用复制SQL线程(然后重新启动 START SLAVE SQL_THREAD)即可。
-
该声明的影响不是持久的;
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
表示数据库名称对;每个这样的值都必须括在括号中。以下语句将 源 数据库上发生的语句重写为副本数据库上的语句: db1
db2
CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));
刚刚显示的语句包含两组括号,一组括着一对数据库名称,另一组括着整个列表。这在以下示例中可能更容易看出,该示例创建了两条 rewrite-db
规则,一条将数据库重写 dbA
为dbB
,一条将数据库重写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 节 “服务器如何评估复制过滤规则”。
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
channel
FOR CHANNEL
channel
RESET SLAVE
FOR CHANNEL
channel
ALL
RESET SLAVE ALLFOR CHANNEL
channel
RESET SLAVE不会更改任何复制连接参数,例如源的主机名和端口,或者复制用户帐户名及其密码。
-
从 MySQL 5.7.24 开始,当 master_info_repository=TABLE 在服务器上设置 时,复制连接参数将作为操作的一部分 保留在崩溃安全
InnoDB
表 中。它们也被保留在记忆中。如果在发出之后 但在发出之前服务器意外退出或故意重新启动,将从表中检索复制连接参数并将其重新用于新连接。mysql.slave_master_info
RESET 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 SLAVE
ndb_apply_status
<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跳过事件并且结果位于组的中间时,从属设备将继续跳过事件,直到到达组的末尾。然后从下一个事件组开始执行。
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_THREAD
、SQL_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
channel
FOR CHANNEL
channel
START SLAVE
START 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 节 “可插入身份验证”) ,如下列表中所述。使用这些选项时,必须启动接收线程(选项)或所有复制线程;您不能单独启动复制应用程序线程(选项)。 USER
PASSWORD
DEFAULT_AUTH
PLUGIN_DIR
IO_THREAD
SQL_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语句包括显示条件当前值的输出字段 UNTIL
。UNTIL
只要受影响的线程仍在运行, 该情况就会持续,并在线程停止时被删除。
该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_POS
或START 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;
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_THREAD
SQL_THREAD
group_replication_applier
SQL_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
channel
FOR CHANNEL
channel
STOP SLAVE
STOP SLAVE
group_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 语句
官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.4.2 SQL Statements for Controlling Replica Servers 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 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、开闭原则 一、单一职责原则 举例:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修…...
go 修改postgresql的配置参数
postgresql.conf与postgresql.auto.conf的区别 postgresql.auto.conf的优先级高于postgresql.conf,如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面,系统会先读postgresql.auto.conf的参数配置。 使用alter system set修改的是postgres…...
解决word图片格式错乱、回车图片不跟着换行的问题
解决word图片格式错乱、回车图片不跟着换行的问题 1.解决方法。 先设置为嵌入型 但是设置的话会出现下面的问题。图片显示不全。 进一步设置对应的行间距,原先设置的是固定值,需要改为1.5倍行距的形式,也就是说不能设置成固定值就可以。...
密码学(二)
文章目录 前言一、Certificate Authorities二、Key Agreement Protocols 前言 本文来自 Intel SGX Explained 请参考:密码学(一) 一、Certificate Authorities 非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。…...
mysql进阶-视图
目录 1. 用途 2. 语法 2.1 创建或替换视图 2.2 修改视图 2.3 查看视图: 2.4 删除视图: 3. 其他 3.1 操作视图 3.2 迁移数据库 1. 用途 视图可以理解为一个复杂查询的简称,它可以帮助我们简化查询,主要用于报表查询:例如…...
力扣-34. 在排序数组中查找元素的第一个和最后一个位置
文章目录 力扣题目代码 力扣题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-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作业
思维导图: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数; 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断u界面上输入的账号是否为"admin",…...
scVI与MultiVI
scVI:https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html MultiVI: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信息管理系统,对理解JSP java编程开发语言有帮助,系统采用serlvetdaobean,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…...
2、UML类图
UML(Unified Modeling Language)统一建模语言,用来进行设计软件的可视化建模语言。 2.1 类图概述 类类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。类图是面向对象建模的主要组成部分。 2.…...
2023 年度合辑 | 出海大年的全球化产品洞察和服务动向
2023 年度合辑 年度关键词 出海&全球化 出海 & 全球化通信服务全面升维 出海大年,融云全球互联网通信云作为“全球化最佳基础设施”之一,发挥技术沉淀和实践积累带来的核心优势,结合市场变化对出海 & 全球化通信服务进行了全方位…...
python 基础笔记
基本数据类型 函数 lamda 匿名函数 成员方法 类 类与对象 构造方法 魔术方法 私有成员 私有方法 继承 注解 变量注解 函数注解 Union类型 多态 参考链接:黑马程序员python教程,8天python从入门到精通,学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中,主要有三种socket:TCP,UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例: TCP socket TCP socket提供了可靠的、面向连接的通信流,适用于需要可靠传输的应用,例如Web浏览器的HTTP请…...
静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)
前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1VN4y1q7cz/?vd_source5f425e0074a7f92921f53ab87712357b 源码:https://space.bilibili.co…...
APP出海需知——Admob广告变现竞价策略
越来越多的出海公司更加重视应用的广告变现,Admob因其提供丰富的广告资源,稳定的平台支持,被广泛采用接入。 Admob广告变现策略 1、bidding竞价策略 Bidding目前是Admob广泛推广的较成熟的变现方案,当竞价网络和瀑布流混合时&a…...
微服务实战系列之API加密
前言 随着一阵阵凛冽寒风的呼啸,新的年轮不知不觉滚滚而来。故事随着2023的远去,尘封于案底;希望迎着新年,绽放于枝头。在2024新岁启航,扬帆破浪之时,让烦恼抛洒于九霄,让生机蓬勃于朝朝暮暮。 …...
android apk文件的签名问题
android的APK文件实际上是一个jar文件。jar的意思是瓶、罐,那就意味着jar文件是一个用来存放android应用相关文件的容器。事实上,它也确实如此,它只是一个带或不带压缩的zip文件,当你把.apk后缀改成.zip后,就能对此进行…...
ATTCK视角下的信息收集:主机发现
目录 1、利用协议主动探测主机存活 利用ICMP发现主机 利用ARP发现主机 利用NetBIOS协议发现主机 利用TCP/UDP发现主机 利用DNS协议发现主机 利用PRC协议发现主机程序 2、被动主机存活检测 利用Browser主机探测存活主机 利用ip段探测主机存活 利用net命令探测主机存活…...
Redis 主从、哨兵和分片集群简单介绍
Redis 主从集群架构 单节点 redis 并发能力有上限,要进一步提高 redis 并发能力,就要搭建主从集群,实现读写分离 主从同步原理 Replicaition id:每台 master 机器都一个 repl_id,是数据集的表示,若 salv…...
群晖NAS+DMS7.0以上版本+无docker机型安装zerotier
测试机型:群晖synology 218play / DSM版本为7.2.1 因218play无法安装docker,且NAS系统已升级为7.0以上版本,按zerotier官网说法无法安装zerotier, 不过还是可以通过ssh终端和命令方式安装zerotier。 1、在DSM新建文件夹 用于存放zerotier脚…...
Pinia持久化存储插件 pinia-plugin-persist
1、pinia-plugin-persist 作用 pinia-plugin-persist是一个Pinia持久化存储插件,用于将Pinia状态存储到本地持久化存储中,例如localStorage或sessionStorage。 2、安装和使用pinia-plugin-persist 有时候需要把pinia中的数据持久化存储(存到…...
链家JAVA笔试题
单选题 1、在Java中下列关于自动类型转换说法正确的是( )。 A. 基本数据类型和String相加结果一定是字符串型 B. char类型和int类型相加结果一定是字符 C. double类型可以自动转换成int D. char int double “ ”结果一定是double 参考答案&am…...
当试图回复传入消息时,消息应用程序会闪烁
问题描述: Actual Results: Unable to reply for incoming message as Messaging app flickers and closes. Expected Results: User should be able to send reply for incoming messages. Reproduction Steps: Stay in home screen. Receive an incoming mes…...
Hubery-个人项目经历记录
研究生期间很有幸的进入到了崔老师的组,从此也就进入到了分析人体生理信号的领域,充满挑战的同时也充满了乐趣。借着CSDN整理一下近几年来参与的项目,这里蕴含着我各种美好的回忆,也作为一个展示自己的平台吧。博客中很多结果只给…...
Ubuntu18.04 安装 qt 5.15.2
一.安装qt 1.下载 在线安装包 使用国内镜像源在线安装QT(2023.3.25更新)_qt国内镜像-CSDN博客 2.安装 (1)QT库安装: 注意:我安装时 勾选 Qt Design studio 会导致报错,直接不勾选。 注意:Qtcreator 无…...
【Linux Shell】6. echo 命令
文章目录 【 1. 显示普通字符串 】【 2. 显示转义字符 】【 3. 显示变量 】【 4. 显示换行 】【 5. 显示不换行 】【 6. 显示命令执行结果 】 Shell 的 echo 指令用于字符串的输出。命令格式: echo string【 1. 显示普通字符串 】 #!/bin/bashecho "It is a …...
北京做网站的大公司/黑帽seo优化
题目链接 题目大意 给你一个n,要你找出长度为n的数可以被210整除 题目思路 emm这都没做出来。。。。显然这种题目是找规律题目,打个表找个规律就出来了 代码 #include<cstdio> #include<cstring> #include<algorithm> using nam…...
佛山网站建设哪家便宜/怎样在百度打广告
前言 想要成為一名優秀的Android開發,你需要一份完備的 知識體系,在這裏,讓我們一起成長為自己所想的那樣。 金九银十是大家的換工作潮,在這波浪潮裡沉浮的我經歷過快一個月的面試後,決定把這些遇到的問題記下來 加…...
哪里网站建设好/个人网站制作
centos7 x64系统 集成 mysqljdkmavengitredis1 下载jdk8https://download.csdn.net/download/qq_25958497/10656949 2 放到liunx服务器/home/java-software 目录下 3 解压jdk jdk-8u171-linux-x64.tar.gz是当前文件 -C是指定解压目录tar zxvf jdk-8u171-linux-x64.tar.gz -C /…...
做外贸需要做国外的网站吗/seo工程师招聘
3 进程与线程 既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息。调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺。 3.1 进程命令 进程命令包括这些内容:显示进程列表、进程环境块、设置进程环境。 进程列表 …...
网站 用户体验/淘宝代运营公司排名
登录页面 我们首先来实现登录页面的功能,将使用Django提供的默认登录视图函数,因此ULR模式会稍有些不同 在目录learning_log/users/中,新建一个名为users.py文件修改urls.py """为应用程序users定义URL模式"""…...
godaddy托管wordpress/不能搜的超级恶心的关键词
就是这个问题,求知道怎么解决的帮个忙,谢谢回复讨论(解决方案)点击details看看details点击后,里面一大串英文,不知道怎么解决可以把英文截图出来看看An error occurred while collecting items to be installedsession context wa…...