mysql的主从服务搭建

mysql的主从复制理解

20180823085225137.png

mysql主从复制的概念和好处

  • mysql的主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是实时的业务数据操作,从数据库常用的读取为主。

其优点主要有

1,可以作为备用数据库进行操作,当主数据库出现故障之后,从数据库可以替代主数据库继续工作,不影响业务流程

2,读写分离,将读和写应用在不同的数据库与服务器上。一般读写的数据库环境配置为,一个写入的数据库,一个或多个读的数据库,各个数据库分别位于不同的服务器上,充分利用服务器性能和数据库性能;当然,其中会涉及到如何保证读写数据库的数据一致,这个就可以利用主从复制技术来完成。

3,吞吐量较大,业务的查询较多,并发与负载较大。

数据库层的几种模式

  • 在系统架构中,数据库层主要由如下几种模式,分别是单点模式、主备模式、主从模式

单点模式

单点模式是最简单的模式,只有一台数据库服务器,部署最简单。但是存在单点风险,一旦这台服务器挂掉,整个系统也就挂掉了。

主备模式

为了解决单点模式的风险,主备模式产生。目前,主备模式应该是各个线上服务系统的最低配置了,比如你在各个云平台购买的数据库服务一般都会开启备份功能。一旦主节点出现问题,还可以切换到备份节点,不至于整个系统瘫痪。

主备又分为一主一备、一主多备。多个备份是为了保证更高的安全性,万一主节点出现问题的时候,碰巧备份节点也出问题呢。

当主节点出现问题的时候要切换到备份节点,切换方式又分为手动切换和自动切换。手动切换具有一定的延时,当主节点出现问题时,只能等运维人员发现或者收到系统通知。

主从模式

主从配置一般都是和读写分离相结合,主服务器负责写数据,从服务器负责读数据,并保证主服务器的数据及时同步到从服务器。

主从模式又分为一主一从、一主多从和多主多从,越往后部署越复杂,同时,系统稳定性更高。主从模式可以更好的分担数据库压力,将插入更新操作和查询操作分开,提高系统整体性能。

本文的目的就是介绍一下简单的一主一从架构的配置

准备工作

  • 我们需要两台数据服务器,以及相应的mysql环境

我们先来搭建下mysql5.7

1. 查看系统中是否自带mysql

yum list installed | grep mysql
复制代码

2. 删除系统自带的mysql以及依赖

yum -y remove 查出来的mysql以及依赖
复制代码

3. 安装WGET命令

yum install wget -y
复制代码

image.png 4. 给Centos添加rpm源,并且选择新的源

wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
复制代码

image.png

5. 安装下载好的rpm文件

yum install mysql-community-release-el6-5.noarch.rpm -y
复制代码

image.png

6. 安装成功后会在/etc/yum.repos.d文件夹下面增加两个文件

mysql-community-source.repo 和 mysql-community.repo image.png

我们修改其中的mysql-community.repo文件,我们选择5.7版本

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Note: MySQL 5.7 is currently in development. For use at your own risk.
# Please read with sub pages: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/
[mysql57-community-dmr]
name=MySQL 5.7 Community Server Development Milestone Release
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

复制代码

7. 使用yum安装mysql

yum install mysql-community-server -y
复制代码

image.png

8. 启动mysql服务

systemctl restart mysqld.service
复制代码

9. 设置为开机自启

chkconfig mysql on
复制代码

10. 获取mysql临时密码

grep "password" /var/log/mysqld.log
复制代码

image.png

11.使用临时密码登录

mysql -uroot -p

image.png

12.修改密码

set global validate_password_policy=0;
set global validate_password_length=1;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
复制代码

13.修改远程访问权限并刷新

grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;
flush privileges;
复制代码

image.png

至此我们mysql的的环境就算搭建完成

mysql的主从服务搭建

  • 准备两台数据服务器,左边服务为主服务,右边服务为副服务

image.png

1. 我们对两台服务都创建一个数据库叫test

2 在主服务器进行配置

vi /etc/my.conf

  • 在mysqld模块中添加如下配置信息
log-bin=master-bin
binlog-format=row
server-id=1
binlog-do-db=test
--------------------------------------------------------------------------
log-bin=master-bin  二进制的文件名称
binlog-format=row  二进制日志格式,有row、statement、mixed三种格式 row指把改变内容复制过去,而不是把命令在从服务器上执行一遍
statement指在主服务器上执行的sql语句,在从服务器上执行。mysql默认采用基于语句的复制,效率上来讲比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制
server-id=1   要求各个服务器的id必须不一样
binlog-do-db=test  同步的数据库名称
binlog-do-db=test2  同步的数据库名称2
复制代码

3.修改完后需要重启数据库

systemctl restart mysqld.service

4.查看master的状态

show master status;

image.png

  • 查询出来的file和position记录下。所谓的file就是bin-log的name,position指的是slave需要从master的binlog的哪个位置开始同步数据。mySQL主从复制默认是异步的模式。MySQL增删改操作会全部记录在binary log中,当slave节点连接master时,会主动从master处获取最新的bin log文件。并把bin log中的sql relay。

5.配置副服务器登录主服务器的账号授权并刷新权限

set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by '你主服务密码';
flush privileges;
复制代码

image.png

6.切换到副服务器进行相关配置

  • 修改my.cnf 配置文件,在mysqld模块中添加如下配置信息
log-bin=master-bin   
binlog-format=row    
server-id=2 
复制代码
  • 修改完后重启服务

systemctl restart mysqld.service

  • 登录数据库,查看master的状态

show master status;

7.连接主服务器

change master to master_host='主服务器的ip',master_user='root',master_password='主服务器密码',master_port=3306,
master_log_file='主服务的file',master_log_pos=主服务器的position;
复制代码

image.png

  • 启动slave

start slave;

  • 查看slave的状态

show slave status\G;

image.png

在此我们的主从服务就算搭建成功了!!下面我们测试下

  • 在主服务的test库创建一张表并添加数据

image.png

  • 在从服务器上查看

image.png

猜你喜欢

转载自juejin.im/post/7039929615212609543