mysql主从复制

本文详细介绍了如何在CentOS7环境下配置MySQL主从复制,并实现Amoeba服务器的读写分离。步骤包括关闭防火墙、设置时间同步、配置MySQL主从、安装Amoeba及权限分配,最后进行读写分离的测试,确保数据一致性。
摘要由CSDN通过智能技术生成

代码

-----主服务器设置--------

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum install -y ntp
##主从服务器时间同步设置##
vim /etc/ntp.conf

##末行添加
server 127.127.80.0						#设置本地是时钟源,注意修改网段
fudge 127.127.80.0 stratum 8			#设置时间层级为8(限制在15内)


-----从服务器设置--------

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

##从服务器设置时间同步
yum install -y ntp ntpdate

service ntpd start

crontab -e												#创建定时任务如下		
*/30 * * * * /usr/sbin/ntpdate 192.168.80.10			


-----主服务器MySQL设置--------
vim /etc/my.cnf
##添加以下配置
server-id = 11								#修改服务器id为11
log-bin=master-bin							#添加,主服务器开启二进制日志
binlog_format = MIXED						#添加,mysql支持的复制类型为MIXED
log-slave-updates=true						#添加,允许从服务器更新二进制日志

systemctl restart mysqld.service			#重启服务器

mysql -uroot -pabc123

GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.80.%' IDENTIFIED BY '123456';		#添加授权
SHOW master status;							#查看主服务状态,如下代表正确
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      603 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
#File列显示日志名,Position 列显示偏移量


-----从服务器MySQL设置--------
vim /etc/my.cnf
server-id = 22									#修改,注意id与Master的不同,两个Slave的id也要不同
relay-log=relay-log-bin							#添加,开启中继日志,从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index			#添加,定义中继日志文件的位置和名称

systemctl restart mysqld.service 
mysql -uroot -pabc123
##配置同步,注意master_log_file和master_log_pos的值要与Master查询的一致
change master to master_host='192.168.80.10' , master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=603;

start slave;									#启动同步,如有报错执行reset slave;
show slave status\G								#查看Slave状态
#确保下面IO和SQL线程都是Yes,代表同步正常。
Slave_IO_Running: Yes							#负责与主机的io通信			
Slave_SQL_Running: Yes							#负责自己的slave mysql进程

#一-般Slave_IO_Running: No的可能性:
1、网络不通
2、my. cnf配置有问题
3、密码、file文件名、pos偏移量不对
4、防火墙没有关闭








Master	CentOS7	192.168.80.10	
Amoeba	CentOS7	192.168.80.20	
Slave1	CentOS7	192.168.80.30	
Slave2	CentOS7	192.168.80.40	
客户端	CentOS7	192.168.80.50	

-----Amoeba服务器设置--------

cd /opt/
cp jdk-6u14-linux-x64.bin /usr/local/

cd /usr/local/
chmod +x jdk-6u14-linux-x64.bin 
./jdk-6u14-linux-x64.bin
按空格到最后一行,按yes,然后再按enter

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

vim /etc/profile
## 末行添加下列配置
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin

source /etc/profile
java -version
显示:java version "1.6.0_14" 代表成功

## 安装 Amoeba软件
mkdir /usr/local/amoeba
tar zxvf /opt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/
/usr/local/amoeba/bin/amoeba
显示:amoeba start|stop 说明安装成功

---- 配置 Amoeba读写分离,两个 Slave 读负载均衡----

## 在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问
mysql -uroot -pabc123
grant all on *.* to test@'192.168.80.%' identified by '123456';


---- amoeba服务器配置amoeba服务 -----
cd /usr/local/amoeba/conf/

cp amoeba.xml amoeba.xml.bak				#备份配置文件
vim amoeba.xml
## 30行修改 ##
<property name="user">amoeba</property>
## 32行修改 ##
<property name="password">123456</property>
## 115行修改 ## 
<property name="defaultPool">master</property>
## 117行去掉注释 ##
<property name="writePool">master</property>
<property name="readPool">slaves</property>


cp dbServers.xml dbServers.xml.bak

vim dbServers.xml								#修改数据库配置文件
## 23行注释掉 ##
<!-- mysql schema 
<property name="schema">test</property>
-->
## 26行修改 ##
<!-- mysql user -->
<property name="user">test</property>
## 28 - 30 行取消注释 ##
<property name="password">123456</property>
## 45行修改 ##
<dbServer name="master"  parent="abstractServer">
## 48行修改主服务器id ##
<property name="ipAddress">192.168.80.10</property>
## 52行修改从服务器名slave1 ##
<dbServer name="slave1"  parent="abstractServer">
## 55行修改为从服务器slave1的ip ##
<property name="ipAddress">192.168.80.20</property>
## 复制58行上面6行粘贴,设置从服务器2的名slave2和地址
<dbServer name="slave2"  parent="abstractServer">
<property name="ipAddress">192.168.80.30</property>
## 65行修改 ##
<dbServer name="slaves" virtual="true">
## 71行修改 ##
<property name="poolNames">slave1,slave2</property>

/usr/local/amoeba/bin/amoeba start&   #执行此程序,按Ctrl + c 返回
netstat -anpt | grep java			  #查看是否开启了8066端口


----  测试阶段  -----

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum install -y mariadb-server mariadb
mysql -u amoeba -p123456 -h 192.168.80.40 -P8066		#通过amoeba服务器代理访问mysql ,在通过客户端连接mysql后写入的数据只有主服务会记录,然后同步给从服务器

## 主服务器 ##
use TEST;
create table test(id int(10),name varchar(10),address varchar(20));

## 两台从服务器 ##
stop slave;												#关闭同步
USE TEST;

## slave1 上
insert into test values('1','zhangsan','this_is_slave1');

## slave2 上
insert into test values('2','lisi','this_is_slave2');

## 主服务器 上
insert into test values('3','wanger','this_is_master');

## 客户端 上
use TEST;
select * from test;			#客户端会分别向slave1和slave2读取数据,显示的只有在两个从服务器上添加的数据,没有在主服务器上添加的数据
insert into test values('4','赵六','this_is_client');		##只有主服务器上有此数据

一、框架

master服务器:192.168.235.101,安装mysql5.7
slave1服务器:192.168.235.102,安装mysql5.7
slave1服务器:192.168.235.103,安装mysql5.7
客户端:192.168.235.104,安装mysql
amoeba服务器:192.168.235.105,安装jdk1.6、amoeba
所有服务器、客户端均关闭防火墙。

二、搭建主从复制

1.mysql主从服务器时间同步

master服务器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动ntp服务即可

slave服务器

两台从服务器安装ntp服务,然后开启
在这里插入图片描述
使用计划任务设置每天对时
在这里插入图片描述
在这里插入图片描述

2.服务器配置

master服务器配置

在这里插入图片描述
在这里插入图片描述
然后重启mysql服务并进入mysql数据库
在这里插入图片描述
在这里插入图片描述

slave服务器配置

在这里插入图片描述
在这里插入图片描述
重启服务并进入mysql数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此主从复制配置完成,就不去验证了。

三、搭建读写分离

amoeba服务器配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里注意,java_home后面时jdk1.6,我们也要把之前的local目录下的jdk目录重命名为这个
在这里插入图片描述

java环境配置好了然后安装amoeba软件
在这里插入图片描述
在这里插入图片描述
这个时候我们去把master、slave服务器权限给开放了,三台都要开
在这里插入图片描述
配置amoeba文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此配置全部完成。

四、测试读写分离功能

在客户端服务器上通过amoeba服务器代理访问mysql
在这里插入图片描述
我们先将两台slave服务器的slave服务关闭,既停止同步
在这里插入图片描述
然后我们在服务器中写入一点内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值