首先说明一下在搭建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
了解更多历史文章-关注公众号:
【北漂码农】