您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 网站策划/UE > mysql双主架构方案设计
mysql双主架构方案设计mysql支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其他服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。mysql_proxy,是处在应用端和数据库服务器之间的程序,支持嵌入性脚本语言Lua。mysql_proxy可以用于分析、监控和转换通信数据,支持数据库层负载均衡和读写分离的功能。1mysql双主架构设计mysql1mysql2mysql_proxy互为主从负载均衡读写分离Client1Client2Client...连接连接连接架构说明:mysql1和mysql2互为主从关系,数据库间通过复制(Replication)实现数据的同步。client端直接连接mysql_proxy,通过mysql_proxy实现到数据库的负载均衡和读写分离;mysql高可用性架构,常用的有主从复制、主主复制及双主从等形式,基于业务的实际需要进行选择考虑。2mysql主从复制配置2.1主从配置需要注意的点(1)主从服务器操作系统版本和位数一致;(2)Master和Slave数据库的版本要一致;(3)Master和Slave数据库中的数据要一致;(4)Master开启二进制日志,Master和Slave的server_id在局域网内必须唯一;2.2主从配置的步骤2.2.1Master上的配置(1)安装数据库;(2)修改数据库配置文件,指明server_id,开启二进制日志(log-bin);(3)启动数据库,查看当前是哪个日志,position号是多少;(4)登录数据库,授权数据复制用户(IP地址为从机IP地址,如果是双向主从,这里的还需要授权本机的IP地址,此时自己的IP地址就是从IP地址);(5)备份数据库(记得加锁和解锁);(6)传送备份数据到Slave上;(7)启动数据库;以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:(1)登录数据库,指定Master的地址、用户、密码等信息(此步仅双向主从时需要);(2)开启同步,查看状态;2.2.2Slave上的配置(1)安装数据库;(2)修改数据库配置文件,指明server_id(如果是搭建双向主从的话,也要开启二进制日志log-bin);(3)启动数据库,还原备份;(4)查看当前是哪个日志,position号是多少(单向主从此步不需要,双向主从需要);(5)指定Master的地址、用户、密码等信息;(6)开启同步,查看状态。2.3单向主从环境的搭建1.master服务器配置文件,修改/etc/my.cnf在[mysqld]中增加如下配置项:#设置server_id,通常设置为IPserver_id=205#复制过滤:需要备份的数据库,输出binarylog#binlog-do_db=test#复制过滤:不需要备份的数据库,不输出binlog-ignore-db=mysql#开启二进制日志功能log-bin=master-mysql-bin#为每个session分配的内存,在事务过程中用来存储二进制日志的缓存binlog_cache_size=1M#主从复制格式(mixed、statement、row,默认格式为statement)binlog_format=mixed#二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。expire_logs_days=7#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave_skip_errors=10622.启动master数据库服务,创建数据同步用户,并授予相应权限#创建数据库同步用户,并授予相应权限grantreplicationslave,replicationclienton*.*to‘repl’@’192.168.1.206’identifiedby‘password’;#刷新授权表信息flushprivileges;#查看position号(这个pisition号和日志文件在从服务器配置需要用到)showmasterstatus;3.slave服务器配置,修改/etc/my.cnf#[mysqld]中增加如下配置项#设置server_id,一般设置为IPserver_id=206#复制过滤:需要备份的数据库,输出binarylog#binlog-do-db=test#复制过滤:不需要备份的数据库,不输出binlog-ignore-db=mysql#开启二进制日志功能log-bin=slave-mysql-bin#为每个session分配的内存,在事务过程中用来存储二进制日志的缓存binlog_cache_size=1M#主从复制格式(mixed、statement、row,默认格式为statement)binlog_format=mixed#二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。expire_logs_days=7#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave_skip_errors=1062#reply_log配置中继日志relay_log=mysql-relay-bin#log_slave_updates表示slave将复制事件写进自己的二进制日志log_slave_updates=1#防止改变数据read_only=14.启动slave数据库服务,配置相关参数changemastertomaster_host='192.168.1.205',master_user='repl',master_password='password,master_port=3306,master_log_file='edu-mysql-bin.000001',master_log_pos=1389,master_connect_retry=30;参数解释:master_host='192.168.0.205'#master的IP地址master_user='repl'#用于同步数据的用户(在master中授权的用户)master_password='password'#同步数据用户的密码master_port=3306#master数据库服务的端口master_log_file='edu-mysql-bin.000001'#指定slave从哪个日志文件开始读复制数据(可在master上使用showmasterstatus查看到日志文件名)master_log_pos=429#从哪个POSITION号开始读master_connect_retry=30#当重新建立主从连接时,如果连接建立失败,间隔多久后重试。单位为秒,默认设置为60秒,同步延迟调优参数。##查看主从同步状态mysqlshowslavestatus\G;可看到slave_IO_State为空,Slave_IO_Running和Slave_SQL_Running是No,表明Slave还没有开始复制过程。##开启主从同步mysqlstartslave;QueryOK,0rowsaffected(0.00sec)##再查看主从同步状态mysqlshowslavestatus\G;主要查看如下两个参数:Slave_IO_Running和Slave_SQL_Running;参数值为Yes表示主从同步正常。可查看master和slave上线程的状态。在master上,可以看到slave的I/O线程创建的连接:mysqlshowprocesslist\G;上述操作介绍了主从复制的搭建,而双向主从其实就是master和slave都开启日志功能,然后在master执行授权用户(这里授权的是本身走为从服务器),然后在master上进行changemaster操作。3mysql-proxy配置mysqlproxy是一个处理client端和mysqlserver端之间的代理程序,可以监测、分析或改变它们的通信。使用灵活,没有限制,常见的功能包括:负载均衡、读写分离、故障切换等。mysqlproxy是mysql的前端代理,简单说就是一个连接池,负责将前台的应用连接请求转发给后台数据库,并且通过使用lua脚本,实现复杂的连接控制和过滤,从而实现负载均衡和读写分离。对于应用来说,mysqlproxy是完全透明的,应用只需要连接到mysqlproxy的监听端口即可。默认监听端口是4040。3.1负载均衡配置切换到安装目录:mysql-proxy/bin,执行如下命令:./mysql-proxy\--proxy-backend-addresses=192.168.1.205:3306\--proxy-backend-addresses=192.168.1.206:3306mysql_proxy实现负载均衡是针对连接的均衡;mysql_proxy会把连接mysql服务器的tcp/ip连接缓存进连接池以提高性能在缓存池,缓存的连接大致平均分配在每台mysql服务器上;但具体的每一个连接,始终连接一台服务器。3.2读写分离配置切换到安装目录:mysql-proxy/bin,执行如下命令:./mysql-proxy\--proxy-backend-addresses=192.168.1.205:3306\--proxy-read-only-backend-address=192.168.1.206:3306\--proxy-lua-script=share/doc/mysql-proxyrw-splitting.luamysqlproxy实现读写负载均衡,基本原理是让主数据库处理事务性操作,让从库处理查询操作,再辅助数据库复制,把主数据库事务性操作导致的变更同步到从库,实现数据库的读写分离。
本文标题:mysql双主架构方案设计
链接地址:https://www.777doc.com/doc-5056559 .html