mysql数据库的主从复制与读写分离

  • 当业务的数据量比较大时,单台mysql数据库在安全性,高可用和高并发方面读无法满足实际的需要,配置多台从数据库服务器以实现读写分离

一、mysql主从复制

  • 类型:
    基于语句的复制
    基于行的复制
    混合类型的复制

  • 复制过程
    在这里插入图片描述

二、读写分离

  • 原理
    只在主服务器上写,只在从服务器上读取
    主数据库处理事务性查询,从服务器处理select查询
    在这里插入图片描述

三、实验

前期准备
服务器版本:CentOS7.6

主服务器master : 192.168.130.10

从服务器slave1 : 192.168.130.20

从服务器slave2 : 192.168.130.30

amoeba(做读写分离) : 192.168.130.40

客户端:192.168.130.50

全部关闭防火墙和核心防护功能

  • 主从复制

1、每台服务器上安装mysql数据库5.7版本,修改主机名
在这里插入图片描述
2、mysql配置文件修改
主服务器

[root@master ~]# vim /etc/my.cnf
[mysqld]     ##mysqld字段添加一下三行语句
......
server-id=11    ##服务器id号
log-bin=master-bin      ##主服务器日志文件开启
log-slave-updates=true   ##从服务器更新二进制日志

[root@master ~]# systemctl restart mysqld  ##重启数据库
[root@master ~]# mysql -uroot -p123456    ##登录
......
mysql> grant replication slave on *.* to 'myslave'@'192.168.130.%' identified by '123456';   ##添加权限用户,做主从复制
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;   ##刷新数据库
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;   ##查看当前位置,从此位置复制
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      604 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

从服务器配置(两台id号不同,其他相同配置)

[root@slave1 ~]# vim /etc/my.cnf
[mysqld]
......
server-id=22
relay-log=relay-log-bin   ##从服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index   ##定义relay-log 的位置和名称
[root@slave1 ~]# systemctl restart mysqld
[root@slave1 ~]# mysql -uroot -p123456
mysql> change master to master_host='192.168.130.10',master_user='myslave',master_password='123456',master_log_pos=604;  ##pos是位置,基于此位置进行复制
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

在这里插入图片描述

  • 验证:
    在这里插入图片描述
    在这里插入图片描述
  • 读写分离试验
    在这里插入图片描述
[root@localhost local]# cp jdk-6u14-linux-x64.bin /usr/local/
[root@localhost local]# chmod 755 jdk-6u14-linux-x64.bin
[root@localhost local]# ./jdk-6u14-linux-x64.bin
[root@localhost local]# mv jdk-6u14-linux-x64.bin jdk1.6
一直空格
yes

vim /etc/profie
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin

source /etc/profile
mkdir /usr/local/amoeba
tar zxf amoeba-mysql-binary-....   -C /usr/local/amoeba
chmod -R 755 /usr/local/amoeba

/usr/local/amoeba/bin/amoeba   #查看安装是否成功

在三台mysql上添加权限开放给amoeba访问
在这里插入图片描述
amoeba服务器配置(修改两个配置文件)

[root@localhost local]# vim /usr/local/amoeba/conf/amoeba.xml 
 30                                         <property name="user">amoeba</property>
 31 
 32                                         <property name="password">123456</property>

在这里插入图片描述

[root@localhost local]# vim /usr/local/amoeba/conf/dbServers.xml
 23                         <property name="schema">mysql</property>
##注意:此行把原来的test修改为mysql   只针对mysql5.7版本,5.6版本mysql安装完成后,
会自动创建一个test库,所以此处原来是test,因为5.7版本没有默认的test数据库,所有改为mysql

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/usr/local/amoeba/bin/amoeba start&   ##后台开启
netstat -anot | grep java

完成配置
接下来创建数据库和表进行测试完成即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值