Mysql实现主从复制和读写分离

如何实现数据库的主从复制:

1.在linux上安装两个linux操作系统(具体步骤不讲)

注意的是(需要设置静态ip)数据库的ip地址一般不要变

一台虚拟机叫做my-master(用来做主数据库),一台虚拟机叫做my-slave-1(用来做从数据库)    

这里写图片描述

2.在master-master上安装mysql数据库

2.1在/usr/local/src下新建目录:mysql

这里写图片描述

2.2将linux下的mysql安装包上传到新建的mysql目录下:并且解压这个安装包:
这里写图片描述

2.21解压后的文件:

这里写图片描述

2.开始安装mysql数据库,注意安装的顺序(需要安装4个):

debuginfo -> shared -> client -> server   (安装顺序弄错了,是会出现问题的)

1 - >  rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
2 - >  rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
3 - >  rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
4 - >  rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm

3.安装之后,数据库的设置

3.1开启mysql服务:

service mysql start

3.2为mysql设置用户名和密码:

mysqladmin -u root password “root”

3.3进入数据库,为root用户开发权限:

grant all on *.* to  "root"@"%" identified by "root";
FLUSH   PRIVILEGES;  (让权限生效,否则可能不会起作用或者重启mysql)

3.4退出数据库,暴露连接数据库的端口:

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
或者直接关闭防火墙(不采取) service iptables stop

4.复制sql文件到mysql目录下,然后,登入mysql,将sql文件导入数据库

source jt.sql

在linux上安转mysql就成功了,可以远程使用SQLyog连接一些这台虚拟机上的数据库,看看是否可以成功.如果能够连接,就代表一切都设置好了


现在可以拍一份快照了

然后以同样的方式搭建另一台虚拟机,并且以同样的方式安装mysql,通过本机的客户端测试连接


实现主从备份的配置


如果需要实现主从备份的话,就需要使用到二进制文件

1.在主主数据库中(my-master:)

编辑mysql的配置文件,vim /etc/my.cnf,
增加两行代码:
server-id=1
log-bin=mysql-bin

这里写图片描述

2.重启数据库service mysql restart

3.在重数据库中(my-slave-1)

编辑mysql的配置文件,vim /etc/my.cng
增加两行代码:
server-id=2    (注意跟有联系的数据库相同)
log-bin=mysql-bin

这里写图片描述


在linux系统上mysql的配置上就配置好了,接下来,使用客户端连接着两台虚拟机:

接下来就要进行主从挂载了:

1.在主数据库中(my-master):

SHOW MASTER STATUS;  (查看状态)

这里写图片描述
把File字段的msql-bin.000001复制

2.在从数据库(my-slave-01)中进行挂载:

CHANGE MASTER TO MASTER_HOST="192.168.153.138",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120;  (这个位置的数值要根据主数据中的Position来决定)

3.从数据启动挂载:

START SLAVE;

4.在从数据库中查看是否挂载成功:

SHOW SLAVE STATUS;

如果查询出的这一行数据没有错误信息,就代表挂载成功了

5.测试:在主数据库中创建测试数据库和表,刷新,从数据库实现了备份的功能


使用Amoeba实现主从数据库的读写分离


1.复制一台虚拟机用来安装Aoebda:

同样是安装在 /usr/local/src目录下  .上传文件在这个目录,并且还需要安装jdk

2.安装jdk,并且配置环境变量,解压amoeba-mysql-3.0.4-BETA的安装包

amoeba的功能是实现了代理,所有的访问都先进入amoeba这台服务器,有这台服务器来分发请求,实现数据的读写分离

3.修改amoeba的配置文件

这里写图片描述

使用xShell修改配置文件:

3.1修改dbServer.xml:

修改连接数据库的用户名和密码(所以两台数据库的密码用户名要一致,不然可能还需要另外的配置)
这里写图片描述

配置主从数据库的ip地址和名字

这里写图片描述

配置multiPool,读的策略

每3次读数据库的访问中,有一次会访问主数据库(读数据库更频繁,这样配置可以减小从数据库的压力)

这里写图片描述

3.2修改amoeba.xml

设置连接的用户名和密码:可以使用SQLyog登录

这里写图片描述

配置读写策略:

这里写图片描述

编辑完之后上传会文件原来的位置,对原来的文件实现覆盖

4.修改jvm.properties:

这里写图片描述

将两个参数调大

这里写图片描述

测试:使用SQLyod登录amoeba,虽然部署了amoeba的虚拟机上没有安装数据库,但是仍然可以连接,因为访问的还主数据库的数据,如果在amoeba上面尽心操作数据,主数据库的数据会跟着变化,从数据库的数据也会跟着变化

现在已经实现了数据库的读写分离,只是感觉不到

这里写图片描述

将本地项目连接的数据库换成amoeba这台虚拟机的ip,并且端口要变成8066.会发现能正常连接数据库

还可以将项目打包,仍在linux上安装的tomcats里面,使用nginx实现负载均衡

猜你喜欢

转载自blog.csdn.net/qq_38200548/article/details/80260118
今日推荐