广告
返回顶部
首页 > 资讯 > 数据库 >mysql主从复制及读写分离(附安装包)
  • 784
分享到

mysql主从复制及读写分离(附安装包)

2024-04-02 19:04:59 784人浏览 八月长安
摘要

实验目的:在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般需要通过主从复制(master-slave)的

实验目的:
在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般需要通过主从复制(master-slave)的方式来同步数据,再通过读写分离提升数据库的并发负载能力。
主从复制
(一)原理
复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封并等待主服务器通知新的更新。
(二)Mysql支持的复制类型

(1)基于语句的复制: 在主服务器上执行的sql语句,在从服务器上执行同样的语句。mysql默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时, 会自动选着基于行的复制。
(2)基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
(3)混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

(三)复制工作过程
mysql主从复制及读写分离(附安装包)
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将更改应用到自己的数据上。
此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。

读写分离
(一)原理
简单来说,读写分离就是只在主服务器上写,只在从服务器上读。基本原理是让主数据库处理事务性查询,而从数据库处理select查询。数据库复制被用来把事务性查询导致的变更同步到群集中的从数据库中。
(二)读写分离工作过程
基于中间代理层实现:Mysql-Proxy Amoeba'
本实验中用amoeba实现
mysql主从复制及读写分离(附安装包)
实验拓扑:
mysql主从复制及读写分离(附安装包)
实验环境:

主机 操作系统 IP地址 主要软件
master Centos-7-x86_64 192.168.37.128 mysql-5.5.24
slave1 CentOS-7-x86_64 192.168.37.131 mysql-5.5.24
slave2 CentOS-7-x86_64 192.168.37.132 mysql-5.5.24
amoeba CentOS-7-x86_64 192.168.37.130 jdk-6u14-linux-x64.bin ;amoeba-mysql-binary-2.2.0.
client CentOS-7-x86_64 192.168.37.130 ---

实验安装包:
链接:https://pan.baidu.com/s/1bHbR0fPzmVrZf5rGB3UNCA 密码:8tho

实验过程:
一、时间同步
主服务器:
1、安装ntp,编辑配置文件

   yum install ntp -y                     #如果已安装忽略此步骤
   vim /etc/ntp.conf                     #末尾添加
   server 127.127.37.0             #本地是时钟源
   fudge 127.127.37.0 stratum 8          #设置时间层级为8/时钟可以扩散8层

2、开启服务

   systemctl start ntpd.service        #开启服务
   systemctl stop firewalld.service
   setenforce 0

从服务器:
3、安装ntp、ntpdate,开启服务

yum install ntp ntpdate -y          #如果已安装忽略此步骤
systemctl start ntpd.service        
systemctl stop firewalld.service
setenforce 0

4、开启时间同步

/usr/sbin/ntpdate 192.168.37.128

mysql主从复制及读写分离(附安装包)
二、主从复制
5、在三台服务器上手工编译安装mysql5.5(操作过程概述如下)
//安装环境

yum install GCc gcc-c++ make cmake ncurses-devel bison libaio-devel

//解压安装包

mkdir /opt/abc
mount.cifs //192.168.37.1/SHARE /opt/abc
tar zxvf /opt/abc/mysql-5.5.24.tar.gz -C /opt/

//编译安装

cd /opt/mysql-5.5.24
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHive_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DMYSQL_tcp_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DWITH_SSL=bundled

make && make install

//mysql配置文件复制

cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on

//环境变量设置

echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
. /etc/profile #(注意:"."后面有空格)

//创建管理用户mysql
useradd -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql

//数据初始化

/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

//让系统识别mysql

ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql

//开启服务

service mysqld start

6、主服务器:
//编辑配置文件

vim /etc/my.cnf
service mysqld restart
mysql

mysql主从复制及读写分离(附安装包)
//给从服务器授权

mysql>grant replication slave on . to 'myslave'@'192.168.37.%' identified by '123456'; #授权给myslave用户
#replication 复制
mysql>flush privileges; #刷新权限
mysql>show master status; #查看主服务器日志文件

mysql主从复制及读写分离(附安装包)

7、从服务器:
//编辑配置文件

vim /etc/my.cnf
service mysqld restart
注意:此处启动失败,可重新加载环境变量,或者查看进程是否被占用,重新启动即可
mysql

mysql主从复制及读写分离(附安装包)
mysql主从复制及读写分离(附安装包)
//从服务器同步主服务器
slave1:
注意:指定主服务器(操作前查看主服务器日志文件位置,会不断变化)
mysql主从复制及读写分离(附安装包)

change master to master_host='192.168.37.128',master_user='myslave',master_passWord='123456',master_log_file='master-bin.000005',master_log_pos=107;
start slave; #开启主从复制
show slave status \G; #看到两个yes

mysql主从复制及读写分离(附安装包)
slave2:

change master to master_host='192.168.37.128',master_user='myslave',master_password='123456',master_log_file='master-bin.000005',master_log_pos=828;
start slave; #开启主从复制
show slave status \G; #看到两个yes

mysql主从复制及读写分离(附安装包)
8、测试主从复制:主服务器上create database aaa,查看从服务器上是否存在数据库aaa
mysql主从复制及读写分离(附安装包)
mysql主从复制及读写分离(附安装包)

三、Amoeba安装(识别java语言)与配置
9、首先关闭防火墙

systemctl stop firewalld.service
setenforce 0

10、共享jdk安装包,复制到/usr/local目录下

mkdir /opt/abc
mount.cifs //192.168.37.1/SHARE /opt/abc
cd /opt/abc
cp jdk-6u14-linux-x64.bin /usr/local

11、执行jdk文件

./jdk-6u14-linux-x64.bin

mysql主从复制及读写分离(附安装包)
12、使系统识别jdk文件,其工作目录全部放到/usr/local下

mv jdk1.6.0_14/ /usr/local/jdk1.6

13、环境变量修改,系统可以运用安装文件的命令

vim /etc/profile
mysql主从复制及读写分离(附安装包)
source /etc/profile #刷新,使环境变量生效

14、安装amoeba

mkdir /usr/local/amoeba #新建目录
cd /opt/abc
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ #解压安装包到新建目录下
chmod -R 755 /usr/local/amoeba/ #保证755权限

15、开启amoeba

/usr/local/amoeba/bin/amoeba

mysql主从复制及读写分离(附安装包)

16、在三台服务器上添加权限,开放给amoeba访问

mysql>grant all on . to test@'192.168.37.%' identified by '123.com';
mysql>flush privileges;

17、配置代理服务器amoeba

vim /usr/local/amoeba/conf/amoeba.xml #配置文件

mysql主从复制及读写分离(附安装包)
mysql主从复制及读写分离(附安装包)

vim conf/dbServers.xml #数据库配置文件
26行
<property name="user">"test"</property> 用test身份读取mysql数据
29行
<property name="password">123.com</property>
42--主服务器地址
<dbServer name="master" parent="abstractServer">
<factoryConfig>
<property name="ipAddress">192.168.37.128</property>
50--从服务器
<dbServer name="slave1" parent="abstractServer">
<factoryConfig>
<property name="ipAddress">192.168.37.131</property>
64行--服务器池
<dbServer name="slaves" virtual="true">
<property name="poolNames">slave1,slave2</property>

18、开启amoeba,查看端口

/usr/local/amoeba/bin/amoeba start&
netstat -ntap | grep java

四、客户机测试(此处客户机与amoeba同用一台虚拟机
19、简易安装mysql

yum install mysql -y

20、登录mysql,进行如下操作

mysql -u amoeba -p123456 -h 192.168.37.130 -P8066

mysql主从复制及读写分离(附安装包)

21、从服务器:(作测试使用,实际生产环境不会停掉)

stop slave;

主服务器:只负责写入,amoeba读不到

insert into info values(1,'zhangsan',99);

slave1:

insert into info values(2,'lisi',88);

slave2:

insert into info values(3,'wangwu',77);

mysql主从复制及读写分离(附安装包)
在客户机查看:
mysql主从复制及读写分离(附安装包)

至此,实验已全部完成!

您可能感兴趣的文档:

--结束END--

本文标题: mysql主从复制及读写分离(附安装包)

本文链接: https://www.lsjlt.com/news/35745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql主从复制及读写分离(附安装包)
    实验目的:在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般需要通过主从复制(master-slave)的...
    99+
    2022-10-18
  • 详解MySQL主从复制及读写分离
    目录前言一、相关概述二、读写分离三、MySQL主从复制实验部署四、MySQL读写分离实验前言 在企业实际应用中,成熟的业务通常数据量都比较大,而单台MySQL服务器在安全性、高可用性...
    99+
    2022-11-12
  • MySQL 主从复制与读写分离
             在实际生产环境中,如果对数据库的读写都在同一块数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个...
    99+
    2022-10-18
  • mysql主从及读写分离
     主从同步1 主配置把237配置为主数据库服务器  授权用户从42数据库服务器连接自己的时候有拷贝数据的权限grant   replication &nbs...
    99+
    2022-10-18
  • MYSQL的主从复制与读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用性,还是高并发性等各个方面都是不能满足实际需求,因此,一般来说都是通过主从复制的方式来同步诗句,再通过读写分离来提升数...
    99+
    2022-10-18
  • MySQL中怎么实现主从复制及读写分离
    MySQL中怎么实现主从复制及读写分离?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、相关概述主从复制:主数据库(Master)发送更新事件到从数据库(Slave),从数...
    99+
    2023-06-14
  • 数据库---mysql主从复制读写分离
    http://m.open-open.com/m/lib/view/1413274853450.html 原理及架构分析部署前准备下载好源码包存放位置要与脚本中对应  mysql-5.5...
    99+
    2022-10-18
  • MySQL(4)-AB主从复制与读写分离
        本篇博客介绍的是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力实现mysql高可用性    首先 , 我们先了解AB主...
    99+
    2022-10-18
  • MySQL主从复制与读写分离的原理
    这篇文章主要为大家分享MySQL主从复制与读写分离的原理。文中还介绍了如何配置和验证主从复制与读写分离的实验,希望大家通过这篇文章能有所收获。MySQL主从复制与读写分离一、前言前面我们已经对MySQL数据...
    99+
    2022-10-18
  • 搭建mysql的主从复制和读写分离
    搭建mysql的主从复制和读写分离   +--------+           &...
    99+
    2022-10-18
  • MySQL数据库主从复制与读写分离
    目录一.主从复制主从复制三线程主从复制的过程:主从复制的策略:主从复制高延迟二.读写分离读写分离概念读写分离原因与场景总结一.主从复制        主从复制:在实际的生产中,为了解...
    99+
    2022-11-12
  • MySQL主从复制与读写分离原理及用法详解
    本文实例讲述了MySQL主从复制与读写分离原理及用法。分享给大家供大家参考,具体如下: 主从复制 概念 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。 假设,实时的将变化了的...
    99+
    2022-10-18
  • CentOS7上部署Mysql主从复制与读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性,高可用性,还是高并发等各方面都是完全不能满足实际需求的,因此一般来说都是通过主从复制(Master-Slave)的方式来同...
    99+
    2022-10-18
  • amoeba实现mysql读写分离+主从复制架构
    一、环境系统:centos6.5mysql版本:mysql5.6master服务器:192.168.1.21slave服务器: 192.168.1.100master写 slave读二、实现mysql主从复...
    99+
    2022-10-18
  • Mysql主从复制与读写分离图文详解
    文章思维导图 为什么使用主从复制、读写分离 主从复制、读写分离一般是一起使用的。目的很简单,就是为了提高数据库的并发性能。 你想,假设是单机,读写都在一台MySQL上面完成,性...
    99+
    2022-11-11
  • SpringBoot环境-MySQL主从复制,读写分离的实现
    目录 概述 环境 主从复制 读写分离 概述  记录在MySQL数据库中主从复制以及SpringBoot环境操作MySQL数据库读写分离的实现步骤。  背景 :因为我们在对数据库进行操作时,如果读写操作都由一台数据库承担的话压...
    99+
    2023-09-06
    mysql 数据库 java linux
  • mysql主从复制读写分离与高可用配置
    一、说明 前面我们说了mysql的安装配置(并提供一键安装脚本),mysql语句使用以及备份恢复mysql数据;本次要介绍的是mysql的主从复制,读写分离;及高可用MHA;环境如下:master:Cent...
    99+
    2022-10-18
  • 利用Amoeba实现MySQL主从复制和读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave)的方式...
    99+
    2022-10-18
  • MySQL中如何实现主从复制与读写分离
    MySQL中如何实现主从复制与读写分离,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1,mysql的配置CentOS 5.x,6.0编译安装N...
    99+
    2022-10-18
  • mysql 中的备份恢复,分区分表,主从复制,读写分离
    目录mysql 的备份和恢复mysql 的分区分表mysql 的主从复制读写分离mysql 的备份和恢复 创建备份管理员创建备份管理员,并授予管理员相应的权限备份所需权限:selec...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作