Mysql主从复制读写分离

本文详细介绍了如何配置Mysql主从复制以实现高可用性和读写分离,包括安装步骤、配置NTP、设置主从关系,以及使用amoeba进行简单易用的读写分离配置。涵盖了关键原理、实例操作和实际应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Mysql主从复制读写分离

1、Mysql的主从复制

1)Mysql主从复制的作用 
	避免单节点故障
	保证数据库的可靠性
2)Mysql可靠性解决方案
	主从复制
	主主复制
	mysql MHA
	mysql MMM
	mysql 双机热备

2、Mysql读写分离

1)Mydql读写分离的作用 
	加快用户访问速度
	增加访问并发量
2)读写分离方式
	mysql proxy:需要二次开发,使用复杂
	amoeba:java语言编写,配置简单实用方便

3、mysql主从复制的原理和复制的类型

1)mysql主从复制的原理
	开启二进制日志功能
	从mysql服务器监听主mysql复制二进制日志变化复制到本地
	从mysql读取主mysql日志应用主mysql日志从而保证数据库状态的一致性
2)mysql的复制类型
	基于语句的复制
	基于行的复制
	混合的复制类型

二、配置主从复制

1、配置NTP服务器

安装NTP

yum -y install ntp

在这里插入图片描述
修改NTP配置文件

vim /etc/ntp.conf 
	16 log-bin=mysql-bin					//开启二进制日志 
	18 server-id       = 10					//设置mysql服务器ID
	19 log-slave-update=true				//开启日志复制功能

启动服务设置开机自动启动

systemctl start ntpd
systemctl enable ntpd

从服务器同步时间

ntpdate 192.168.100.10

在这里插入图片描述

2、安装Mysql

安装mysql依赖程序

yum -y install cmake ncurses-devel

在这里插入图片描述
创建管理mysql组和用户

groupadd mysql
useradd -M -s /sbin/nologin -g mysql mysql

解压mysql压缩包

tar zxvf /mnt/mysql-5.5.22.tar.gz -C /usr/src/

在这里插入图片描述
进入mysql文件夹里

cd /usr/src/mysql-5.5.22/

在这里插入图片描述
配置mysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/user/mysql  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc

在这里插入图片描述
编译安装mysql

make && make install

在这里插入图片描述
生成mysql服务配置文件

cp support-files/my-medium.cnf /etc/my.cnf

生成服务配置文件

cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

添加系统服务设置开机自动启动

chkconfig --add mysqld
chkconfig --level 35 mysqld on

优化mysql命令

vim /etc/profile

在这里插入图片描述
初始化mysql

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

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

systemctl start mysqld

监听端口

netstat -anptu | grep 3306

在这里插入图片描述
设置mysql访问密码

mysqladmin -uroot password

在这里插入图片描述
登录mysql

mysql -uroot -ppwd@123

在这里插入图片描述
为其他两台虚拟机安装mysql数据库
在这里插入图片描述
在这里插入图片描述

3、修改主mysql配置文件

修改配置文件

vim /etc/my.cnf
	16 log-bin=mysql-bin					//开启二进制日志 
	18 server-id       = 10					//设置mysql服务器ID
	19 log-slave-update=true				//开启日志复制功能

重新启动mysql服务加载配置文件

systemctl restart mysqld

4、修改从mysql配置文件

vim /etc/my.cnf
	16 log-bin=mysql-bin
	18 server-id       = 20
	19 relay-log=relay-log-bin
	20 relay-log-index=slave-relay-bin.index

5、配置主从复制

创建主从复制账户

grant replication slave on *.* to 'slave'@'192.168.100.%' identified by 'pwd@123';

在这里插入图片描述
查看主mysql状态

show master status;

在这里插入图片描述
配置从mysql数据库复制账户

change master to master_host='192.168.100.10',master_user='slave',master_password='pwd@123',master_log_file='mysql-bin.000004',master_log_pos=263;

在这里插入图片描述
启动从数据库复制进程

start slave;

在这里插入图片描述
查看从mysql复制状态

show slave status\G;

在这里插入图片描述
使用主数据库创建新的数据库并查看
在这里插入图片描述
使用从数据库查看
在这里插入图片描述

三、读写分离

1、安装JDK和amoeba

配置所有hosts文件

vim /etc/hosts

在这里插入图片描述

将jdk复制到当前位置

cp /mnt/jdk-6u14-linux-x64.bin ./

解压JDK

./jdk-6u14-linux-x64.bin

在这里插入图片描述
移动JDK位置

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

创建amoeba配置文件

mkdir /usr/local/amoeba
tar zxvf /mnt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

在这里插入图片描述
配置环境变量

vim /etc/profile.d/java.sh
	export JAVA_HOME=/usr/local/java
	export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
	export PATH=$JAVA_HOME/lib/:$JAVA_HOME/jre/bin:$PATH:$HOME/bin/
	export AMOEBA=/usr/local/amoeba
	export PATH=$PATH:$AMOEBA/bin
source /etc/profile.d/java.sh 

查看jdk版本

java -version

在这里插入图片描述

2、配置读写分离

创建amoeba访问mysql数据库读写分离庄户

grant all on *.* to 'write'@'192.168.100.%' identified by 'pwd@123';

在这里插入图片描述
修改amoeba配置文件设置登录amoeba账户

vim /usr/local/amoeba/conf/amoeba.xml
 10                         <property name="port">8066</property>						//访问amoeba端口
	 27                                         <property name="user">amoeba</property>		//登录amoeba账户
	 28                                         <property name="password">pwd@123</property> //登录amoeba密码
	 111                 <property name="defaultPool">master</property>
	 113                 <property name="writePool">master</property>						  //主mysql
	114                 <property name="readPool">slaves</property>							  //读取组名字slaves
	115                 <property name="needParse">true</property>

修改配置文件添加读写节点

vim /usr/local/amoeba/conf/dbServers.xml
 	19                         <property name="port">3306</property>				//amoeba访问mysql端口
	22                         <property name="user">write</property>				//amoeba访问mysql账户
	23                         <property name="password">pwd@123</property>			//amoeba访问mysql密码
     38         <dbServer name="master"  parent="abstractServer">
	 39                 <factoryConfig>
	 40                         <property name="ipAddress">192.168.100.10</property>
	 41                 </factoryConfig>
	 42         </dbServer>
	 43         
	 44         <dbServer name="slave01"  parent="abstractServer">
	 45                 <factoryConfig>
	 46                         <property name="ipAddress">192.168.100.20</property>
	 47                 </factoryConfig>
	 48         </dbServer>
	 49         
	 50         <dbServer name="slave02"  parent="abstractServer">
	 51                 <factoryConfig>
	 52                         <property name="ipAddress">192.168.100.30</property>
	 53                 </factoryConfig>
	 54         </dbServer>  
	 55         <dbServer name="slaves" virtual="true">
	 56                 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
	 57                         <property name="loadbalance">1</property>
	 58                         <property name="poolNames">slave01,slave02</property>
	 59                 </poolConfig>
	 60         </dbServer>

启动amoeba服务

/usr/local/amoeba/bin/amoeba start&

在这里插入图片描述

3、配置mysql客户端

安装mysql客户端

yum -y install mariadb

在这里插入图片描述
登录amoeba

mysql -h 192.168.100.40 -P8066 -uamoeba -ppwd@123

在这里插入图片描述
创建数据库创建表
在这里插入图片描述
使用另一台查看数据库
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值