mysql双主架构方案设计文档格式.docx
《mysql双主架构方案设计文档格式.docx》由会员分享,可在线阅读,更多相关《mysql双主架构方案设计文档格式.docx(8页珍藏版)》请在冰点文库上搜索。
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上的配置
(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
log-bin=slave-mysql-bin
#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='
#用于同步数据的用户(在master中授权的用户)
master_password='
password'
#同步数据用户的密码
master_port=3306#master数据库服务的端口
master_log_file='
#指定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还没有开始复制过程。
##开启主从同步
startslave;
QueryOK,0rowsaffected(0.00sec)
##再查看主从同步状态
主要查看如下两个参数:
Slave_IO_Running和Slave_SQL_Running;
参数值为Yes表示主从同步正常。
可查看master和slave上线程的状态。
在master上,可以看到slave的I/O线程创建的连接:
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读写分离配置
--proxy-read-only-backend-address=192.168.1.206:
--proxy-lua-script=share/doc/mysql-proxyrw-splitting.lua
mysqlproxy实现读写负载均衡,基本原理是让主数据库处理事务性操作,让从库处理查询操作,再辅助数据库复制,把主数据库事务性操作导致的变更同步到从库,实现数据库的读写分离。