mysql主从同步的复制模式

1.异步复制模式

主库执行完成一个事务后,立即将结果返回给客户端,并不关心客户端是否已经接受并处理

 

2.全同步复制模式

主库执行完成一个事务后,且所有的从库都执行该事务并返回给客户端

 

3.半同步复制模式

介于异步复制模式和全同步复制模式之间

主库执行完成一个事务后,等待至少一个从库接收到,并写入relay log中才能返回给客户端

 

默认条件下是异步复制模式

要主从数据库的复制模式要保证数据是一样的

 

实验操作:

启动半同步复制模式:

允许动态加载模块

mysql> show variables like "have_dynamic_loading";

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| have_dynamic_loading | YES   |

+----------------------+-------+

1 row in set (0.00 sec)

 

sql命令行加载模块启动半同步复制模式

主库51安装:

安装启动模块

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

Query OK, 0 rows affected (0.06 sec)

 

查看安装模块

mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like '%semi%';

+----------------------+---------------+

| plugin_name          | plugin_status |

+----------------------+---------------+

| rpl_semi_sync_master | ACTIVE        |

+----------------------+---------------+

1 row in set (0.00 sec)

 

启动半同步复制模式:

mysql> set global rpl_semi_sync_master_enabled=1;

Query OK, 0 rows affected (0.00 sec)

 

查看半同步半复制模式

mysql> show variables like "rpl_semi_sync_%_enabled";

%代表查主库也查从库

+------------------------------+-------+

| Variable_name                | Value |

+------------------------------+-------+

| rpl_semi_sync_master_enabled | ON    |

+------------------------------+-------+

1 row in set (0.00 sec)

 

 

从库 (slave)  52操作:

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

Query OK, 0 rows affected (0.05 sec)

 

查看安装模块

mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like '%semi%';

+----------------------+---------------+

| plugin_name          | plugin_status |

+----------------------+---------------+

| rpl_semi_sync_master | ACTIVE        |

+----------------------+---------------+

1 row in set (0.00 sec)

 

启动半同步复制模式:

mysql> set global rpl_semi_sync_slave_enabled=1;

Query OK, 0 rows affected (0.00 sec)

 

查看半同步半复制模式

mysql> show variables like "rpl_semi_sync_%_enabled";

+------------------------------+-------+

| Variable_name                | Value |

+------------------------------+-------+

| rpl_semi_sync_master_enabled | ON    |

+------------------------------+-------+

1 row in set (0.01 sec)

(以上的配置都是临时配置,要想永久配置要写进配置文件)

 

配置文件永久启用半同步复制

 

– 命令配置临时配置,重启服务会失效

– 修改后需要重启服务

– 写在主配置文件 /etc/my.cnf 的 [mysqld] 下方

主服务器:

plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

 

systemctl  stop mysqld

systemctl   start mysqld

 

从服务器:

plugin-load=rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_slave_enabled=1

 

systemctl  stop mysqld

systemctl   start mysqld

 

 

在有的高可用架构下, master 和 slave 需同时启动

– 以便在切换后能继续使用半同步复制

 

plugin-load ="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so“ 用;分开,相当与上面两条

rpl-semi-sync-master-enabled = 1

rpl-semi-sync-slave-enabled = 1

 

[root@host52 ~]# systemctl  stop mysqld 

[root@host52 ~]# systemctl  start mysqld

 

mysql> show variables like 'rpl_semi_sync_%_enabled';

+------------------------------+-------+

| Variable_name                | Value |

+------------------------------+-------+

| rpl_semi_sync_master_enabled | ON  |

| rpl_semi_sync_slave_enabled  | ON    |

+------------------------------+-------+

2 rows in set (0.01 sec)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(MySQL)