数据库主从复制,读写分离(1)

本文详细介绍了如何在实际生产环境中通过MySQL主从复制实现数据的安全性和高可用性,以及通过读写分离提高数据库的并发处理能力。具体步骤包括时间同步、二进制日志配置、权限设置及Amoeba代理层的搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql主从复制与读写分离

在实际生产环境中,如果对myql数据库的读和写都在一台数据库上,无论是在安全性、高可用性还是高并发性等各个方面都是不能满足实际需求的。

主从复制:一台mysql主服务器带两台mysql从服务器做了数据复制,前端应用在进行写操作时,对主服务器进行操作,在进行服务器读操作时,对两台从服务器进行操作,这样就减轻了对主服务器的压力。

搭建mysql主从复制

准备三台安装mysql数据库的服务器(同一网段)。

建立时间同步环境,在主节点上搭建时间同步服务器,并写成计划任务,保证三台主机时间点相同。

安装NTP服务

[root@localhost ~]# yum install ntp -y

[root@localhost ~]# vim /etc/ntp.conf

server 127.127.1.0
fudge 127.127.1.0 stratum 8 在配置文件中添加这两行

[root@localhost ~]# systemctl start ntpd 启动
[root@localhost ~]# systemctl enable ntpd 设置为开机启动

在总结点上进行时间同步:

[root@localhost ~]# yum install ntpdate

ntpdate 192.168.88.132 做成计划任务

先查看当前目录which ntpddate

crontab -e

*/5 * * * * /usr/sbin/ntpdate 192.168.88.132 注:时间服务器计划任务两台时间服务器都做。

在每台服务器上关闭防火墙

可以给MySQL设置密码

mysqladmin -u root password ‘pwd123’,后面mysql可以根据这个密码登录

配置主从复制

先启用二进制日志功能

打开它的主配置文件

[root@localhost ~]# vim /etc/my.cnf

server-id=11 每个主机的ID标识
log_bin=master-bin 开启二进制文件功能,一会产生的二进制文件名字为master
log-slave-update=ture 允许从端服务器进行更新

server-id=1
log-bin=mysql-binlog
log-slave-updates=true
max_binlog_size=1024M
auto_increment_offset = 1
auto_increment_increment = 2
在这里插入图片描述
在这里插入图片描述

重新启动mysql

systemctl restart mysql

[root@localhost ~]# netstat -tunlp |grep mysqld 查看是否已经启动,端口号3306
tcp6 0 0 :::3306 ::😗 LISTEN 14421/mysqld

[root@localhost ~]# ls /usr/local/mysql/data/ 产生了二进制文件
auto.cnf ib_logfile1 master-bin.index xuexi
db_test localhost.localdomain.err mysql
ibdata1 localhost.localdomain.pid performance_schema
ib_logfile0 master-bin.000001 test

在mysql数据库中进行授权:

登录mysql mysql -u -root -p

grant replication slave on * . * to ‘myslave’@‘192.168.88.%’ identified by ‘123456’;

flush privileges;

查看一下当前的偏移量

show master status;

偏移量代表同步点

主服务器配置完成

在从端:

[root@localhost ~]# vim /etc/my.cnf


```bash
#主库和从库需要不一致
server-id=48
#打开MySQL中继日志
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
#打开从服务二进制日志
log-bin=mysql-bin
#使得更新的数据写进二进制日志中
log-slave-updates=1

第二个从端同样在配置文件中添加此内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/3f2968e35cda40e5b84e47897ee770c1.png)



两台从端mysql服务器重新启动:

[root@localhost ~]# systemctl restart mysqld.service 

注:在克隆主机中**

[root@localhost ~]# vim /usr/local/mysql/data/auto.cnf 里面的uuid内容是相同的,主从同步会不成功。

所以在克隆主机中,里面的uuid需要改变



全部修改完配置文件后,从端进入mysql服务器

change master to master_host='192.168.88.132',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=411;

start slave;开启服务      stop slave;关闭服务

show slave status\G  查看两个线程是否开启

![在这里插入图片描述](https://img-blog.csdnimg.cn/5da3fffe6564466d95543c3315332789.png)


主从复制配置完成,现在在主服务器创建库,在从服务器种可以查到。OK!









搭建mysql读写分离

首先另开起一台服务器,安装amoeba用于做mysql前端代理层,负载均衡内部数据库

chmod +x jdk-6ul4-linux-x64.bin

./jdk-6ui4-linux-x64.bin    编译,根据提示按enter键即可

mv jdk1.6.0_14/ /usr/local/jdk1.6 为后面操作方便修改文件名称

[root@localhost ~]# vim /etc/profile

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

在配置文件中加入上述内容,为了让系统找jdk的时候先找1.6。

修改完启动文件 source /etc/profile

java -version

java环境已经配置完成



安装并配置Amoeba软件

mkdir /usr/local/amoeba

tar ... -C /usr/local/amoeba

chmod -R 755 /usr/local/amoeba

/usr/local/amoeba/bin/amoeba

amoeba start | stop       现实此内容说明amoeba安装成功





配置amoeba读写分离,两个slave读负载均衡

master , slave1 , slave2 中开放权限给amoeba 访问

grant all on * . * to test@ '192.168.88.%' identified by '123.com' 在三台数据库中各执行一次。



配置amoeba.xml配置文件

 cd /usr/local/amoeba

vim conf/amoeba.xml



编辑dbServers.xml配置文件



配置无误后,可以启动amoeba 软件其默认端口为tcp 8066。

bin/amoeba start&启动

netstat -tunlp |grep java查看java环境端口号



在client 主机上测试:yum install mysql -y 安装mysql

可以通过访问代理:mysql -u amoeba -p123456 -h 192.168.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值