Mysql数据库的主从复制读写分离搭建过程与原理介绍

  • Post author:
  • Post category:mysql


首先说明一下在搭建Mysql数据库的主从复制与读写分离的过程中十分容易出错,所以在搭建的过程中一定要谨慎注重每一步的细节。

  • 传统数据库中存在的问题


1.


传统数据库设计时,

如果服务器宕机,将不能为用户提供服务导致整个系统崩溃.


2.


如果数据库突然宕机.

会导致数据丢失.


3.


为了防止数据丢失,

要进行实时备份


冷备份:

通过数据库工具进行人为的导出sql.但是手动导出数据可能在中间节点宕机时也会造成数据库的丢失.


热备份:


通过程序进行控制,

定时转储.尽可能的保证数据的完整性.但是还有大量的问题.

  • 数据库主从复制


说明:


由于传统的数据库设计在数据备份时,

不能满足业务条件,可能会造成数据丢失,为了防止数据丢失采用实时备份


方式:Mysql

主从复制技术

主从复制原理:


1.


角色划分:


主库Master:

主要进行的是数据的”更新操作”


从库Slave:

实时备份主库的更新信息


二进制日志


:


实时记录主库的更新操作,

并且形式二进制码.


中继日志:

保存主库的更新信息



2.


调用原理


1.


当主库更新数据后


,


会实时的写入到二进制日志文件中


2.


从库的


IO


线程


,


实时的监听主库的二进制文件


,


如果二进制文件发送了改变则启动线程进行读取修改后的内容


.


3.


通过


IO


线程将读取的二进制文件写入到中继日志中


.


4.


Sql


线程实时读取中继日志中的消息,

进行数据库的”更新操作”

  • 数据库主从复制的搭建

1.克隆linux系统

2.linux系统的配置

固定LinuxIP地址:

  • 配置Linux数据库环境


1.


编辑脚本环境


能够快速跳转到某一个文件夹

2.跳转文件

. Go

3.创建mysql文件夹

4.解压mysql

5.安装步骤


先安装


debug


ingo–>shared—>client—>server


四个

5.启动服务

service mysql start

6.设置用户名和密码


mysqladmin -u root password “root”


7.打开3306端口号


iptables -I INPUT -p tcp –dport 3306 -jACCEPT



Service


iptables stop

//

关闭防火墙


8.开放端口生效


/etc/rc.d/init.d/iptables save


可以不执行


9.查看当前端口开放情况


/etc/rc.d/init.d/iptables status;

10.赋予登陆权限


说明


:


权限赋值的操作必须在


mysql


环境下运行


语法:


grant [


权限


] on [


数据库名


].[


表名


] to [‘


用户名


‘]@[‘web


服务器的


ip


地址


‘] identifiedby [‘


密码


‘];


grantall on *.* to ‘root’@’%’ identified by ‘root’;


或者指定


IP


地址


grantall on *.* to ‘root’@’192.168.1.103’ identified by ‘root’;


11.通过工具远程连接数据库



12.开启二进制日志文件

/etc/my.cnf


server


-id=1

//

唯一标识数据库



log

-bin=mysql-bin

//

开启二进制日志文件




之后保存退出


13.重新启动服务


Service mysql

stop


service


mysql start


14.查看日志文件



/var


/lib/mysql/


下有日志文件






  • 配置从机

1.将主机master克隆

2.固定从机的ip地址

3.修改从机mysql的序列号


目的


:





mysql


完全的不同


由于


Masql


是克隆的


,


/var/lib/mysql/auto.cnf


中有


UUID


对数据库进行标识


,


所以需要进行修改


修改service-id


Service-id=2

4.启动slave数据库

5.查询master状态码

6.为从节点挂载主机


/*


配置注解


主机名


/


端口号


/


用户名


/


密码


*/


change master toMASTER_HOST=’192.168.247.133′,MASTER_PORT=3306,


MASTER_USER=’root’,MASTER_PASSWORD=’root’,


MASTER_LOG_FILE=’mysql-bin.000001′,MASTER_LOG_POS=120


/*


启动从服务


*/


start slave


/*


查看状态


*/


show slave status;


如果出现两个


yes


则表示加载成功

7.如果启动失败


需要从新启动


mysql


,


重新挂载

  • 数据库的读写分离


说明


:


由于数据库没有优化,

会导致主数据库的压力较大.


策略:


如果是读的操作,

都访问从数据库.


如果是写的操作.

都访问主数据库.


介绍:


概述


Amoeba


是一个以MySQL

为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、

读写分离


、高可用性等需求。与MySQL

官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。


Amoeba


相当于一个SQL

请求的

路由器


,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL


Replication


等机制来实现副本同步等功能。amoeba

对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合

KISS原则


的思想。


优势


Amoeba


主要解决以下问题:


a).


数据切分后复杂数据源整合


b).


提供数据切分规则并降低数据切分规则给数据库带来的影响


c).


降低数据库与客户端连接


d).


读写分离


路由


通过Amoeba

实现读写分离


安装


:


1.


需要依赖JDK


根据profile

中的路径.解压JDK即可

2.配置jdk

3.安装amoeba

4.查看配置文件

5.修改dbServer.xml

通过工具连接远程客户机

需要配置2项-3项

6.修改amoeba.xml

1.默认端口号8066

2.添加数据库密码

3.添加读写分离

4.指定栈空间


编辑


laun


cher


启动文件 分配内存空间


#


配置


jdk


内存空间


DEFAULT_OPTS=”-server -Xms256m -Xmx256m-Xss256k”



建议使用第二种


2.


修改


JVM.properties


适当的调整内存空间


,


否则将不会生效


JVM_OPTIONS=”-server



-Xms512m -Xmx1024m -Xss512k



-XX:PermSize=16m -XX:MaxPermSize=96m”


5.启动Amoeba


./launcher


执行启动命名

6.打开端口8066


iptables -I INPUT -p tcp –dport 8066 -jACCEPT


/etc/rc.d/init.d/iptables save

//

让端口生效


/etc/rc.d/init.d/iptables status

//

查看端口是否打开


7.

如果端口占用查看那


PID


之后


kill


杀死


isof -i:8066


java

4837 root   64u  IPv6 32545      0t0  TCP *:8066 (LISTEN)


Kill -9 4837


了解更多历史文章-关注公众号:


【北漂码农】



版权声明:本文为qq_41839665原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。