#plugins 插件
插件存放目录
[ root@YGL /usr/lib64/mysql/plugin ]# ll
总用量 5016
-rwxr-xr-x. 1 root root 11632 11月 15 2016 adt_null.so
-rwxr-xr-x. 1 root root 7336 11月 15 2016 auth_0x0100.so
-rwxr-xr-x. 1 root root 11536 11月 15 2016 auth_pam.so
-rwxr-xr-x. 1 root root 7568 11月 15 2016 auth_socket.so
-rwxr-xr-x. 1 root root 11720 11月 15 2016 auth_test_plugin.so
-rw-r--r--. 1 root root 227 9月 12 2016 daemon_example.ini
-rwxr-xr-x. 1 root root 7504 11月 15 2016 dialog_examples.so
-rwxr-xr-x. 1 root root 11288 11月 15 2016 dialog.so
-rwxr-xr-x. 1 root root 1644528 11月 15 2016 ha_innodb.so
-rwxr-xr-x. 1 root root 169576 11月 15 2016 handlersocket.so
-rwxr-xr-x. 1 root root 106248 11月 15 2016 ha_sphinx.so
-rwxr-xr-x. 1 root root 11720 11月 15 2016 libdaemon_example.so
-rwxr-xr-x. 1 root root 12208 11月 15 2016 mypluglib.so
-rwxr-xr-x. 1 root root 7184 11月 15 2016 mysql_clear_password.so
-rwxr-xr-x. 1 root root 7168 11月 15 2016 qa_auth_client.so
-rwxr-xr-x. 1 root root 11568 11月 15 2016 qa_auth_interface.so
-rwxr-xr-x. 1 root root 7336 11月 15 2016 qa_auth_server.so
-rwxr-xr-x. 1 root root 11736 11月 15 2016 query_cache_info.so
-rwxr-xr-x. 1 root root 41336 11月 15 2016 semisync_master.so#主插件
-rwxr-xr-x. 1 root root 15984 11月 15 2016 semisync_slave.so#从插件
-rwxr-xr-x. 1 root root 61184 11月 15 2016 server_audit.so
-rwxr-xr-x. 1 root root 2922944 11月 15 2016 sphinx.so
-rwxr-xr-x. 1 root root 12152 11月 15 2016 sql_errlog.so
查看插件
MariaDB [(none)]> show plugins;
安装插件
主节点的名称叫
rpl_semi_sync_master
从节点的名称叫
rpl_semi_sync_slave
配置半同步复制
要首先配置基础主从复制
然后半道在改成半同步复制
首先配置主从
同步时间
node1
[ root@YGL /usr/lib64/mysql/plugin ]# vim /etc/my.cnf.d/server.cnf
[server]
skip_name_resolve = ON #不要反解主机名,这样我们很多授权的主机名就能通过了。
innodb_file_per_table = ON #
max_connections = 20000
log_bin = master-log
server_id = 1
授权可以进行复制的用户
MariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'172.18.25.%' identified by 'replpass';
刷新权限
MariaDB [(none)]> flush privileges;
node2
[server]
[ root@YGL /usr/lib64/mysql/plugin ]# vim /etc/my.cnf.d/server.cnf
skip_name_resolve = ON
innodb_file_per_table = ON
max_connections = 20000
#log_bin = master-log
server_id = 2
relay_log = relay-log #记得要配置中继日志
然后在指明复制谁的,从哪里开始复制
MariaDB [(none)]> change master to master_host='172.18.25.51',master_user='repluser',master_password='replpass',master_log_file='master-log.000001',master_log_pos=245;
到这里就是一个传统意义上的主从复制
接下来我们就要配置成半同步复制
node1
安装插件semisync_master
MariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master';
安装完成后,会里面激活两个参数或者说两个变量
MariaDB [(none)]> show global variables like '%rpl%' ;
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_master_enabled | OFF |#虽然插件安装了,但是功能没启用
| rpl_semi_sync_master_timeout | 10000 |#如果从节点一直连不上,也不响应,那么我们最多等他10S
| rpl_semi_sync_master_trace_level | 32 |#追踪相应级别
| rpl_semi_sync_master_wait_no_slave | ON |#如没有一个同步的复制节点,我们要不要等待。
+------------------------------------+-------+
服务器状态参数或者变量。
MariaDB [(none)]> show global status like '%rpl%';
+--------------------------------------------+-------------+
| 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 |#当前的状态,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 |
| Rpl_status | AUTH_MASTER |
+--------------------------------------------+-------------+
现在我们开始配置从节点
node2
安装插件
MariaDB [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave';
现在开始启用插件
node1
MariaDB [(none)]> set @@global.rpl_semi_sync_master_enabled=on;
MariaDB [(none)]> show global variables like '%rpl%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
+------------------------------------+-------+
node2
MariaDB [(none)]> set @@global.rpl_semi_sync_slave_enabled=on;
MariaDB [(none)]> show global variables like '%rpl%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
接下来我们要重启复制线程。
MariaDB [(none)]> stop slave io_thread;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> start slave io_thread;
Query OK, 0 rows affected (0.00 sec)
那么半同步模型就建立完成了。