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如果超时后事件组仍然不完整,则会记录一条错误消息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/594974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言多线程编程-线程间通信

介绍 在C语言中&#xff0c;采用多线程编程&#xff0c;我们经常会遇到&#xff0c;线程之前需要同步数据&#xff0c;或者一个线程处理后的的数据&#xff0c;需要给另外一个线程进行处理&#xff0c;这就需要线程之间进行通讯&#xff0c;多线程间的通信和同步是通过操作系统…

计算机系统基础

C 语言相关内容省略&#xff0c;复习自用&#xff0c;仅供参考~ 概述 冯诺伊曼结构 存储程序工作方式&#xff1a;将事先编好的程序和原始数据送入主存后才能执行程序&#xff0c;程序被启动执行后&#xff0c;计算机能在不需要操作人员干预下自动完成逐条指令取出和执行的任…

Toast.makeText()的使用方法

Toast.makeText()的使用方法 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在今天的文章中&#xff0c;我们将深入讨论Android开发中一个常用而且便捷的UI组件——…

奋楫扬帆,奔赴新程 | 2023 年图扑大事记回顾,与您携手共迎 2024

2023.01 工信部公示了 2022 年度智能制造示范工厂揭榜单位和优秀场景名单。图扑软件和上海洲邦合作建设的宁波甬友数字孪生工厂被评为优秀场景&#xff0c;全国共有 369 个智能制造典型场景入选。 2023.01 在第十一届中国创新创业大赛全国赛&#xff08;新一代信息技术&#…

RabbitMQ(八)消息的序列化

目录 一、为什么需要消息序列化&#xff1f;二、常用的消息序列化方式1&#xff09;Java原生序列化&#xff08;默认&#xff09;2&#xff09;JSON格式3&#xff09;Protobuf 格式4&#xff09;Avro 格式5&#xff09;MessagePack 格式 三、总结 RabbitMQ 是一个强大的消息中间…

Hadoop分布式文件系统(二)

一、Hadoop 1、文件系统 1.1、文件系统定义 文件系统是一种存储和组织数据的方法&#xff0c;实现了数据的存储、分级组织、访问和获取等操作&#xff0c;使得用户对文件访问和查找变得容易。 文件系统使用树形目录的抽象逻辑概念代替了硬盘等物理设备使用数据块的概念&#…

通信基础——带宽

随着信息社会的发展和数字化进程的加速&#xff0c;通信技术已经成为现代社会最为重要的基础设施之一。而在通信技术中&#xff0c;带宽作为一个重要的概念&#xff0c;对于我们理解和应用现代通信技术具有至关重要的意义。本文将以“通信基础——带宽”为主题&#xff0c;对带…

高性能NVMe Host Controller IP

NVMe Host Controller IP 介绍 NVMe Host Controller IP可以连接高速存储PCIe SSD&#xff0c;无需CPU和外部存储器&#xff0c;自动加速处理所有的NVMe协议命令&#xff0c;具备独立的数据写入AXI4-Stream/FIFO接口和数据读取AXI4-Stream/FIFO接口&#xff0c;非常适合于超高…

华芯微特MCU之TIMER触发ADC

01 TIMER定时器之脉冲发送功能 我们今天详细讲解一下TIMER的ADC触发功能。 SWM190的TIMER2/3支持SAR ADC触发功能&#xff0c;此功能配置为定时器或脉冲发送均有效&#xff0c;可通过配置相应寄存器实现。 将SAR ADC CTRL寄存器中TRIG设置为TIMER2触发或TIMER3触发。TIMER可作…

技术旅程分享:收获与成长的探索

2023年对我而言是充满挑战和机遇的一年&#xff0c;我在这段时间里积累了丰富的技术经验和个人成长。通过不懈努力和持续学习&#xff0c;我在技术领域迈出了一系列坚实的步伐。在这篇文章中&#xff0c;我将分享我在这段时间中的收获和技术成长经历&#xff0c;与CSDN的朋友们…

数据库存储过程

存储过程(特定功能的 SQL 语句集) 一组为了完成特定功能的 SQL 语句集&#xff0c;存储在数据库中&#xff0c;经过第一次编译后再次调用不需要再次编译&#xff0c;用户通过指定存储过程的名字并给出参数&#xff08;如果该存储过程带有参数&#xff09;来执行它。存储过程是…

vue的小入门

vue的快速上手 Vue概念 是一个用于构建用户界面的渐进式框架优点&#xff1a;大大提高开发效率缺点&#xff1a;需要理解记忆规则 创建Vue实例 步骤&#xff1a; 准备容器引包创建Vue实例new Vue()指定配置项el data>渲染数据 el指定挂载点&#xff0c;选择器指定控制…

解决burpsuite代理8080端口无法勾选以及卸载NI系列软件的方法

使用burpsuite中遇到这样一个问题 默认的8080端口无法绑定 提示端口已经被占用 尝试绑定其他端口&#xff0c;是可行的&#xff0c;也可以正常抓包 但是总感觉每次进来都设置添加一次&#xff0c;有点麻烦不舒服 那么我们来看一下8080端口到底被什么进程占用了 使用如下命令…

计算机视觉中的神经网络可视化工具与项目

前言 本文介绍了一些关于神经网络可视化的项目&#xff0c;主要有CNN解释器&#xff0c;特征图、卷积核、类可视化的一些代码和项目&#xff0c;结构可视化工具&#xff0c;网络结构手动画图工具。 CNN解释器 这是一个中国博士发布的名叫CNN解释器的在线交互可视化工具。 主要…

下载的 MongoDB bin目录下没有mongo.exe文件问题解决

MongoDB 4.4版本之前&#xff0c;我们可以在MongoDB的安装目录的bin文件夹中找到mongo.exe这个命令行工具。但是从MongoDB 4.4版本开始&#xff0c;MongoDB官方已经不再提供独立的mongo.exe可执行文件&#xff0c;而是将其整合到了mongosh这个新的交互式Shell中。 我们可以访问…

云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— DevEco Studio下载与安装

一、下载DevEco Studio IDE开发工具 1. 登录鸿蒙官网 网址为&#xff1a; ​​​​​​​华为HarmonyOS智能终端操作系统官网 | 应用设备分布式开发者生态 页面如下&#xff1a; 2. 搜索“DevEco Studio IDE” 点击右上角的“请输入关键词”&#xff0c;在其中搜索“DevEc…

基础面试题

1.java基础 什么是Java虚拟机&#xff1f;为什么Java被称作是“平台无关的编程语言”&#xff1f;Java的”一次编写&#xff0c;处处运行”是如何实现的&#xff1f; Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Ja…

华为OD机试 - 寻找最优的路测线路(Java JS Python C)

题目描述 评估一个网络的信号质量,其中一个做法是将网络划分为栅格,然后对每个栅格的信号质量计算。 路测的时候,希望选择一条信号最好的路线(彼此相连的栅格集合)进行演示。 现给出 R 行 C 列的整数数组 Cov,每个单元格的数值 S 即为该栅格的信号质量(已归一化,无单…

Python Web框架FastAPI——一个比Flask和Tornada更高性能的API框架

目录 一、FastAPI框架概述 二、FastAPI与Flask和Tornado的性能对比 1、路由性能 2、请求处理性能 3、内存占用 三、FastAPI的优点与特色 四、代码示例 五、注意事项 六、结论 在当今的软件开发领域&#xff0c;快速、高效地构建API成为了许多项目的关键需求。为了满足…