飞鸽网站建设,建设网站什么软件比较好,wordpress 目录安全,网站开发目的与意义使用maxscale搭建的读写分离架构#xff0c;后期还可以再结合MHA做master的故障转移#xff0c;这样业务层面上不需要做任何的改动即可。基于connect方式的不要使用。从库延迟他还会继续分发请求过去#xff0c;暂时不适合生产使用。实验演示#xff1a;目前的主从结构后期还可以再结合MHA做master的故障转移这样业务层面上不需要做任何的改动即可。基于connect方式的不要使用。从库延迟他还会继续分发请求过去暂时不适合生产使用。实验演示目前的主从结构node93 10.1.20.93 masternode94 10.1.20.94 slavenode95 10.1.20.95 slavenode96 10.1.20.96 maxscale先在master主库上创建相关的账户在开始配置之前需要在master中为MaxScale创建两个用户用于监控模块和路由模块。创建监控用户用于[MySQL Monitor]段的配置中 create database maxscale_schema ; # maxscale监控用的心跳信息会写到这个库里面 create user scalemon% identified by111111; grant replication slave, replication client on*.* to scalemon%; grant all on maxscale_schema.* to scalemon%;创建路由用户用于[Read-Write Service]段的配置中 create user maxscale% identified by111111; grant select on mysql.* to maxscale%;maxscale部署rpm -ivh maxscale-2.0.2021年01月28日.rhel.6.x86_64.rpm主要生成文件如下/etc/maxscale.cnf/etc/maxscale.cnf.template/usr/bin/cdc.py/usr/bin/cdc_kafka_producer.py/usr/bin/cdc_last_transaction.py/usr/bin/cdc_users.py/usr/bin/maxadmin/usr/bin/maxavrocheck/usr/bin/maxbinlogcheck/usr/bin/maxkeys/usr/bin/maxpasswd/usr/bin/maxscale/var/var/lib/var/lib/maxscale创建秘钥文件[rootmaxscale /root ]# maxkeys /var/lib/maxscale生成加密后的密码[rootmaxscale /root ]# maxpasswd/var/lib/maxscale/.secrets 123456上面划掉的这2步骤我们用不到直接在配置文件/etc/maxscale.cnf里写上明文密码就行了。(这里踩了坑配置这个参数导致后面maxscale起来后无法连接到其他库提示access denied)vim/etc/security/limits.conf* softnofile 65535* hardnofile 65535vim/etc/sysctl.conf :fs.file-max655350net.ipv4.ip_local_port_range 1025 65000net.ipv4.tcp_tw_reuse 1修改完内和参数后需要重启下服务器。修改配置文件cat /etc/maxscale.cnf[maxscale]threadsautoms_timestamp1 #timestamp精度syslog1 #将日志写入到syslog中maxlog1 #将日志写入到maxscale的日志文件中log_to_shm0 #不将日志写入到共享缓存中开启debug模式时可打开加快速度log_warning1 #记录告警信息log_notice1 #记录noticelog_info1 #记录infolog_debug0 #不打开debug模式log_augmentation1 #日志递增# Server definitions## Set the address of the server to the network# address of a MySQL server.##需要把master和slave地址都配上maxscale会自动分辨出哪个是master和slave[server1]typeserveraddress10.1.20.93port3306protocolMySQLBackend[server2]typeserveraddress10.1.20.94port3306protocolMySQLBackend[server3]typeserveraddress10.1.20.95port3306protocolMySQLBackend# Monitor for the servers## This will keep MaxScale aware of the state of theservers.# MySQL Monitor documentation:# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Monitors/MySQL-Monitor.md[MySQL Monitor]typemonitormodulemysqlmonserversserver1,server2,server3 #这里要把全部server都写上以便maxscale去监测userscalemonpasswd111111monitor_interval10000 #每隔10s检查一次detect_replication_lagtrue #检查复制延迟的情况detect_stale_mastertrue #当所有的slave都不可用时select查询请求会转发到master。# Service definitions## Service Definition for a read-only service and# a read/write splitting service.## ReadConnRoute documentation:#https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadConnRoute.md由于我们使用了[Read-Write Service]可以删除另一个服务[Read-Only Service]注释掉下面整块儿内容即可。#需要把master和slave地址都配上#[Read-Only Service]#typeservice#routerreadconnroute#serversserver1,server2,server3#usermaxscale #读写分离的账户和密码#passwd111111 #读写分离的账户和密码#router_optionsslave# ReadWriteSplit documentation:# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadWriteSplit.md#配置的读写分离需要把master和slave地址都配上[Read-Write Service]typeservicerouterreadwritesplitserversserver1,server2,server3usermaxscale #读写分离的账户和密码passwd111111 #读写分离的账户和密码max_slave_connections100% #所有的slave提供select查询服务max_slave_replication_lag 5 # slave超时5秒就把请求转发到其他slaveuse_sql_variables_in all ## This service enables the use of the MaxAdmininterface# MaxScale administration guide:#https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Reference/MaxAdmin.md[MaxAdmin Service]typeserviceroutercli# Listener definitions for the services## These listeners represent the ports the# services will listen on.##[Read-Only Listener]#typelistener#serviceRead-Only Service#protocolMySQLClient#port4008[Read-Write Listener]typelistenerserviceRead-Write ServiceprotocolMySQLClientport4006[MaxAdmin Listener]typelistenerserviceMaxAdmin Serviceprotocolmaxscaledsocketdefault启动maxscalemaxscale -f/etc/maxscale.cnfss -lnt可以看到4006端口启动了。可以使用之前的业务账号连接到maxscale的4006端口上例如mysql -utest -ptest -P 4006 -h 10.1.20.96注意begin;select hostname;commit;这种的select会在主库上执行。此外执行存储过程或者函数时候也是会自动在主库去执行的。执行SQL begin;selecthostname; commit; insert into t2 select 3; select hostname;对应的在/var/log/maxscale/maxscale.log记录如下很明显的可以看开启事务、插入等操作会被转发到主库去处理。而单纯的select则会被转发到某个从库去处理。maxscale不能对master进行故障切换可以配合使用MHA来进行。MHA的故障切换后maxscale可以自动识别哪台机器是master。然后自动将求发送到新的主从结构中。maxscale的延迟检测和pt-heartbeat的原理类似。maxscale会对master和slave上replication_heartbeat表的master_timestamp时间戳进行对比相减得出差异。这个差异就是MySQL主从同步的延迟值。select * frommaxscale_schema.replication_heartbeat;从库故障或延迟过大会被自动剔除我们可以在192.168.2.12上stop slave;稍等片刻再执行查询操作的话会发现请求不会被转发到192.168.2.12的mysql上maxscale里面自动将这个机器踢下线了。如下图192.168.2.12出现延迟则在maxscale日志显示如下192.168.2.12的3306端口不通(可能mysqld挂掉或者服务器宕机)则在maxscale日志显示如下其他后补充进笔记的管理maxscale的一些命令maxadmin -S /tmp/maxadmin.sock