【数据库七】搭建MySQL主从复制和读写分离详解
详解搭建搭建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主从复制和读写分离详解相关推荐
- e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)
主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服 ...
- mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离(双机热备)
主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从数据库服 ...
- mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离双机热备)
注意:如果此步骤始终为空设置(0.00秒),则表示先前的my.cnf配置不正确,请返回并重试检查配置步骤. (从)数据库中的配置 1.修改从属库的数据库配置文件 [root @ localhost]# ...
- mysql主从复制、读写分离到数据库水平拆分及库表散列
文章转载自http://blog.csdn.net/sd4422739/article/details/49514981 web项目最原始的情况是一台服务器只能连接一个mysql服务器(c3p0只能配 ...
- 运维之道 | Mysql主从复制+mycat读写分离
运维之道 | Mysql主从复制 + Mycat读写分离 1.什么是读写分离 读写分离,基本的原理是让主数据库处理事务性增.删.改操作(INSERT.UPDATE.DROP),而从数据库处理SELEC ...
- MySQL主从复制与读写分离配置及实操
MySQL主从复制与读写分离 一.MySQL主从复制 1.复制类型 2.工作过程 二.MySQL读写分离 1.定义 2.存在意义 3.作用时间 4.原理 5.类型 基于程序代码内部实现 基于中间代理层 ...
- 【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)
目录 前言 一. 介绍 二. 主从复制 1. 原理 2. 克隆从机 3. 克隆从机大坑 4. 远程登陆 5. 主机配置 6. 从机配置 7. 主机:建立账户并授权 8. 从机:配置需要复制的主机 9. ...
- 如何进行MySQL主从复制与读写分离的配置
MySQL主从复制与读写分离 什么是读写分离? 为什么要读写分离呢? 什么时候要读写分离? 主从复制与读写分离 mysq支持的复制类型 主从复制的工作过程 MySQL主从复制延迟 MySQL主从复制实 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
最新文章
- 一线程序员年薪90万,不敢结婚不敢要孩子,被父母怼:堂弟月薪4千二胎都有了,家里最挫的就是我!...
- python pandas 读取excel 去重某一列_Python中Pandas读取修改excel操作攻略(代码示例)...
- java和mysql中md5+base64的执行结果
- 练习_用if语句替换三元运算符
- 华为杯数学建模优秀论文_数学建模经典例题(2011年国赛A题与优秀论文)
- C++(STL):24 ---序列式容器stack用法
- oracle导入 表 卡住了,oracle数据库怎么导入dmp,只导入数据不导入表结构?
- 微信公众号服务器模式,微信公众平台的两种模式
- 苹果手机怎么拍星空_手机怎么拍星空
- 页面显示pdf_PDF怎样合并?在Mac上合并PDF文件的最佳方法
- iOS xcode The certificate used to sign Administrator has either expired or has been revoked. An u
- 通俗易懂的粒子滤波算法(PF)
- 技术图文:如何利用C#寻找免费的IP代理服务器?
- 抖音直播可以看全场回放了?怎么进行有效复盘?
- 不知何时开学,接下来计划(罗勇军的浅谈程序设计竞赛的算法知识)
- 裸机搭建深度学习服务器,ubuntu ssh服务器,pytorch, tensorflow, paddle三种框架安装。以及各种避雷。
- 普通运维人员就是秋后的蚂蚱!
- 程序跑飞的原因与解决办法(转载)
- 如何查询党政机关会议定点场所?
- 【安卓开发】Android中日期选择器DatePicker和TimePicker的使用