mysql双主架构方案设计.docx
- 文档编号:11529293
- 上传时间:2023-03-18
- 格式:DOCX
- 页数:8
- 大小:123.74KB
mysql双主架构方案设计.docx
《mysql双主架构方案设计.docx》由会员分享,可在线阅读,更多相关《mysql双主架构方案设计.docx(8页珍藏版)》请在冰豆网上搜索。
mysql双主架构方案设计
mysql双主架构方案设计
mysql支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其他服务器充当从服务器。
主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。
当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。
从服务器接受从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。
mysql_proxy,是处在应用端和数据库服务器之间的程序,支持嵌入性脚本语言Lua。
mysql_proxy可以用于分析、监控和转换通信数据,支持数据库层负载均衡和读写分离的功能。
1mysql双主架构设计
架构说明:
●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/f
在[mysqld]中增加如下配置项:
#设置server_id,通常设置为IP
server_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=1062
2.启动master数据库服务,创建数据同步用户,并授予相应权限
#创建数据库同步用户,并授予相应权限
grantreplicationslave,replicationclienton*.*to‘repl’@’192.168.1.206’identifiedby‘password’;
#刷新授权表信息
flushprivileges;
#查看position号(这个pisition号和日志文件在从服务器配置需要用到)
showmasterstatus;
3.slave服务器配置,修改/etc/f
#[mysqld]中增加如下配置项
#设置server_id,一般设置为IP
server_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=1
4.启动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秒,同步延迟调优参数。
##查看主从同步状态
mysql>showslavestatus\G;
可看到slave_IO_State为空,Slave_IO_Running和Slave_SQL_Running是No,表明Slave还没有开始复制过程。
##开启主从同步
mysql>startslave;
QueryOK,0rowsaffected(0.00sec)
##再查看主从同步状态
mysql>showslavestatus\G;
主要查看如下两个参数:
Slave_IO_Running和Slave_SQL_Running;参数值为Yes表示主从同步正常。
可查看master和slave上线程的状态。
在master上,可以看到slave的I/O线程创建的连接:
mysql>showprocesslist\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:
3306
mysql_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.lua
mysqlproxy实现读写负载均衡,基本原理是让主数据库处理事务性操作,让从库处理查询操作,再辅助数据库复制,把主数据库事务性操作导致的变更同步到从库,实现数据库的读写分离。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql 架构 方案设计