centos7 mysql读写分离,Centos7.4之搭建Mysql数据库主从同步、读写分离

实验拓扑图:

780f6748ab8e655d61629bcd7a46a068.png

2)一台Amoeba调度服务器:

IP地址:192.168.80.20(amoeba)

所需软件安装:jdk-8u144-linux-x64.tar.gz

amoeba-mysql-3.0.5-RC-distribution.zip

bd0dc28b07680a2575be1372a68b5f31.png

保存并退出

[root @ master]#服务ntpd重新启动

[root @ master]#服务防火墙停止

[root @ master]#setenforce 0 >

第二:源代码编译并安装mysql

这里参考https://blog.51cto.com/12227558/2074113,源代码安装和配置mysql

三:配置主服务器的mysql

[root @ master]#vi/etc/my.cnf

//在[mysqld]下配置

server_id = 11

log_bin = master_bin

log_slave_updates = true

f6b71166732fec5a5bd749694099d0c8.png

第二步是配置从属服务器slave01(192.168.80.40)

[root @ slave01]#服务防火墙停止

[root @ slave01]#setenforce 0

:设置时间同步(与主服务器同步)

[root @ slave01]#yum install-y ntpdate

[root @ slave01]#ntpdate 192.168.80.30//手动同步时间

[root @ slave01]#echo”/30 \\ */usr/sbin/ntpdate 192.168.80.30″ \ gt; \ gt;/var/spool/cron/root

//编写计划任务,每隔30分钟,时间会自动同步

[root @ slave01]#crontab \ ndash; l//查看预定的任务

第二:源代码编译并安装mysql

这里参考https://blog.51cto.com/12227558/2074113,源代码安装和配置mysql

三:配置slave01奴隶服务器mysql

[root @ slave01]#vi/etc/my.cnf

server_id = 22

relay_log = relay-log-bin

> relay_log_index = slave-relay-bin.index

3c5d2defca6457788b71432680d7d997.png

mysql \ gt;启动奴隶;

mysql \ gt;显示从属状态\\\\ G

e92529fa65bf621ab716893074074a3a82a.png

第三步是配置从属服务器slave02(192.168.80.50)

一:设置时间同步(与主服务器同步)

[root @ slave02]#service firewalld stop

[root @ slave02]#setenforce 0

[root @ slave02]#yum install-y ntpdate

[root @ slave02]#ntpdate 192.168.80.30

[root @ slave02 ]#echo”/30 \\ */usr/sbin/ntpdate 192.168.80.30″ \ gt; \ gt;/var/spool/cron/root

[root @ slave02]#crontab \ ndash; l

第二:源代码编译并安装mysql

这里参考https://blog.51cto.com/12227558/2074113,源代码安装和配置mysql

三:配置slave02奴隶服务器mysql

[root @ slave02]#vi/etc/my.cnf

server_id = 33

relay_log = relay-log-bin

> relay_log_index = slave-relay-bin.index

65f1c6ce3faaba9edf6f994180b689e7.png

mysql \ gt;启动从属;

mysql \ gt;显示从属状态\\\\ G

5254e9e94b905f4e4287e7e790ee0e65.png

步骤4验证

//在主服务器上创建一个新库并验证同步

mysql \ gt;创建数据库你好;

mysql \ gt;显示数据库;

71a13d2179689c51096987068383a3c1.png

//验证从属服务器上的结果

Slave01:

mysql \ gt;显示数据库;

879bd8041aee6157964251f56adda181.png

三:安装变形虫//下载地址:https://sourceforge.net/projects/amoeba/files/

[root @ amoeba]#yum install-y解压缩

[root @ amoeba ]#解压缩amoeba-mysql-3.0.5-RC-distribution.zip-d/usr/local/

[root @ amoeba]#mv/usr/local/amoeba-mysql-3.0.5-RC///usr/local/amoeba

[root @ amoeba]#chmod-R 755/usr/local/amoeba/

[root @ amoeba]#vi/usr/local/amoeba/jvm。属性

修改以下内容:

JVM_OPTIONS =”-server-Xms1024m-Xmx1024m-Xss256k”//32行

保存并退出

四:制作变形虫管理脚本

[root @ amoeba]#vi/etc/init.d/amoeba

#!/bin/bash

#chkconfig:35 62 62

export JAVA_HOME =/usr/local/java

export PATH = $ JAVA_HOME/bin:$ JAVA_HOME/jre/bin :$ PATH

名称=变形虫

AMOEBA_BIN =/usr/本地/变形虫/bin/启动器

SHUTDOWN_BIN =/usr/本地/变形虫/bin/关闭

PIDFILE =/usr/本地/变形虫/变形虫MySQL.pid

SCRIPTNAME =/etc/init.d/变形虫

case” $ 1″ in

开始)

echo-n”开始$ NAME…”

$ AMOEBA_BIN

echo”完成”

;;

停止)

echo-n”正在停止$ NAME…”

$ SHUTDOWN_BIN

echo”完成”

;;

重新启动)

$ SHUTDOWN_BIN

睡眠1

$ AMOEBA_BIN

;;

*)

echo”用法:$ SCRIPTNAME {开始|停止|重新启动}”

退出1

;;

esac

保存并退出

[root @ amoeba]#chmod + x/etc/init.d/amoeba

[root @ amoeba]#chkconfig–add amoeba

[root @ amoeba]#service amoeba start

//启动过程很慢,将ctrl + z置于后台并挂起,

[root @ amoeba]#bg//继续在后台运行

e12a723201df881b766cb0c859f9ae40.png

[root @ amoeba ]#netstat-anpt | grep 8066

第二步是配置读写分离。

一:主服务器创建一个测试数据库。创建数据库测试;

mysql \ gt;显示数据库;

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct%20%EF%BC%8CX_10%EF%BC%8Cy_Z%EF%BC%8C10_y%EF%BC%8C10%20alt%20=

二:在三个mysql数据库服务器中授权变形虫。授予所有许可。 \测试@” 192.168.80。%”由” abc123″标识;

mysql \ gt;冲洗特权;

2b3457339a79c25c54846d28ad36270a.png>

三:编辑变形虫服务器上的变形虫配置文件

[root @ amoeba]#cd/usr/local/amoeba

[root @ amoeba amoeba]#vi conf/amoeba.xml

//编辑以下内容

\ lt;属性名称=”用户”变形虫/属性>//第28行

\ lt;属性名称=”密码”> 123456 \ lt;/属性>//30行

//上面设置了客户端连接到变形虫前端服务器时使用的用户名和密码

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%EF%BC%8Cg_se%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmdZ%20=''G''3%20

\ lt;属性名称=” defaultPool” \ gt;母版lt;/属性>

\ lt;属性名称=” writePool” \ gt;母版lt;/属性>

\ lt;属性名称=” readPool” \ gt;奴隶/属性>

//第83行开始修改,第85和88行为注释,删除

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%EF%BC%8Cg_se%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFuZ3pod%20=%60%60Gmd%E3%80%82%E8%AF%BB%E5%86%99%E5%88%86%E9%9A%94

保存并退出

[root @ amoeba amoeba]#vi conf/dbServers.xml

修改以下内容:

\ lt;属性名称=”用户” \\ ugt26测试/属性>

\ lt;属性名称=”密码”> abc123 \ lt;/属性>

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%20%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFuZ3poZW5naGVpdGk%20=

//从服务器slave01配置:

\ lt; dbServer名称=” slave1″父=” abstractServer” \ gt;

\ lt;属性名称=” ipAddress” \ gt; 192.168.80.40 \ lt;/属性\ gt;

//从属服务器slave02配置:

将复制slave01的相关内容(共六行),直接粘贴向下并进行更改

dbServer name =” slave2″ parent =” abstractServer” \ gt;

\ lt;属性名称=” ipAddress” \ gt; 192.168.80.50 \ lt;/属性\ gt;

b076673380e84f43c687c3479e6c2c92.png

行内容:

第四部分测试验证

第一步是在客户端(192.168.80.10)上进行操作

[root @ client]#service firewalld stop

[root @ client]# setenforce 0

一:mysql的源代码编译和安装

这里参考https://blog.51cto.com/12227558/2074113,mysql的源代码安装和配置

二:测试读写分离

//新创建的数据库或MASTER中的表,两个从属服务器将通过amoeba操作进行同步

客户端登录操作

[root @@ client]#mysql-u amoeba-p123456-h 192.168.80.20-P8066

mysql \ gt;显示数据库;

10fad53d5d72355b3100a5e1f44308cf.png

mysql \ gt;使用测试;

mysql \ gt;创建表zhang(id int(10),name varchar(10),address varchar(20));

mysql \ gt;显示表格;

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%20%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFuZ3ds%20=%60%60Master%20Sync%20=%20MyLinux%20=

//在三个视图上观察时,结果相同数据库服务器

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8C%20t_100%EF%BC%8Cg_se%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFk%20=%60%60VZG5

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%EF%BC%8Cg_%20%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFuZ3poZW5naGVpdGk%20=

在两个从属服务器上停止主从同步服务

mysql>停止从属;

测试一:主服务器上插入的内容将不会同步-

//由变形虫在客户端上进行操作在zhang值中插入(” 1″,” hahahha” ,” this_is_master”);

//在主服务器上查看

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%EF%BC%8Cg_se%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFuZ3poZW5naGVpdGk%20=

测试2:在从属服务器上创建新内容

Slave01:

mysql \ gt;使用测试;

mysql \ gt;插入zhang值(“2”,” zhang”,” this_is_slave1″);

e03eba57948d7c7109206844f4ff64a6.png

Slave02:

mysql \ gt;使用测试;

mysql \ gt;插入zhang值(“3”,” zhang”,” this_is_slave2″);

87eeb005bc9bce9268a464e5bc378140.png

//在客户端上进行测试,第一次是从slave server01读取数据,第二次是从slave0 2Read

fd866b2998e4b78d479b4a3ad99f8723.png

%E6%B0%B4%E5%8D%B0%EF%BC%8Csize_16%EF%BC%8Ctext_QDUxQ1RP5Y2a5a6i%EF%BC%8Ccolor_FFFFFF%EF%BC%8Ct_100%20%EF%BC%8Cx_10%EF%BC%8Cy_10%EF%BC%8Cshadow_90%EF%BC%8Ctype_ZmFuZ3%20=%60%60Linux%20Master

测试3:通过客户端连接到数据库之后写入的数据仅由主服务器记录,然后同步到从属-从属服务器,而没有记录

,从而实现读写分离

//客户端On-end操作

mysql>插入zhang值(” 4″,” zhang”,” write_test”);

该记录只能在主服务器上看到。

e76a815ef48348d2b7b0e3e869e8fbc3.png

由于未启用同步,因此在客户端上看不到新插入的数据。

//在客户端上开始同步后,主服务器上的数据将同步到每个从属服务器,但是从属服务器上添加的数据将不同步,仅本地存储

mysql >启动奴隶;//在两个从属服务器上打开

在客户端上查看,您将看到从主服务器同步的数据,以及在本地添加的数据,但看不到从属服务器添加的其他数据:

72cbe9962242936cebb69fe1f18258ac.png

//测试完成