文章目录
- 大型网站为了解决大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别是数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。 利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。
- 读写分离就是利用mysql的主从复制完成的,本质就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。
- 本次mysql读写分离使用Amoeba实现,以下为实验过程。
- 主机名 IP 系统 amoeba 10.0.0.41 centos7.3 Mysql-Master 10.0.0.42 centos7.3 Mysql-Slave 10.0.0.43 centos7.3 注:mysql版本和安装方式无要求,实现主从即可。
- vim /etc/profile #添加如下二行到全局环境变量 export JAVA_HOME=/usr/local/jdk1.6 export PATH=$PATH:$JAVA_HOME/bin #使环境变量生效 source /etc/profile #查看java的版本 java -version #创建一个amoeba目录 mkdir /usr/local/amoeba #指定路径解压ameoba包 tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ #进入amoeba配置文件 cd /usr/local/amoeba/ cd conf/ 八、Amoeba配置文件位于/usr/local/amoeba/conf目录下,配置读写分离我们只需关注dbServers.xml和amoeba.xml,首先我们先对dbServers.xml 文件进行配置更改操作 vim /usr/local/amoeba/conf/dbServers.xml 九、之后再去MysqL-Master服务器上授权账号,设置amoeba连接后端数据库服务器的账号 grant all on *.* he@’%’ identified by ‘123’; flush privileges; 十、然后再回到amoeba服务器上再去更改另一个配置文件amoeba.xml vim /usr/local/amoeba/conf/amoeba.xml cd .. cd bin/ #前台启动amoeba服务,之后再开一个窗口进行操作 ./amoeba start #或者执行这个 /usr/local/amoeba/bin/amoeba start mysql -uroot -p123 -h10.0.0.41 -P8066 十一、测试读写分离是否成功,读和写是否分开 至此,MysqL读写分离功能成功部署。
大家好,又见面了,我是你们的朋友风君子。
大型网站为了解决大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别是数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。
利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。
1、mysql本身不能实现读写分离的功能,需要借助中间件实现,例如:Amoeba,Mysql Proxy,Atlas。今天主要介绍Amoeba实现mysql读写分离。
2、 Amoeba(变形虫)项目,该开源框架于2008发布一款Amoeba for mysql软件,该软件致力于mysql的分布式数据库前端代理层,**主要的作用是应用服务访问mysql服务器时充当SQL路由功能,并具有负载均衡、高可用性、SQL过滤、读写分离、可路由相关SQL的到目标数据库、可并发请求多台数据库全并结果的作用。**通过Amoeba能够完成多数据源的高可用、负载均衡、数据切片的功能。
目前Amoeba已在很多企业的生产线上面使用;其版本可在官网进行下载。其工作原理图如下:
读写分离就是利用mysql的主从复制完成的,本质就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。
本次mysql读写分离使用Amoeba实现,以下为实验过程。
主机名 IP 系统
amoeba 10.0.0.41 centos7.3
Mysql-Master 10.0.0.42 centos7.3
Mysql-Slave 10.0.0.43 centos7.3
主机名 IP 系统
amoeba 10.0.0.41 centos7.3
Mysql-Master 10.0.0.42 centos7.3
Mysql-Slave 10.0.0.43 centos7.3
注:mysql版本和安装方式无要求,实现主从即可。
cd /usr/local/src/
yum -y install lrzsz
rz
#增添执行权限
chmod +x jdk-6u14-linux-x64.bin
#执行安装一路空格,yes安装即可.
./jdk-6u14-linux-x64.bin
mv jdk1.6.0_14 /usr/local/jdk1.6
cd /usr/local/src/
yum -y install lrzsz
rz
#增添执行权限
chmod +x jdk-6u14-linux-x64.bin
#执行安装一路空格,yes安装即可.
./jdk-6u14-linux-x64.bin
mv jdk1.6.0_14 /usr/local/jdk1.6
vim /etc/profile
#添加如下二行到全局环境变量
export JAVA_HOME=/usr/local/jdk1.6
export PATH=$PATH:$JAVA_HOME/bin
#使环境变量生效
source /etc/profile
#查看java的版本
java -version
#创建一个amoeba目录
mkdir /usr/local/amoeba
#指定路径解压ameoba包
tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
#进入amoeba配置文件
cd /usr/local/amoeba/
cd conf/
vim /etc/profile
#添加如下二行到全局环境变量
export JAVA_HOME=/usr/local/jdk1.6
export PATH=$PATH:$JAVA_HOME/bin
#使环境变量生效
source /etc/profile
#查看java的版本
java -version
#创建一个amoeba目录
mkdir /usr/local/amoeba
#指定路径解压ameoba包
tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
#进入amoeba配置文件
cd /usr/local/amoeba/
cd conf/
八、Amoeba配置文件位于/usr/local/amoeba/conf目录下,配置读写分离我们只需关注dbServers.xml和amoeba.xml,首先我们先对dbServers.xml 文件进行配置更改操作
vim /usr/local/amoeba/conf/dbServers.xml
九、之后再去MysqL-Master服务器上授权账号,设置amoeba连接后端数据库服务器的账号
grant all on *.* he@'%' identified by '123';
flush privileges;
十、然后再回到amoeba服务器上再去更改另一个配置文件amoeba.xml
vim /usr/local/amoeba/conf/amoeba.xml
cd ..
cd bin/
#前台启动amoeba服务,之后再开一个窗口进行操作
./amoeba start
#或者执行这个
/usr/local/amoeba/bin/amoeba start
mysql -uroot -p123 -h10.0.0.41 -P8066
十一、测试读写分离是否成功,读和写是否分开
至此,MysqL读写分离功能成功部署。




















发表回复