应公司产品研发需求,现将数据库主从搭建步骤做一下记录,下次就不用查资料啦
准备工作:
<1> Master服务器一台 IP:95
<2> Slave服务器一台 IP:80
<3> Mycat服务器一台 IP:79
共需三台服务器。
附:主从同步流程图
图1.1
三台服务器按照以上步骤安装即可
注意:以下配置及测试适用于新安装MySQL服务器,保证数据库一致
进入95(master)服务器配置主库
1.vim /etc/my.cnf进入MySQL配置文件
2.如图2.1红色箭头所指为必要配置信息,绿色为辅助配置
图2.1
3.退出配置文件、重启MySQL服务(service mysqld restart)并进入MySQL检查主库是否配置成功
4.MySQL脚本中输入SHOW MASTER STATUS; 回车查看状态如图2.2
5.exit;退出
进入80(slave)服务器配置从库
1.vim /etc/my.cnf进入MySQL配置文件
2.如图2.3红色箭头所指为必要配置信息,绿色为辅助配置
图2.3
3.退出配置文件、重启MySQL服务(service mysqld restart)并进入MySQL继续配置从库信息
4.在从库下进入MySQL输入如图2.4用来关联主库
内容如下:
change master to master_host='123.456.789.95',master_port=3306,master_user='repl',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=0;
图2.4
参数说明:
master_host为主服务器完整IP地址
master_port为主服务器MySQL端口号,默认3306
master_user为从服务器访问主服务器MySQL用户(需要手动创建)
master_password为从服务器访问主服务器MySQL密码(需要手动创建)
master_log_file和master_log_pos为主服务器生成的得配置信息(主服务器输入SHOW MASTER STATUS;可查看)
注:输入完以后别急着回车,因为此时主服务器MySQL下没有‘repl’这个用户
5.切换至主服务器登陆MySQL输入如图2.5来创建用户并赋权限
图2.5
6.刷新权限flush privileges;
7.返回从服务器执行之前已经输入好的命令
8.输入start slave;启动主从同步
9.输入SHOW SLAVE STATUS\G查看主从是否配置成功,如图2.6
图2.6
至此,主从同步配置完成,主库(95)执行增删改操作,从库(80)会通过binary_log二进制日志自动同步,可以通过show master status和show slave status观察日志及位置变化。
三、79服务器安装配置Mycat中间件实现读写分离
注:保证79服务器已经安装配置好MySQL数据库,因为mycat中间件依赖于MySQL数据库
安装配置Mycat分布式数据库中间件
1.百度云下载Mycathttps://pan.baidu.com/s/1aBRxkdavwZWiycQFWPAOg
2.下载好的.tar.gz通过工具上传至/usr/local目录下
3.tar -zxvf [mycat文件夹名称解压
4.进入mycat目录下conf文件夹
5.修改server.xml用户及系统配置文件如下
6.修改schema.xml逻辑库配置文件如下
1>shchema:
name:需要和server.xml配置下的user标签内shchmas标签内容一致,表示为逻辑库名称
dataNode:当shchema下无逻辑表配置时,必须加上节点属性及值
2>dataNode:
name:自定义节点名称,供schema标签使用
dataHost:自定义名称,取自dataHost节点
database:物理(实际)数据库名称
3>dataHost:
name:唯一标识dataHost标签,供上层使用
maxCon:指定每个读写实例连接池的最大连接数
minCon:指定每个读写实例连接池的最小(初始化)连接数
balance:负载均衡类型
balance="0":不开启读写分离机制,所有读操作都发送到当前可用的writeHost上
balance="1":全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1-S1,M2-S2 并且M1 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡
balance="2":所有读操作都随机的在writeHost、readHost上分发
balance="3":所有读请求随机的分发到writeHst对应的readHost执行,writeHost不负担读写压力
writeType:负载均衡类型
writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
writeType="1",所有写操作都随机的发送到配置的 writeHost。1.5以后版本废弃不推荐
4>heartbeat标签
指明用于和后端数据库进行心跳检查的语句
5>writeHost/readHost标签
指定后端数据库的相关配置,用于实例化后端连接池,唯一不同的是,一个指定写实例,一个指定读实例。
在一个 dataHost 内可以定义多个 writeHost 和 readHost。但是,如果 writeHost 指定的后端数据库宕机,那么这个 writeHost 绑定的所有 readHost 都将不可用。
另一方面,由于这个 writeHost 宕机,系统会自动的检测到,并切换到备用的 writeHost 上去。
host: 用于标识不同实例,一般 writeHost 我们使用*M1,readHost: 我们用*S1。
url: 后端实例连接地址。Native:地址:端口 JDBC:jdbc的url
password: 后端存储实例需要的密码
user: 后端存储实例需要的用户名字
weight: 权重 配置在 readhost 中作为读节点的权重
usingDecrypt: 是否对密码加密,默认0
7.配置好后,进入bin文件输入 ./mycat start启动mycat服务
注:跟踪错误请把日志配置文件log4j2.xml记录级别调整为debug方便查看错误及读写分离是否配置成功
8.输入 mysql -u用户名 -p密码 -hmycat主机ip -Pmycat端口 -D数据库名称(可选)登录mycat客户端,也可以通过Navicat远程连接mycat,server.xml配置的只读和超级管理员均可登录,只是只读只读管理员无法进行DML操作
例:mysql -uroot -proot -h127.0.0.1 -P8066 -Dmaptrack
注:mycat8066为管理端口,9066为监控端口,可监控线程及客户端连接数等等。。。
四、登录8066端口通过查看日志进行读写分离测试
1.插入一条信息,在95执行
2.读取表数据,在80执行
通过查看日志文件,主从复制、读写分离配置成功,为了提高效率,主库引擎使用InnoDB保证事务一致性,从库引擎使用MyISAM并设置索引,提高查询效率,最后,别忘了正式上线部署时日志配置文件log4j.xml日志级别重新恢复为info或者warn。