MySQL主从复制和读写分离

文章目录

一、主从复制

  • MySQL集群中用于同步数据,主服务器和从服务器,从服务器上的数据是从主服务器上进行同步

  • 准备两台MySQL

二、读写分离

  • 主要目的是将数据库的读和写的操作分离开来,一般也是和主从复制一并使用(冗余问题)

  • 读写分离解决的是负载问题

  • 准备三台台MySQL


一、主从复制配置

配置

一、准备两台CentOS。(主ip192.168.174.128  从192.168.174.133)每个人都不一样

#下载需要的工具

yum -y install vim net-tools wget

#下载安装mysql5.7版本

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

#由于是rpm包,使用rpm安装

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

#修改版本,将5.7版本开启,8.0版本关闭

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

MySQL主从复制和读写分离_第1张图片

#然后:wq 保存 

#生成缓存,安装启动mysql

yum makecache

yum -y install mysql-community-server

systemctl start mysqld

#在mysql日志文件中寻找初始随机密码假设为abc

grep password /var/log/mysqld.log

#登录数据库并修改密码(如果密码有特殊符号比如(),需要进入交互模式输入密码)

mysql -uroot -pabc

mysql> alter user user() identified by 'P-0p-0p-0';

#刷新

flush privileges;

二、配置时间同步

#主从都下载ntp时间服务器

yum -y install ntp

主服务器

#编辑主服务器ntp文件

vim /etc/ntp.conf

#最后一行添加

server 127.127.1.0

fudge 127.127.1.0 stratum 8

#启动时间服务器

systemctl start ntpd

从服务器

#同步主服务器时间

ntpdata 192.168.174.128

三、主服务器配置文件

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

vim /etc/my.cnf

#在最后一行下方添加

server-id = 11
log_bin = master-bin  #主服务器生成二进制日志的名字前缀
log-slave-updates = true   #允许从服务器读取更新二进制日志文件
#重启mysql

systemctl restart mysqld

#进入mysql,授权从服务器用户复制权限,刷新

 mysql -uroot -pP-0p-0p-0

grant replication slave on *.* to 'zhangsan'@'192.168.174.133' identified by 'P-0p-0p-0';

flush privileges;

查看主服务器状态;

show master status;

MySQL主从复制和读写分离_第2张图片

四、从服务器配置

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

vim /etc/my.cnf

#在最后一行下添加

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

#重启MySQL服务器

systemctl restart mysqld

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

mysql -uroot -pP-0p-0p-0

change master to master_host='192.168.174.128',master_user='zhangsan',master_password='P-0p-0p-0',master_log_file='master-bin.000001',master_log_pos=1491;

#开启从服务,查看状态

start slave;

show slave status\G;

MySQL主从复制和读写分离_第3张图片

 #两个yes表示成功了

二、读写分离

一、在主从复制基础上,再开一台CentOS部署amoeba

#安装jdk并配置环境变量

下载jdk1.6版本

https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-linux-x64.bin

#添加执行权限

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
 

二、部署amboeba

#下载amoeba,我下的2.2.0版本

amoeba Activity (sourceforge.net)

#在/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 'zhangsan'@'192.168.137.131' identified by 'P-0p-0p-0';

flush privileges;

#修改amoeba主配置文件

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

 MySQL主从复制和读写分离_第4张图片

 

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

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

MySQL主从复制和读写分离_第5张图片

 MySQL主从复制和读写分离_第6张图片

 MySQL主从复制和读写分离_第7张图片

 

  • 启动amoeba服务器

/usr/local/amoeba/bin/amoeba start
  • 验证

netstat -anpt

#8066 java程序 启动就ok了

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

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

主机:192.168.137.131(amoeba服务器IP)

端口:8066

用户名:amoeba

密码:P-0p-0p-0

MySQL主从复制和读写分离_第8张图片

 

 

MySQL主从复制和读写分离_第9张图片

登录上就完成了


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(mysql,数据库,java)