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

手机网站建设制作公司培训机构官网

手机网站建设制作公司,培训机构官网,如何搭建微网站,域名进行网站备案吗介绍 除了内置的异步复制之外#xff0c;MySQL 5.7 还支持通过插件实现的半同步复制接口。本节讨论半同步复制的概念及其工作原理。接下来的部分将涵盖与半同步复制相关的管理界面#xff0c;以及如何安装、配置和监控它。 异步复制 MySQL 复制默认是异步的。源服务器将事…介绍 除了内置的异步复制之外MySQL 5.7 还支持通过插件实现的半同步复制接口。本节讨论半同步复制的概念及其工作原理。接下来的部分将涵盖与半同步复制相关的管理界面以及如何安装、配置和监控它。 异步复制 MySQL 复制默认是异步的。源服务器将事件写入其二进制日志而复制服务器在准备好时请求这些事件。源服务器不知道复制服务器是否已检索和处理了事务也无法保证任何事件是否曾到达任何复制服务器。在异步复制中如果源服务器崩溃已提交的事务可能尚未传输到任何复制服务器。在这种情况下从源服务器切换到复制服务器可能导致切换到相对于源服务器缺失事务的服务器。 完全同步复制 在完全同步复制中当源服务器提交一个事务时所有复制服务器必须在源服务器返回到执行事务的会话之前也提交该事务。完全同步复制意味着可以随时从源服务器切换到任何复制服务器。完全同步复制的缺点是可能会有很大的延迟来完成一个事务。 半同步复制 半同步复制介于异步和完全同步复制之间。源服务器等待至少一个复制服务器接收并记录事件所需数量的复制服务器是可配置的然后提交事务。源服务器不等待所有复制服务器确认接收只需要复制服务器的确认而不需要事件在复制服务器上完全执行和提交。因此半同步复制确保如果源服务器崩溃它已提交的所有事务都已传输至少一个复制服务器。 三种复制方式对比 与异步复制相比半同步复制提供了更高的数据完整性因为当提交成功返回时我们知道数据存在于至少两个位置。在半同步源服务器收到所需数量的复制服务器确认之前事务将暂停并未提交。 与完全同步复制相比半同步复制更快因为它可以配置以平衡数据完整性的要求确认事务接收的复制服务器数量与提交速度之间的关系而提交速度较慢是因为需要等待复制服务器。 与异步复制相比半同步复制对性能的影响是为了提高数据完整性而进行的权衡。减慢的程度至少等于将提交发送到复制服务器并等待复制服务器确认接收的 TCP/IP 往返时间。这意味着半同步复制在快速网络上进行通信的紧密服务器之间效果最佳而在慢速网络上进行通信的远程服务器之间效果最差。半同步复制还通过限制从源服务器到复制服务器发送二进制日志事件的速度对繁忙会话进行了速率限制。当某个用户过于繁忙时这会减缓其速度在某些部署情况下可能会很有用。 半同步复制在源服务器和其复制服务器之间的操作如下 当复制服务器连接到源服务器时复制服务器指示其是否支持半同步。 如果源服务器启用了半同步复制并且至少有一个半同步复制的复制服务器执行在源服务器上进行的事务提交的线程将被阻塞并等待至少一个半同步复制的复制服务器确认已接收该事务的所有事件或者直到发生超时。 复制服务器确认接收事务的事件仅在事件已写入其中继日志并刷新到磁盘后才会发生。 如果发生超时而没有任何复制服务器确认事务则源服务器将回退到异步复制。当至少一个半同步复制的复制服务器赶上时源服务器将返回到半同步复制。 半同步复制必须在源服务器和复制服务器的两端启用。如果源服务器上禁用了半同步复制或者在源服务器上启用了半同步复制但没有任何复制服务器启用则源服务器将使用异步复制。 在源服务器阻塞时等待来自复制服务器的确认它不会返回给执行事务的会话。当阻塞结束时源服务器将返回给会话然后会话可以继续执行其他语句。此时事务在源服务器上已提交并且至少一个复制服务器已确认接收其事件。在源服务器返回给会话之前必须配置源服务器在每个事务中接收的复制服务器确认的数量。这可以使用 rpl_semi_sync_master_wait_for_slave_count 系统变量进行配置其默认值为 1。 阻塞还会在写入二进制日志后进行回滚时发生这发生在回滚修改非事务表的事务时。即使对于事务表而言回滚的事务没有效果由于无法回滚非事务表的修改因此已回滚的事务仍被记录并必须发送到复制服务器。 对于不在事务上下文中发生的语句即未使用 START TRANSACTION 或 SET autocommit 0 启动事务的语句自动提交是启用的每个语句都隐式提交。使用半同步复制时源服务器为每个这样的语句阻塞就像对于显式事务提交一样。 rpl_semi_sync_master_wait_point 系统变量控制在源服务器等待复制服务器确认事务接收后返回给已提交事务的客户端状态的时间点。该变量可以配置为以下值 AFTER_SYNC默认值: 源服务器将每个事务写入其二进制日志和复制服务器并同步二进制日志到磁盘。在同步后源服务器等待复制服务器确认已接收事务。在收到确认后源服务器将事务提交到存储引擎并返回结果给客户端然后客户端可以继续。 AFTER_COMMIT: 源服务器将每个事务写入其二进制日志和复制服务器同步二进制日志并将事务提交到存储引擎。在提交后源服务器等待复制服务器确认已接收事务。在收到确认后源服务器返回结果给客户端然后客户端可以继续。 这些设置的复制特性有以下不同 对于 AFTER_SYNC所有客户端在相同的时间点看到已提交的事务即在复制服务器确认并在源服务器上提交到存储引擎后。因此所有客户端在源服务器上看到相同的数据。 在源服务器失败的情况下已在源服务器上提交的所有事务都已被复制到复制服务器保存在其中继日志中。源服务器的意外退出并切换到复制服务器是无损失的因为复制服务器是最新的。如上所述在切换后不应重新使用源服务器。 对于 AFTER_COMMIT发出事务的客户端只有在服务器提交到存储引擎并收到复制服务器的确认后才会获得返回状态。在提交后并在复制服务器确认之前其他客户端可能会在提交事务的客户端之前看到已提交的事务。 如果发生故障导致复制服务器未处理事务则在源服务器意外退出并切换到复制服务器时这些客户端可能看到与它们在源服务器上看到的数据不一致。 两个插件实现半同步功能 源端有一个插件复制端也有一个插件。 系统变量 rpl_semi_sync_master_enabled控制源端是否启用半同步复制。要启用或禁用插件请将此变量分别设置为 1 或 0。默认值为 0关闭。rpl_semi_sync_master_timeout以毫秒为单位的数值控制源端在提交时等待从复制服务器收到确认的超时时间超时后将回退到异步复制。默认值为 1000010 秒。rpl_semi_sync_slave_enabled类似于 rpl_semi_sync_master_enabled但控制复制端插件。 所有 rpl_semi_sync_xxx 系统变量的描述可参考《MySQL 5.7 Reference Manual》中的 Section 16.1.6.2 和 Section 16.1.6.3。 状态变量 Rpl_semi_sync_master_clients半同步复制的复制服务器数量。Rpl_semi_sync_master_status源端当前是否在运行半同步复制。如果插件已启用且提交确认尚未发生则值为 1。如果插件未启用或源端由于提交确认超时而回退到异步复制则值为 0。Rpl_semi_sync_master_no_tx未被复制服务器成功确认的提交次数。Rpl_semi_sync_master_yes_tx被复制服务器成功确认的提交次数。Rpl_semi_sync_slave_status复制端当前是否在运行半同步复制。如果插件已启用且复制 I/O 线程正在运行则值为 1。否则值为 0。 所有 Rpl_semi_sync_xxx 状态变量的描述可参考《MySQL 5.7 Reference Manual》中的 Section 5.1.9。 从 MySQL 5.7.33 版本开始可以通过启用以下系统变量来提高半同步复制的性能 replication_sender_observe_commit_only限制回调次数。replication_optimize_for_static_plugin_config添加共享锁并避免不必要的锁获取。这些设置在复制服务器数量增加时非常有帮助因为锁的争用可能会降低性能。半同步复制源服务器也可以通过启用这些系统变量来获得性能优势因为它们使用与复制服务器相同的锁定机制。 安装配置 半同步复制是通过插件实现的因此必须将插件安装到服务器中以使其可用。安装插件后可以通过与之关联的系统变量来控制插件。在关联的插件安装之前这些系统变量是不可用的。 以下是安装半同步复制插件的步骤。有关安装插件的一般信息请参阅《MySQL 5.7 Reference Manual》中的 Section 5.5.1。 要使用半同步复制必须满足以下要求 安装插件的能力需要支持动态加载的 MySQL 服务器。要进行验证请检查 have_dynamic_loading 系统变量的值是否为 YES。二进制发行版应该支持动态加载。 复制必须已经在工作中参见 Section 16.1。 不得配置多个复制通道。半同步复制仅兼容默认的复制通道。参见 Section 16.2.2。 为了设置半同步复制请按照以下说明进行。此处提到的 INSTALL PLUGIN、SET GLOBAL、STOP SLAVE 和 START SLAVE 语句需要 SUPER 权限。 MySQL 发行版包括源端和复制端的半同步复制插件文件。 为了被源端或复制端服务器使用必须将相应的插件库文件放置在 MySQL 插件目录中由 plugin_dir 系统变量指定的目录。如果需要可以通过在服务器启动时设置 plugin_dir 的值来配置插件目录位置。 插件库文件的基本名称为 semisync_master 和 semisync_slave。文件名后缀因平台而异例如Unix 和类似 Unix 系统的为 .soWindows 为 .dll。 源端插件库文件必须存在于源服务器的插件目录中。复制端插件库文件必须存在于每个复制服务器的插件目录中。 要加载插件请在源端和每个要使用半同步复制的复制端上使用 INSTALL PLUGIN 语句根据需要调整平台的 .so 后缀。 在每个实例上都安装master 和 slave的插件 是为了防止集群拓扑结构发生变化后实例角色变化。 INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; INSTALL PLUGIN rpl_semi_sync_slave SONAME semisync_slave.so; 查看插件 要查看已安装的插件可以使用 SHOW PLUGINS 语句或者查询信息模式的 PLUGINS 表。 show PLUGINs; SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE %semi%; 只安装从服务器插件 # 只装 从服务器的 插件  INSTALL PLUGIN rpl_semi_sync_slave SONAME semisync_slave.so;# 查看参数 show variables like %rpl_semi_sync%; ---------------------------------------- | Variable_name | Value | ---------------------------------------- | rpl_semi_sync_slave_enabled | OFF | | rpl_semi_sync_slave_trace_level | 32 | ---------------------------------------- 2 rows in set (0.00 sec)# 查看状态 SHOW STATUS LIKE Rpl_semi_sync%; ----------------------------------- | Variable_name | Value | ----------------------------------- | Rpl_semi_sync_slave_status | OFF | ----------------------------------- 1 row in set (0.00 sec)只装主库插件 # 只装 主服务器的插件 INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so;# 查看参数 show variables like %rpl_semi_sync%; ------------------------------------------------------- | Variable_name | Value | ------------------------------------------------------- | rpl_semi_sync_master_enabled | OFF | | rpl_semi_sync_master_timeout | 10000 | | rpl_semi_sync_master_trace_level | 32 | | rpl_semi_sync_master_wait_for_slave_count | 1 | | rpl_semi_sync_master_wait_no_slave | ON | | rpl_semi_sync_master_wait_point | AFTER_SYNC | -------------------------------------------------------# 查看状态 SHOW STATUS LIKE Rpl_semi_sync%; --------------------------------------------------- | Variable_name | Value | --------------------------------------------------- | Rpl_semi_sync_master_clients | 0 | | Rpl_semi_sync_master_net_avg_wait_time | 0 | | Rpl_semi_sync_master_net_wait_time | 0 | | Rpl_semi_sync_master_net_waits | 0 | | Rpl_semi_sync_master_no_times | 0 | | Rpl_semi_sync_master_no_tx | 0 | | Rpl_semi_sync_master_status | OFF | | Rpl_semi_sync_master_timefunc_failures | 0 | | Rpl_semi_sync_master_tx_avg_wait_time | 0 | | Rpl_semi_sync_master_tx_wait_time | 0 | | Rpl_semi_sync_master_tx_waits | 0 | | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | | Rpl_semi_sync_master_yes_tx | 0 | --------------------------------------------------- 14 rows in set (0.01 sec) 命令行中设置变量 在安装了半同步复制插件之后默认情况下它是禁用的。为了启用半同步复制必须在源端和复制端都启用插件。如果只有一侧启用复制将是异步的。 要控制已安装插件是否启用请设置相应的系统变量。可以使用 SET GLOBAL 在运行时设置这些变量也可以在命令行上或在选项文件中在服务器启动时设置。 在运行时可以使用以下源端系统变量 SET GLOBAL rpl_semi_sync_master_enabled {0|1}; SET GLOBAL rpl_semi_sync_master_timeout N; 在复制端 设置系统变量 SET GLOBAL rpl_semi_sync_slave_enabled {0|1};对于 rpl_semi_sync_master_enabled 或 rpl_semi_sync_slave_enabled值应设置为 1 以启用半同步复制或设置为 0 以禁用它。默认情况下这些变量的值设置为 0。 对于 rpl_semi_sync_master_timeout给定的值 N 表示毫秒。默认值为 1000010 秒。 如果在运行时在复制端启用半同步复制还必须启动如果它已经在运行则首先停止复制 I/O 线程以使复制端连接到源端并注册为半同步复制的复制服务器 -- 在复制端启用半同步复制 SET GLOBAL rpl_semi_sync_slave_enabled 1;-- 如果复制 I/O 线程正在运行则停止它 STOP SLAVE IO_THREAD;-- 启动复制 I/O 线程 START SLAVE IO_THREAD;如果复制 I/O 线程已经在运行且您不重新启动它复制服务器将继续使用异步复制。 配置文件中设置 在服务器启动时可以将控制半同步复制的变量设置为命令行选项或选项文件中。在选项文件中列出的设置将在每次服务器启动时生效。例如可以在源端和复制端的 my.cnf 文件中如下设置这些变量。 在源端 [mysqld] rpl_semi_sync_master_enabled1 rpl_semi_sync_master_timeout1000 # 1 秒在每个复制端 [mysqld] rpl_semi_sync_slave_enabled1这样设置后需要重新启动 MySQL 服务器才能使更改生效。 半同步复制监控 半同步复制功能的插件公开了多个系统变量和状态变量您可以检查它们以确定其配置和操作状态。 系统变量反映了半同步复制的配置。要检查它们的值请使用 SHOW VARIABLES mysql SHOW VARIABLES LIKE rpl_semi_sync%; 状态变量使您能够监视半同步复制的操作。要检查它们的值请使用 SHOW STATUS SHOW STATUS LIKE Rpl_semi_sync%; 当源端由于提交阻塞超时或复制服务器赶上而在异步和半同步之间切换时它会相应地设置 Rpl_semi_sync_master_status 状态变量的值。源端从半同步回退到异步复制意味着即使在某一时刻半同步复制实际上不可操作rpl_semi_sync_master_enabled 系统变量在源端仍然可能具有值为 1。您可以监视 Rpl_semi_sync_master_status 状态变量以确定源端当前是使用异步还是半同步复制。 要查看连接的半同步复制副本数量请检查 Rpl_semi_sync_master_clients。 Rpl_semi_sync_master_yes_tx 和 Rpl_semi_sync_master_no_tx 变量指示了已被复制服务器成功或不成功确认的提交次数。 在复制端Rpl_semi_sync_slave_status 表示半同步复制当前是否在运行。 参数变量 rpl_semi_sync_master_enabled: 描述控制是否在源端启用半同步复制。要启用或禁用插件请将此变量设置为 ON 或 OFF或 1 或 0。默认值为 OFF。注意仅在源端安装了半同步复制插件时才可用。 rpl_semi_sync_master_timeout: 描述控制源端在等待复制服务器回复的超时时间以毫秒为单位。默认值为 1000010秒。注意仅在源端安装了半同步复制插件时才可用。 rpl_semi_sync_master_trace_level: 描述源端上的半同步复制调试追踪级别。定义了四个级别 1 一般级别例如时间函数失败16 详细级别更详细的信息32 网络等待级别关于网络等待的更多信息64 函数级别关于函数进入和退出的信息注意仅在源端安装了半同步复制插件时才可用。 rpl_semi_sync_master_wait_for_slave_count: 描述源端在每个事务之前必须收到的复制服务器确认的数量。默认情况下rpl_semi_sync_master_wait_for_slave_count 为 1意味着在收到单个复制服务器确认后半同步复制会继续进行。此变量的小值可获得更好的性能。示例如果 rpl_semi_sync_master_wait_for_slave_count 为 2则必须在半同步复制继续进行之前收到 2 个复制服务器对事务的确认。如果在超时期间内少于 2 个复制服务器对事务的确认源端将回退到正常复制。注意仅在源端安装了半同步复制插件时才可用。 rpl_semi_sync_master_wait_no_slave: 描述控制源端是否等待 rpl_semi_sync_master_timeout 到期即使在超时期间复制服务器的数量降至少于 rpl_semi_sync_master_wait_for_slave_count。当 rpl_semi_sync_master_wait_no_slave 的值为 ON默认情况下时允许在超时期间复制服务器的数量降至少于 rpl_semi_sync_master_wait_for_slave_count。只要足够的复制服务器在超时期满前对事务进行确认半同步复制就会继续进行。当 rpl_semi_sync_master_wait_no_slave 的值为 OFF 时如果在 rpl_semi_sync_master_timeout 配置的超时期间内复制服务器的数量降至少于 rpl_semi_sync_master_wait_for_slave_count源端将回退到正常复制。注意仅在源端安装了半同步复制插件时才可用。rpl_semi_sync_master_wait_point 这个变量控制半同步源在返回提交事务的客户端状态之前等待复制确认的时间点。可以使用以下值 AFTER_SYNC默认值源将每个事务写入其二进制日志和复制服务器并将二进制日志同步到磁盘。源在同步后等待复制服务器对事务接收的确认。在收到确认后源将事务提交到存储引擎并将结果返回给客户端然后客户端可以继续。 AFTER_COMMIT源将每个事务写入其二进制日志和复制服务器同步二进制日志然后提交事务到存储引擎。源在提交后等待复制服务器对事务接收的确认。在收到确认后源将结果返回给客户端然后客户端可以继续。 这些设置的复制特性有以下不同 对于 AFTER_SYNC所有客户端同时看到提交的事务在复制服务器确认并在源端提交到存储引擎之后。因此所有客户端在源上看到相同的数据。 在源故障的情况下所有在源上提交的事务已经复制到了复制服务器保存在其中继日志中。源的意外退出和切换到复制服务器是无损的因为复制服务器是最新的。但请注意在这种情况下无法重新启动源必须放弃源因为其二进制日志可能包含未提交的事务在二进制日志恢复后这可能会导致与复制服务器的冲突。 对于 AFTER_COMMIT发出事务的客户端仅在服务器提交到存储引擎并收到复制服务器确认后才获得返回状态。在提交后和复制服务器确认之前其他客户端可以在提交客户端之前看到提交的事务。 如果出现问题例如复制服务器未处理事务在源端意外退出并切换到复制服务器的情况下这可能导致这些客户端相对于在源上看到的数据出现数据丢失。 此变量仅在源端安装了半同步复制插件时才可用。 rpl_semi_sync_master_wait_point 在 MySQL 5.7.2 中添加。对于较旧的版本半同步源的行为等同于 AFTER_COMMIT 的设置。 此更改引入了版本兼容性约束因为它增加了半同步接口版本MySQL 5.7.2 及更高版本的服务器不能与旧版本的半同步复制插件一起使用反之亦然。 状态变量 这些是半同步复制功能的插件暴露的一些系统和状态变量用于确定其配置和操作状态 Rpl_semi_sync_master_clients: 半同步复制副本的数量。 Rpl_semi_sync_master_net_avg_wait_time: 源端等待复制服务器回复的平均时间微秒。此变量已被弃用始终为 0预计在将来的版本中移除。 Rpl_semi_sync_master_net_wait_time: 源端等待复制服务器回复的总时间微秒。此变量已被弃用始终为 0预计在将来的版本中移除。 Rpl_semi_sync_master_net_waits: 源端等待复制服务器回复的总次数。 Rpl_semi_sync_master_no_times: 源端关闭半同步复制的次数。 Rpl_semi_sync_master_no_tx: 未被复制服务器成功确认的提交次数。 Rpl_semi_sync_master_status: 源端当前是否在运行半同步复制。如果启用了插件并且提交确认已发生则值为 ON。如果未启用插件或源端由于提交确认超时而回退到异步复制则值为 OFF。 Rpl_semi_sync_master_timefunc_failures: 源端调用时间函数例如 gettimeofday()失败的次数。 Rpl_semi_sync_master_tx_avg_wait_time: 源端等待每个事务的平均时间微秒。 Rpl_semi_sync_master_tx_wait_time: 源端等待事务的总时间微秒。 Rpl_semi_sync_master_tx_waits: 源端等待事务的总次数。 Rpl_semi_sync_master_wait_pos_backtraverse: 源端等待事件的总次数其二进制坐标低于先前等待的事件。当事务开始等待回复的顺序与它们的二进制日志事件写入的顺序不同时就会发生这种情况。 Rpl_semi_sync_master_wait_sessions: 当前等待复制服务器回复的会话数。 Rpl_semi_sync_master_yes_tx: 被复制服务器成功确认的提交次数。 Rpl_semi_sync_slave_status: 复制端当前是否在运行半同步复制。如果启用了插件且复制 I/O 线程正在运行则值为 ON。否则值为 OFF。
http://www.w-s-a.com/news/297801/

相关文章:

  • 设计师网站pin分销系统小程序开发
  • 高端品牌网站建设兴田德润实惠企业网站建设应该怎么做
  • 做研学的网站优秀软文案例
  • 网站个人简介怎么做建设网站卡盟
  • 影楼做网站安庆建设机械网站
  • 访问网站的原理wix做网站流程
  • 众鱼深圳网站建设设计师网名叫什么好听
  • 中小学生做试卷的网站6网站建设需要注意哪些细节
  • 以个人名义做地方门户网站社保服务个人网站
  • 上海企业做网站设计制作感悟150字
  • asp.netmvc网站开发ps设计网页
  • win2008 挂网站 404官方网站是什么
  • 网站只做内容 不做外链做姓氏图的网站
  • 中国建设银行信用卡黑名单网站wordpress怎么解密密码
  • 建设银行如何网站设置密码广州网站营销推广
  • 企业做网站的步骤与做网站注意事项四川省住房建设厅网站打不开
  • 网页设计网站规划报告百度文库官网登录入口
  • 郑州医疗网站开发wordpress能注册
  • 创建网站的英语石家庄微信网站建设
  • 分享几个x站好用的关键词微信商城小程序开发一般需要多少钱
  • 做韩国外贸网站wordpress手机版中文
  • 建站群赚钱有前途吗蚌埠北京网站建设
  • 北京网站建设求职简历十堰seo优化教程
  • 网站顶部可关闭广告微信小程序多少钱
  • 网站背景怎么弄斜杠青年seo工作室
  • ps个人网站首页怎么制作如何做网站的版块规划
  • 做网站的市场开源建站工具
  • 邹平做网站哪家好自动点击器app
  • 南阳seo网站排名优化wordpress文章对游客不显示
  • 网站301什么意思湛江市seo网站设计报价