详解搭建搭建MySQL主从复制和读写分离

  • 1.案例实施:搭建MySQL主从复制
    • 1.1 主节点数据库(CentOS 7-5)
    • 1.2 从节点数据库(CentOS 7-6)
    • 1.3 从节点数据库(CentOS 7-7)
    • 1.4 验证MySQL主从复制
  • 2.案例实施:搭建MySQL读写分离
    • 2.1 Amoeba服务器(CentOS 7-4)
    • 2.2 客户端(CentOS 7-3)
    • 2.3 主节点数据库(CentOS 7-5)
    • 2.4 从节点数据库(CentOS 7-6)
    • 2.5 验证MySQL读写分离和负载均衡
    • 2.6 从节点数据库(CentOS 7-7)

接上文MySQL主从复制和读写分离知识点讲解

1.案例实施:搭建MySQL主从复制

1.1 主节点数据库(CentOS 7-5)

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(1)搭建时间同步服务器

rpm -q ntp ntpdate
vim /etc/ntp.conf
restrict default nomodify
server ntp.aliyun.comntpdate ntp.aliyun.com  #查看aliyun时间同步服务器
systemctl restart ntpd   #重启ntp时间服务
ntpq -p




(2)修改/etc/my.cnf文件,开启二进制日志

vim /etc/my.cnf
server-id = 1  #设置主服务器的id号为1
log-bin=mysql-bin
binlog_format=mixedsystemctl restart mysqld


(3)添加允许从服务器复制的用户名和密码

mysql -uroot -p123
grant replication slave on *.* to 'myslave'@'%' identified by '123';
flush privileges;
show master status;

1.2 从节点数据库(CentOS 7-6)

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(1)设置计划性任务,使从服务器与主服务器保持时间同步

ntpdate 192.168.80.50    #连接主服务器的IP地址
crontab -e   #在从服务器上执行计划性任务,每30分钟向主服务器进行一次时间同步
*/30 * * * * /usr/sbin/ntpdate 192.168.80.50systemctl restart crond   #重启计划性服务
crontab -l   #查看计划性任务

(2)修改/etc/my.cnf配置文件,开启从服务器的中继日志

vim /etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=relay-log-bin.indexsystemctl restart mysqld


(3)设置从服务器连接复制主服务器的二进制日志数据

mysql -uroot -p123
change master to master_host='192.168.80.50',master_port=3306,master_user='myslave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=592;
start slave;
show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.80.50Master_User: myslaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 592Relay_Log_File: relay-log-bin.000002Relay_Log_Pos: 320Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: Yes  #查看到I/O进程和SQL进程都为Yes,表示主从服务器同步复制成功Slave_SQL_Running: Yes

1.3 从节点数据库(CentOS 7-7)

实验步骤操作同CentOS 7-6完全一样,此处省略!!!

1.4 验证MySQL主从复制

(1)在主服务器中添加数据记录


(2)在从服务器中查看数据记录是否同步发生更改

2.案例实施:搭建MySQL读写分离


强调说明: 该“案例实施:搭建MySQL读写分离”,是在“案例实施:搭建MySQL主从复制”的基础上进行的,因此此处省略MySQL主从复制的步骤!!!

2.1 Amoeba服务器(CentOS 7-4)

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(1)安装 Java 环境

cd /opt/
rz -E
amoeba-mysql-binary-2.2.0.tar.gz  jdk-6u14-linux-x64.bin
cp /opt/jdk-6-u14linux-x64.bin /usr/local/
cd /usr/local/
chmod +x /usr/local/jdk-6u14-linux-x64
./jdk-6u14-linux-x64.bin
//按yes,按enter

(2)安装Amoeba软件

cd /opt/
mkdir /opt/amoeba
tar xf amoeba-mysql-binary-2.2.0.tar.gz -C amoeba
mv /opt/amoeba /usr/local/
chmod -R 755 /usr/local/amoeba/

(3)将Amoeba服务的路径加入到系统环境变量中

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6.0_14
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$AMOEBA_HOME/binsource /etc/profile
java -version



(4)开启Amoeba服务

cd /usr/local/amoeba/bin
./amoeba


(5)配置Amoeba读写分离,两个Slave 读负载均衡

修改amoeba.xml配置文件,定义客户端连接Amoeba服务器的用户名和密码;

cp /usr/local/amoeba/conf/amoeba.xml /usr/local/amoeba/conf/amoeba.xml.bak
vim /usr/local/amoeba/conf/amoeba.xml<property name="user">admin</property>     #在30行左右定义客户端连接amoeba服务器的用户名<property name="password">123</property>    #在32行左右定义客户端连接amoeba服务器的密码<property name="writePool">master</property>      #取消该行注释,在118行左右设置写服务器池名master<property name="readPool">slaves</property>       #取消该行注释,在119行左右设置读服务器池名slaves


修改dbServers.xml配置文件,定义Amoeba服务器连接主从数据库的用户名和密码;

cp /usr/local/amoeba/conf/dbServers.xml /usr/local/amoeba/conf/dbServers.xml.bak
vim /usr/local/amoeba/conf/dbServers.xml
###22行-24行内容需要注释<!-- mysql schema <property name="schema">test</property>--><property name="user">myamoeba</property>    #在27行左右定义amoeba服务器连接主从数据库的用户名<property name="password">123</property>     #在30行左右定义amoeba服务器连接主从数据库的密码<dbServer name="master"  parent="abstractServer">    #在46行左右设置写服务器池名master<property name="ipAddress">192.168.80.50</property>   #在49行左右设置写服务器池的IP地址<dbServer name="slave1"  parent="abstractServer">    #在53行左右设置从节点名slave1<property name="ipAddress">192.168.80.60</property>   #在56行左右设置从节点名的IP地址<dbServer name="slave2"  parent="abstractServer">    #在60行左右设置从节点名slave2<property name="ipAddress">192.168.80.70</property>   #在63行左右设置从节点名的IP地址<dbServer name="slaves" virtual="true">    #在67行左右设置读服务器池名slaves<property name="poolNames">slave1,slave2</property>   #在73行左右添加从节点的名称




(6)启动Amoeba软件,并通过端口验证是否开启

cd /usr/local/amoeba/bin
./amoeba start &
netstat -lntp | grep 8066

2.2 客户端(CentOS 7-3)

(1)关闭防火墙,并禁止开机自启

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(2)安装并启动mariadb数据库

yum install -y mariadb mariadb-server
systemctl start mariadb
netstat -lntp | grep 3306


(3)登录Amoeba服务器代理访问mysql

mysql -u admin -p123 -h 192.168.80.40 -P 8066

通过amoeba服务器代理访问mysql ,在通过客户端连接mysql后写入的数据只有主服务会记录,然后同步给从服务器。

2.3 主节点数据库(CentOS 7-5)

(1)开放权限给Amoeba用户(myamoeba) 访问

grant all on *.* to 'myamoeba'@'192.168.80.%' identified by '123';
flush privileges;

2.4 从节点数据库(CentOS 7-6)

(1)开放权限给Amoeba用户(myamoeba) 访问

grant all on *.* to 'myamoeba'@'192.168.80.%' identified by '123';
flush privileges;

2.5 验证MySQL读写分离和负载均衡

查看并确定目前主从复制,以及Amoeba服务器代理运行成功;

select * from location;


测试读写分离;

###关闭两个从节点数据库
stop slave;###在客户端中新添加两条数据记录
insert into location values('hhh','gggg');
insert into location values('cgy','hjue');###在所有主机数据库中查看结果
select * from location;###两个从节点数据库开启主从复制
start slave;
select * from location;

测试负载均衡;

###在节点数据库1中添加一条数据记录
insert into location values('LYU','LYU');###在节点数据库2中添加另一条数据记录
insert into location values('HESW','HESW');###在客户端反复执行select命令查看
select * from location;


2.6 从节点数据库(CentOS 7-7)

两个从节点服务器的操作步骤完全一样,同从节点数据库(CentOS 7-6),此处省略!!!

【数据库七】搭建MySQL主从复制和读写分离详解相关推荐

  1. e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)

    主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服 ...

  2. mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离(双机热备)

    主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服 ...

  3. mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离双机热备)

    注意:如果此步骤始终为空设置(0.00秒),则表示先前的my.cnf配置不正确,请返回并重试检查配置步骤. (从)数据库中的配置 1.修改从属库的数据库配置文件 [root @ localhost]# ...

  4. mysql主从复制、读写分离到数据库水平拆分及库表散列

    文章转载自http://blog.csdn.net/sd4422739/article/details/49514981 web项目最原始的情况是一台服务器只能连接一个mysql服务器(c3p0只能配 ...

  5. 运维之道 | Mysql主从复制+mycat读写分离

    运维之道 | Mysql主从复制 + Mycat读写分离 1.什么是读写分离 读写分离,基本的原理是让主数据库处理事务性增.删.改操作(INSERT.UPDATE.DROP),而从数据库处理SELEC ...

  6. MySQL主从复制与读写分离配置及实操

    MySQL主从复制与读写分离 一.MySQL主从复制 1.复制类型 2.工作过程 二.MySQL读写分离 1.定义 2.存在意义 3.作用时间 4.原理 5.类型 基于程序代码内部实现 基于中间代理层 ...

  7. 【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)

    目录 前言 一. 介绍 二. 主从复制 1. 原理 2. 克隆从机 3. 克隆从机大坑 4. 远程登陆 5. 主机配置 6. 从机配置 7. 主机:建立账户并授权 8. 从机:配置需要复制的主机 9. ...

  8. 如何进行MySQL主从复制与读写分离的配置

    MySQL主从复制与读写分离 什么是读写分离? 为什么要读写分离呢? 什么时候要读写分离? 主从复制与读写分离 mysq支持的复制类型 主从复制的工作过程 MySQL主从复制延迟 MySQL主从复制实 ...

  9. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

最新文章

  1. 一线程序员年薪90万,不敢结婚不敢要孩子,被父母怼:堂弟月薪4千二胎都有了,家里最挫的就是我!...
  2. python pandas 读取excel 去重某一列_Python中Pandas读取修改excel操作攻略(代码示例)...
  3. java和mysql中md5+base64的执行结果
  4. 练习_用if语句替换三元运算符
  5. 华为杯数学建模优秀论文_数学建模经典例题(2011年国赛A题与优秀论文)
  6. C++(STL):24 ---序列式容器stack用法
  7. oracle导入 表 卡住了,oracle数据库怎么导入dmp,只导入数据不导入表结构?
  8. 微信公众号服务器模式,微信公众平台的两种模式
  9. 苹果手机怎么拍星空_手机怎么拍星空
  10. 页面显示pdf_PDF怎样合并?在Mac上合并PDF文件的最佳方法
  11. iOS xcode The certificate used to sign Administrator has either expired or has been revoked. An u
  12. 通俗易懂的粒子滤波算法(PF)
  13. 技术图文:如何利用C#寻找免费的IP代理服务器?
  14. 抖音直播可以看全场回放了?怎么进行有效复盘?
  15. 不知何时开学,接下来计划(罗勇军的浅谈程序设计竞赛的算法知识)
  16. 裸机搭建深度学习服务器,ubuntu ssh服务器,pytorch, tensorflow, paddle三种框架安装。以及各种避雷。
  17. 普通运维人员就是秋后的蚂蚱!
  18. 程序跑飞的原因与解决办法(转载)
  19. 如何查询党政机关会议定点场所?
  20. 【安卓开发】Android中日期选择器DatePicker和TimePicker的使用

热门文章

  1. html5 网页视频水印 | js代码实现示例
  2. 深度学习基础21(Dropout)
  3. mysql导入ibdata文件_MySQL ibdata1文件迁移
  4. 远程管理特洛伊木马(RAT)病毒
  5. john解密rar密码
  6. ffmpeg 切片花屏_FFmpeg相机花屏花图问题解决方法
  7. 电脑常用快捷键(适用于win10)
  8. 用友软件“存货核算”模块反结账时,报错:必须大于存货启用月才能恢复月末结账
  9. 搭建JSP的开发环境
  10. U3D模拟暗黑泰瑞尔翅膀物理运动效果