共计 2585 个字符,预计需要花费 7 分钟才能阅读完成。
这期内容当中丸趣 TV 小编将会给大家带来有关如何用两台服务器实现数据库的主从同步与分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
使用背景:在网联网不断发展的时代,人们对数据的使用也不断的增加,对于用户的请求不断的增加,数据库的读写操作就特别大,就会导致服务器受不了那么多用户的请求和对数据的操作,导致服务器负荷,相应的用户的等待时间就会特别长,给用户的体验特别差, 而主从同步就很好的解决的这种并发的问题。
主从同步:简单来说就是使用两台服务器,分别处理用户的读和写的操作,从而实现了读写分离。由于从服务器同步的主服务器上的数据,所以主从同步极大的保证了数据的安全。
基本原理:主从同步,分为两台服务器
如图:Master 为主服务器,Slave 为从服务器
1. 主服务器 (Master) 对数据的操作,对事务更新完成之前,mysql 将以串行的形式将日志以 2 进制的形式写入到 Binary log 日志中(即二进制日志事件),在事务写完以后,Master 通知存储引擎,提交事务.
2. 提交事务后,Slave 服务器,将 Master 的 Binary log 日志拷贝到自己的 Relay log 中(即 Slave 开启 I /O thread 读取 Master 中的 Binary log,然后写入到 Slave 中的 Relay log 中)
3.SOL thread 线程将 Relay log 中的日志读取,重做数据,达到将 Master 中的数据改变同步到 Slave 中.
所以:两台服务器,Master 提供给用户写(增,删,该)的操作,Slave 供公户读(查询)的操作,从而大大的减轻了服务器的负荷,解决了高并发的问题。
那么接下来让我们看看如何使用两台服务器搭建 mysql 的主从同步吧(ps:今天只介绍如何在服务器上搭建主从同步的实现)。
在开始之前,需要两台服务器, 安装好 linux 系统,并且安装好 mysql 5.1 以上的版本.(最好安装有 vim 编辑器)。
那么这些环境准备好了,就开始搭建吧!
1. 使用 SSH 连接你的两台服务器(这里我用的两台为 Master 和 Slave 的服务器)
2. 修改 Master 和 Slave 上的 mysql 的配置文件
a. 修改主服务器(Master)的配置文件
输入命令:vim /etc/my.cnf (mysql 的默认安装位置)
会出现以下提示:
选择 e,进行编辑.
按 i 键
在 mysqld 下添加以下配置:
server-id=1 log-bin=master-bin log-bin-index=master-bin.index
如图(看图上具体细节),wq 保存并退出,这里主服务器(Master)的配置就好了。
然后重载 mysql 配置
输入:service mysqld restart
接下来我们看看是否成功配置
在 Master 中登录 mysql
命令:mysql -uroot -p
输入密码后进入 mysql 界面,输入 show master status,如图:
b. 修改从服务器的配置(Slave)
连接 Slave 服务器,vim 打开 mysql 的配置文件
原理一样,在 mysqld 添加下配置
server-id=2 relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index
如图:
保存退出
然后重启 mysql,这里介绍另一种重启 mysql 的方法
输入命令:/etc/init.d/mysql stop 停止
/etc/init.d/mysql start 启动
登录 mysql 验证配置是否有误
说明,配置没啥问题。
3. 开始主从连接
a. 在主服务器中添加从服务器连接所用到的用户
在 master 中创建用户 mengxin(ps: 这是笔者用的名字)
create user mengxin
再授予 mengxin 主从访问权限
grant replication slave on *.* to mengxin @ 从服务器的 ip identified by 连接时需要的用户密码(自己设置)
然后输入:flush privileges
刷新更新权限信息
b. 来到从服务器(Slave)进行连接
登录到从服务器的 mysql
输入命令:
change master to master_host= 主机 ip ,master_port=3306,master_user= mengxin ,master_password= mengxin ,master_log_file= master-bin.000001 ,master_log_pos=0
进行连接,
命令说明:master_host 为 Master 服务器的 ip,master_port 为 Master 服务器的端口(默认为 3306),master_user 为刚刚在 Master 服务器上设置的 user 名,master_password 为刚刚设置的密码,master_log_file 为刚刚上面说到的要用的那个参数(ps:可以在 master 服务器上输入命令:show master status 进行查看)
执行该命令后,表示连接已完成,
开启主从同步:start slave
然后输入:show slave status \G;
查看运行状态:(如图,没有报错,表示主从同步成功配置)
最后让我们来验证一下,主从同步的效果:
在 Master 中创建 mengxin_shop 数据库
在 Slave 服务器中,查看数据库,可以看到在 master 中添加的数据库更新到 Slave 中了
呼,终于写完了,遇到了各种各样的错误,还是一点点的解决了
这里列举出配置过程中遇到的集中常见的错误吧
1. 如果配置中,最后一步查看 Slave 的状态出现如图所示错误
这表明,mysql.user 中没有 plugin 这个字段,这是因为你 mysql 的版本为 5.1,没有这个字段,授权会出现问题
解决办法:将两台服务器的 mysql 版本保持到 5.5 以上,尽量相同版本
2. 有时会出现 Slave 连接 Master 连接不上的错误,请检查服务器上的 mysql 数据库端口 3306 是否关闭防火墙。
3. 有时会出现 slave 和 master id 相同的错误,请确保 slave 配置中的 server-id 是否值只存在一个,并且为 2
上述就是丸趣 TV 小编为大家分享的如何用两台服务器实现数据库的主从同步与分离了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。