邯郸网站建设哪能做,浪尖工业设计公司,上海建筑公司,seo经典案例分析目录一主一从1.1 环境准备#xff1a;1.2 准备步骤#xff1a;1.3 实现步骤:1.3.1 配置master主服务器1.3.2 创建复制帐号1.3.3 查看主服务器状态1.3.4 配置slave从服务器1.3.5 启动从服务器复制线程1.3.6 查看从服务器状态1.3.7 测试1.4 扩展——实现一主多从1.4.1 需求分析…目录一主一从1.1 环境准备1.2 准备步骤1.3 实现步骤:1.3.1 配置master主服务器1.3.2 创建复制帐号1.3.3 查看主服务器状态1.3.4 配置slave从服务器1.3.5 启动从服务器复制线程1.3.6 查看从服务器状态1.3.7 测试1.4 扩展——实现一主多从1.4.1 需求分析1.4.2 具体实现过程1.5 扩展——实现半同步复制1.5.1 三种复制方式1.5.2 实现半同步复制互为主从(双主)2.1 环境准备2.2 准备步骤2.3 实现步骤2.3.1 配置第一台 master 主服务器2.3.2 配置第二台 master 主服务器2.3.3 创建复制账号2.3.4 查看服务器状态2.3.5 启动复制线程2.3.5 测试高可用架构MHA的实现正文一主一从1.1 环境准备CentOS系统服务器2台、 一台用户做MySQL主服务器 一台用于做MySQL从服务器 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。1.2 准备步骤1)iptables -F setenforce 清空防火墙策略关闭selinux2)拿两台服务器都使用yum方式安装Mysql服务 要求版本一致3)分别启动两台服务器mysql服务 确保服务正常架构图:1.3 实现步骤:1.3.1 配置master主服务器对master进行配置包括打开二进制日志指定唯一的servr ID。例如在配置文件加入如下值server-id1 //配置server-id让主服务器有唯一ID号log-binmysql-bin //打开Mysql日志日志格式为二进制skip-name-resolve //关闭名称解析(非必须)1.3.2 创建复制帐号在 Master 的数据库中建立一个备份帐户每个 slave 使用标准的 MySQL 用户名和密码连接 master 。进行复制操作的用户会授予 REPLICATION SLAVE 权限。MariaDB [(none)] grant replication slave,replication client on *.* to slave192.168.%.% identified by keer;1.3.3 查看主服务器状态在 Master 的数据库执行 show master status查看主服务器二进制日志状态及位置号。1.3.4 配置slave从服务器对 slave 进行配置打开中继日志指定唯一的 servr ID设置只读权限。在配置文件加入如下值server-id2 //配置server-id让从服务器有唯一ID号relay_log mysql-relay-bin //打开Mysql日志日志格式为二进制read_only 1 //设置只读权限log_bin mysql-bin //开启从服务器二进制日志log_slave_updates 1 //使得更新的数据写进二进制日志中1.3.5 启动从服务器复制线程让 slave 连接 master 并开始重做 master 二进制日志中的事件。MariaDB [(none)] change master to master_host192.168.37.111,master_userslave,master_passwordkeer,master_log_filemysql-bin.000001,master_log_pos413;执行start slave来启动复制线程。1.3.6 查看从服务器状态可使用SHOW SLAVE STATUS\G;查看从服务器状态如下所示也可用show processlist \G;查看当前复制状态Slave_IO_Running: Yes //IO线程正常运行Slave_SQL_Running: Yes //SQL线程正常运行1.3.7 测试1)测试主从同步我们在 master 服务器上创建一个数据库再使用该数据库创建一个表添加一条记录来看一看 slave 服务器有没有同步成功。首先我们先来查看一下两个服务器上有什么数据库masterslave现在我们在主服务器上创建一个数据库“keer”然后我们来看看从服务器是否已经更新我们可以看出数据库已经同步接下来我们就来创建表并在表中插入一条记录然后我们来看看从服务器是否更新2)测试只读属性我们在从服务器上设置了只读所以我们来试试看能不能插入数据这就很尴尬了为什么我们设置只读还是可以插入数据呢这要如何解决呢因为我们登录的时候使用的是root超级用户这个大变态是不受只读设置影响的所以我们还是可以往里面去插入数据当然如果我们换成其他的普通用户就不会出现这样的问题了。解决方式也很简单我们只需要把表锁起来就可以了MariaDB [keer] flush tables with read lock;进行锁表操作以后我们再来插入一条数据这样的话即使我们是超级用户登录进来的也不能再插入数据了。这样会安全很多。但是有利就有弊这样的话我们的主从就不能实时同步了因为我们的主从同步是通过把主上的 sql 语句放在从上再执行一遍来实现的可是我们锁表的话sql 语句就不能执行了。想要同步方法也很简单直接把表解锁就可以了。我们在主上插入一条数据此时我们的从上就要解表以后才能实现同步1.4 扩展——实现一主多从1.4.1 需求分析当我们的服务器运行一段时间后流量变得越来越多这时一主一从能够实现的高可用性和负载均衡不能满足我们的需求我们就要选择再添加一台从服务器。可是现在我们的 master 已经运行很久了我们也需要对新安装的 slave 进行数据同步甚至它没有 master 的数据。此时有几种方法可以使 slave 从另一个服务开始例如从 master 拷贝数据从另一个 slave 克隆从最近的备份开始一个 slave 。为了加快 slave 与 master 同步可用以下方式先进行数据同步(1)master的某个时刻的数据快照(2)数据库的备份数据(3)master的二进制日志文件。架构图接下来我们就来实现一下这个过程1.4.2 具体实现过程1)对 master 进行完全备份[rootmaster ~]# mkdir /backup[rootmaster ~]# mysqldump --all-database /backup/mysql-backup-date %F-%T-all.sql照例查看一下主的二进制日志状态及位置号。2)把完全备份的数据发到新增的从上[rootmaster ~]# scp /backup/mysql-backup-2017-11-21-10\:28\:29-all.sql 192.168.37.133:~root192.168.37.133s password:mysql-backup-2017-11-21-10:28:29-all.sql 100% 504KB 503.9KB/s 00:003)把这个完全备份导入从的数据库4)查看从是否恢复成功我们来查看一下从的二进制日志状态及位置号我们的数据已经恢复成功5)设置主从接下来就是按照上述步对该从服务器进行设置就好[rootslave2 ~]# vim /etc/my.cnf[mysqld]server-id 3relay-log mysql-relay-binread-only 1log-bin mysql-binlog-slave-updates 1然后我们就来设置从服务器[rootslave2 ~]# mysql -uroot -pEnter password:MariaDB [(none)] change master to master_host192.168.37.111,master_userslave,master_passwordkeer,master_log_filemysql-bin.000001,master_log_pos330;MariaDB [(none)] start slave;然后我们来查看一下从服务器的状态6)测试设置完毕我们来测试一下当主上有操作时从上是否更新至此我们就完成了一主两从。如果有需要我们还可以继续添加从服务器。1.5 扩展——实现半同步复制1.5.1 三种复制方式1)同步复制指当主库执行完一个事务所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回所以全同步复制的性能必然会收到严重的影响。需要有超时时间。2)异步复制MySQL默认的复制即是异步的主库在执行完客户端提交的事务后会立即将结果返给给客户端并不关心从库是否已经接收并处理这样就会有一个问题主如果crash掉了此时主上已经提交的事务可能并没有传到从上如果此时强行将从提升为主可能导致新主上的数据不完整。3)半同步复制介于异步复制和全同步复制之间主库在执行完客户端提交的事务后不是立刻返回给客户端而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制半同步复制提高了数据的安全性同时它也造成了一定程度的延迟这个延迟最少是一个TCP/IP往返的时间。所以半同步复制最好在低延时的网络中使用。1.5.2 实现半同步复制半同步复制是基于特定的模块来实现。不过非常 nice 的一点就是在我们的 mariadb5.5 以上的版本默认是带有这个模块的。如果我们的 centos7 上安装了 mariadb 我们就可以进入目录去查看一下[rootmaster ~]# cd /usr/lib64/mysql/plugin/找到我们的模块后我们就可以通过命令来安装然后进行简单配置即可使用了。下面就是具体方法master 服务器上MariaDB [(none)] INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so;MariaDB [(none)] SHOW GLOBAL VARIABLES LIKE rpl_semi%;MariaDB [(none)] SET GLOBAL rpl_semi_sync_master_enabledON;slave 服务器上MariaDB [(none)] INSTALL PLUGIN rpl_semi_sync_slave SONAME semisync_slave.so;MariaDB [(none)] SHOW GLOBAL VARIABLES LIKE rpl_semi%;MariaDB [(none)] SET GLOBAL rpl_semi_sync_slave_enabled ON ;MariaDB [(none)] stop slave;MariaDB [(none)] start slave;现在我们的半同步复制就开启了我们可以来查看一下日志[rootslave ~]# tail -200 /var/log/mariadb/mariadb.log从日志里也可以看出我们的半同步复制已经开启。以上实验一完成。