在Linux上配置MySQL主从复制和读写分离

一、主从复制

(基本概念——master服务器上对数据库会有一些操作,并把这些操作写入到二进制日志中,然后slave服务器通过I/O线程将master上的二进制日志读取过来写入到中继日志中,从而同步数据)

注意:这里配置完之后,不会同步之前的数据库,只会同步在配置完之后的数据

1、master和slave这两台服务器的时间和网络时间保持一直,两台电脑都需要

ntpdate time.windows.com

二、配置(主服务器)

        1、主服务器(master),修改配置文件

[root@master ~]# vim /etc/my.cnf

        在末尾加上这三行代码:

        server-id = 11                          #服务ID
        log_bin = master-bin                #加载对应二进制日志
        log-slave-updates = true               #允许从服务器访问

        2、保存并退出,然后重启数据库

systemctl restart mysqld

        这里可以到数据库查看结果:        

        进入到数据库后:

show master status

        在Linux上配置MySQL主从复制和读写分离_第1张图片

        3、授权用户来同步数据,这里是允许从服务器,通过slave用户通过192.168.12.138的地址进行访问(IP和密码自己改)

grant replication slave on *.* to 'slave'@'192.168.12.437' identified by 'JGhuluwa.123';

二、配置(从服务器)

        1、从服务器(salve),修改配置文件

[root@slave ~]# vim /etc/my.cnf

        在末尾上加上这三行:

        server-id = 22          #服务器ID
        relay-log = relay-log-bin    #日志
        relay-log-index = slave-log-bin.index          #中继日志文件名

        2、保存并退出,重启数据库

systemctl restart mysqld

        进入从服务器数据库:

        1)这里的IP是主服务器master的ip;

        2)slave是主服务器上面配置的用户名,master_password是授权用户的密码

        3)master_log_file是日志文件名;master_log_pos是位置,在主服务器中查询到对应的值

change master to master_host='192.168.12.437',master_user='slave',master_password='JGhuluwa.123',master_log_file='master-bin.000001',master_log_pos=154;

        3、启动服务

start slave;

        4、查看配置结果

show slave status \G;

表示配置成功

在Linux上配置MySQL主从复制和读写分离_第2张图片

 

 三、验证

        1、在主服务器创建一个数据库

        create database master_slave;
        show databases;

        在Linux上配置MySQL主从复制和读写分离_第3张图片

        2、在从服务器查看

show databases;

        在Linux上配置MySQL主从复制和读写分离_第4张图片

到这里主从复制已经配置完毕

一、读写分离 (主服务器负责写入功能,从服务器负责读取功能)

        目的:充分利用slave服务器,而不光是复制主服务器的数据

 常见的有两种方法

1、从代码内部来实现:

        在代码中根据select、insert进行路由分类,这类方法也是目前生成环境应用最广泛的,有点事性能较好,不需要增加额外的硬件开支;缺点——由开发人员来实现(个人认为是优点)

 2、基于中间代理层实现

         代理一般位于客户端和服务器之间,代理服务器街道客户端请求后通过判断转发到数据库,有两个代表性程序。MySQL-Proxy  和 Amoeba——这里使用Amoeba

           这里使用  jdk-6u45-linux-x64.bin版本   和  Amoeba-mysql-binary-2.2.0.tar.gz

(想要的可以V我50)

1)、准备第三台虚拟机代理机——(agency)安装JDK

[root@agency ~]# chmod +x jdk-6u14-linux-x64.bin 
[root@agency ~]# ./jdk-6u14-linux-x64.bin

然后一直空格,最后输入yes

修改位置并改名

[root@agency ~]# mv jdk1.6.0_14/ /usr/local/jdk1.6

配置环境变量

[root@agency ~]# vim /etc/profile

在最后一行加上下面内容,配置JDK和amoeba的环境变量

export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export AMOEBA_HOME=/usr/local/amoeba           
export PATH=$PATH:$JAVA_HOME/bin:$AMOEBA_HOME/bin
然后引用一下

[root@agency ~]# source /etc/profile

查看结果 

 

 2)安装Amoeba

[root@agency ~]# mkdir amaeba        #创建一个文件夹
[root@agency ~]# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C amoeba  #解压
[root@agency ~]# mv amaeba /usr/local/     #移动到文件夹
启动Amoeba

amoeba start

1)修改amoeba的配置文件amoeba.xml 

[root@agency conf]# vim /usr/local/amoeba/conf/amoeba.xml 

在第30和32行进行设置

在Linux上配置MySQL主从复制和读写分离_第5张图片

 还有115行

 2)修改配置文件dbServers.xml 

[root@agency conf]# vim /usr/local/amoeba/conf/dbServers.xml 

在Linux上配置MySQL主从复制和读写分离_第6张图片

 这里配置主服务器

 这里配置从服务器

在Linux上配置MySQL主从复制和读写分离_第7张图片

 

3、从MySQL服务器上配置授权

mysql> grant all on *.* to 'test'@'192.168.12.432' identified by 'JGhuluwa.123';

二、使用   Navicat 进行验证(这IP地址自己看自己的)

注意这里是8066端口

在Linux上配置MySQL主从复制和读写分离_第8张图片

 链接起来进行插入数据和查询数据,抓包即可看到效果。

你可能感兴趣的:(mysql,服务器,数据库)