容易產生的問題:數據不一致mysql
主機 | IP |
---|---|
Master1 | 192.168.37.7 |
Master2 | 192.168.37.17 |
[root@Centos7 ~]#vim /etc/my.cnf [mysqld] log_bin server_id=7 auto_increment_offset=1 auto_increment_increment=2
建立複製賬號 sql
MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.37.%' identified by 'centos';
[root@Centos7 ~]#vim /etc/my.cnf [mysqld] log_bin server_id=17 auto_increment_offset=2 auto_increment_increment=2
同步信息master2同步master1 vim
MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.37.7', -> MASTER_USER='repluser', -> MASTER_PASSWORD='centos', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=245; Query OK, 0 rows affected (0.03 sec) MariaDB [(none)]> START SLAVE; Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.37.17', -> MASTER_USER='repluser', -> MASTER_PASSWORD='centos', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=245; Query OK, 0 rows affected (0.03 sec) MariaDB [(none)]> START SLAVE; Query OK, 0 rows affected (0.01 sec)
主主複製完成 centos
半同步是當若干從服務器中有一臺與主服務器同步成功,就認爲同步成功。返回結果給客戶機
半同步須要安裝獨立的插件來實現
查看已安裝插件show plugins;
semisync_master.so 主服務器插件
semisync_slave.so 從服務器插件
條件:設置爲主從複製 bash
MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #安裝插件 Query OK, 0 rows affected (0.01 sec)
[root@Centos7 ~]#vim /etc/my.cnf rpl_semi_sync_master_enabled #添加服務器選項 [root@Centos7 ~]#systemctl restart mariadb #重啓服務生效
MariaDB [hellodb]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; #安裝插件 Query OK, 0 rows affected (0.02 sec)
###- 開啓slave半同步複製 服務器
[root@Centos7 ~]#vim /etc/my.cnf rpl_semi_sync_slave_enabled #添加服務器選項 [root@Centos7 ~]#systemctl restart mariadb #重啓服務生效
半同步設置完成session
MariaDB [(none)]> show global status like '%semi%'; #查看複製信息 +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | Rpl_semi_sync_master_clients | 1 | | 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 | ON | | 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.44 sec) MariaDB [(none)]> show global variables like '%semi%'; +------------------------------------+-------+ | Variable_name | Value | +------------------------------------+-------+ | rpl_semi_sync_master_enabled | ON | #已開啓半同步 | rpl_semi_sync_master_timeout | 10000 | #超時時長10000ms | rpl_semi_sync_master_trace_level | 32 | | rpl_semi_sync_master_wait_no_slave | ON | +------------------------------------+-------+ 4 rows in set (0.00 sec) MariaDB [(none)]>
MariaDB [(none)]> show global status like '%semi%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Rpl_semi_sync_slave_status | ON | +----------------------------+-------+ 1 row in set (0.02 sec) MariaDB [(none)]> show global variables like '%semi%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | rpl_semi_sync_slave_enabled | ON | | rpl_semi_sync_slave_trace_level | 32 | +---------------------------------+-------+ 2 rows in set (0.01 sec)