MySQL主从复制和读写分离

1、主从复制的目的

MySQL集群用于同步数据,主服务器和从服务器,从服务器上的数据是从服务器上进行同步,解决单点故障,提供链路冗余。

2、配置

  • 要准备两台或多台MySQL服务器

#服务器配置

1、先下载环境

yum -y install vim net-tools wget

2、下载MySQL5.7版本

wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

#下载rpm包

rpm -ivh mysql80-community-release-el7-7.noarch.rpm

#修改源文件,因为是5.7版本所以需要修改参数

vim /etc/yum.repos.d/mysql-community.repo

 :wq

3、生成缓存然后下载MySQL服务器

yum makecache

yum -y install mysql-community-server

#开启MySQL服务

systemctl start mysqld

#查找MySQL的原始密码

grep "password" /var/log/mysqld.log

4、进入MySQL修改密码

mysql -uroot -pB0iWmhtzxB/Y(密码是搜索出来的,每个人都不一样)

#修改密码,密码必须符合复杂性要求

alter user user() identified by 'Woniu.123';

#刷新

flush privileges;

  • 保证两台服务器的时间一致,在主服务器上安装时间同步服务器(ntp服务),使用从服务器去和主服务器的时间进行同步

主:

#下载时间服务器

yum -y install ntp

#编辑主服务器的时间文件

vim /etc/ntp.conf

#在最后一行下添加

server 127.127.1.0

fudge 127.127.1.0 stratum 8

:wq#保存

#开启时间服务器

systemctl start ntpd

从:

#下载时间服务器

yum -y install ntp

#同步时间

ntpdate 192.168.137.130(主服务器IP)

  • 开始主服务器配置

#在主配置文件中添加内容

vim /etc/my.cnf

#在最后一行下方添加

server-id = 11                                #主服务器的ID标识
log_bin = master-bin                   #主服务器中生成二进制日志的名字前缀
log-slave-updates = true            #允许从服务器来读取二进制日志(进行更新)

:wq

#重启MySQL服务

systemctl restart mysqld

#在MySQL中授权同步的用户,授权的权限是replication slave权限,表示允许进行复制

mysql -uroot -pWoniu.123

grant replication slave on *.* to 'myslave'@'192.168.137.%' identified by 'Woniu.123';

flush privileges;

#查看主服务器状态

show master status;

  • 进行从服务器配置

#在从配置文件中添加内容

vim /etc/my.cnf

#在最后一行下添加

server-id = 22                                                          #从服务器的ID标识
relay-log = relay-log-bin                                        #中继日志的文件名前缀
relay-log-index = slave-relay-bin.index              #专门用来记录中继日志
:wq

#重启MySQL服务器

systemctl restart mysqld

#在从服务器中开始同步主服务器

change master to master_host='192.168.137.130',master_user='myslave',master_password='Woniu.123',master_log_file='master-bin.000001',master_log_pos=1016;

#开启从服务

start slave;

#查看从服务器状态

show slave status\G;

显示如此代表成功了 

二、读写分离

1、读写分离的目的

  • 读写分离解决的是负载(将写的操作固定在主服务器上,度的操作固定在从服务器上)

2、部署amoeba实现读写分离

  • 部署jdk1.6版本,需要java环境

#下载jdk1.6

https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html(需要Oracle账户登录后才可下载)https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html%EF%BC%88%E9%9C%80%E8%A6%81Oracle%E8%B4%A6%E6%88%B7%E7%99%BB%E5%BD%95%E5%90%8E%E6%89%8D%E5%8F%AF%E4%B8%8B%E8%BD%BD%EF%BC%89#添加执行权限

chmod +x jdk-6u14-linux-x64.bin

#开始执行文件

./jdk-6u14-linux-x64.bin                #一直空格,然后yes,最后回车

#将文件移动到/usr/local/jdk1.6目录下

mv jdk1.6.0_14/ /usr/local/jdk1.6

#添加java环境

vim /etc/profile

#在最后一行下添加

export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/bin
export AMOEBA_HOME=/usr/local/amoeba/
export PATH=$PATH:$AMOEBA/bin

#立刻执行文件

source /etc/profile

  • 部署amoeba,使用的是2.2.0版本

#下载amoeba

amoeba free download - SourceForgeamoeba free download. amoeba Amoeba is a proxy that sits between your client and DB server(s) that can monitor, analyze or transfhttps://sourceforge.net/directory/?q=amoeba#在/usr/local/目录下创建amoeba目录

mkdir /usr/local/amoeba

#将amoeba解压到创建的目录下

tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

  • 在主服务器上登录MySQL,授权用户给amoeba服务器使用

grant all on *.* to 'test'@'192.168.137.131' identified by 'Woniu.123';

flush privileges;

  • 修改amoeba主配置文件

vim /usr/local/amoeba/conf/amoeba.xml

 

  • 修改amoeba的后端MySQL数据库服务器配置文件

vim /usr/local/amoeba/conf/dbServers.xml

  • 启动amoeba服务器

/usr/local/amoeba/bin/amoeba start

  • 验证

#先查看端口有没有开启

 #需要一台客户端机器,在客户端上连接amoeba服务器,用navicat连接

连接名:192.168.137.131(amoeba服务器IP)

主机:192.168.137.131(amoeba服务器IP)

端口:8066

用户名:amoeba

密码:Woniu.123


  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值