Mysql高可用架构(主从同步)
做高可用的优势
1、成本低
2、解决单点故障
3、不容易遇到性能瓶颈
一 、Mysql主从同步架构搭建案例
优点如下:
·在业务繁忙阶段,在从服务器上可以执行查询工作(即我们常说的读写分离),降低主服务器压力;
·在从服务器上进行备份,避免备份期间影响主服务器服务;
·当主服务器出现问题时,可以迅速切换到从服务器,这样不影响线上环境。
·数据分布。由于MySQL复制并不需要很大的带宽,所以可以在不同的数据中心实现数据的拷贝。
主从复制同步的原理:
主从复制是MySQL数据库提供的一种高可用、高性能的解决方案,其实并不复杂,它不是完全的实时,其实是一种异步的实时过程,如果由于网络的原因延迟比较严重的时候,这
时候要考虑将其延迟时间作为Nagios报警的选项参数,其具体工作步骤如下。
1)主服务器把数据更新记录到二进制日志中;
2)从服务器把主服务器的二进制日志复制到自己的中继日志中,这个由从服务器的I/O线程负责;
3)从服务器执行中继日志,把其更新应用到自己的数据库上,这个由从服务器的SQL线程负责。
安装环境:
系统 CentOS release 6.9 (Final) x86_64
关闭iptables,selinux
MySQL数据库涉及的文件及对应目录:
·MySQL的安装位置:/usr/local/mysql
·MySQL的配置配置文件:/etc/my.cnf
·MySQL数据库位置:/data/mysql/
·主数据库:192.168.128.157
·从数据库:192.168.128.158
安装步骤详见:http://www.cnblogs.com/Dev0ps/p/7834037.html
两台都启动mysql服务后配置如下:
1)设置主库
1)修改主库my.cnf,主要是设置个不一样的id,以及要同步的数据库的名字。
vim /etc/my.cnf
在[mysqld]添加如下内容:
log-bin = binlog //开启log-bin日志记录
binlog-do-db = mydata //mydata同步的数据库名字
server-id = 1 //从服务器改为非1
2)重启主库
service mysqld restart
3)登录主库
mysql -u root -p //默认没有密码
4)赋予从库权限账号,允许用户在主库上读取日志,命令如下:
mysql> grant replication slave on *.* to 'admin'@'192.168.128.%'identified by 'redhat'; //允许192.168.128.0这个网络登录
mysql> flush privileges; //刷新
service mysqld restart //一定要重启才生效
从服务器测试连接:
[root@localhost src]# mysql -u admin -p -h 192.168.128.157
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
#锁主库表
mysql> flush tables with read lock; #查看File和Postion日志点
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000003 | 106 | mydata | |
+---------------+----------+--------------+------------------+
创建数据库密码:
mysqladmin -uroot password '123'
导出mydata库:
mysqldump --master-data -uroot -p123 mydata > mydata.sql
数据不大通过ssh推送到从库:
scp mydata.sql root@192.168.128.158:/root
2)从库设置
创建数据库密码:
mysqladmin -uroot password '123'
创建mysqldata数据库:
mysql> create database mydata;
导入mydata.sql数据:
[root@localhost ~]# mysql -uroot -p123 mydata < /root/mydata.sql
修改/etc/my.cnf
注释从库日志记录如果还作为其他从服务要开启
#log-bin=mysql-bin
设置为2 只要不和主库一样就行
server-id = 2
重启服务:
[root@localhost ~]# service mysqld restart
在从库上设置同步,这步也是最重要的。
设置连接MASTER MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position,命令如下所示:
注意此时一定要再次查看主库的File和Position已现在显示的为准不然同步失败。
mysql>slave stop;
mysql> change master to master_host='192.168.128.157',master_user='admin',master_password='redhat',master_log_file='binlog.000003',master_log_pos=331;
mysql>slave start;
查看从库的status状态:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.128.157
Master_User: admin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000003
Read_Master_Log_Pos: 331
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 248
Relay_Master_Log_File: binlog.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes #Slave_IO_Running:Yes(网络正常);Slave_SQL_Running:Yes(表结构正常),根据前面的MySQL主从同步的原理,这两个部分
必须都为YES(正常)才表示同步是成功的。
3)测试
主库解锁:
mysql>unlock tables;
主库上创建新表:
mysql> create table yy ( username varchar(20) not null);
从库上查看:

当主库出现问题无法启动时如果让从库作为新主库,步骤如下:
1)用stop slave IO_THREAD命令从从机上停掉IO_Thread进程,确保从机上没有再同步的SQL语句,即出现“Has read all relay log”语句字样。
2)在从数据库上执行stop slave停止从机服务,然后reset master将其设置成主数据库。
3)在其实的从机上将原有的主机IP地址更换为此机器(现在为Master主数据库)地址。
4)删除新的主数据库服务器的master.info和relay-log.info文件,防止它下次重启时还会按照从机启动。
建议:
MySQL主从Replication复制非常快,加上我们一般将其同时置于同一交换机下,所以网络方面的影响非常小,小数据量的改变几乎感觉不到延迟(但还是属于异步同步),通常在
Master端改动以后,Slave端也会立即改动,非常方便;不过,如果是用MySQL的Replication也有它的弊端,如果Master端有误操作,Slave也会误操作,这样会非常麻烦。所以,如果是作为备份机使用,就应该采取延时Replication的方法,通常是延迟一天。
Mysql高可用架构(主从同步)的更多相关文章
- mysql高可用架构之MHA,haproxy实现读写分离详解
MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理 权限的管理] 3.容灾 保证数据不丢失. 二.工作中MySQ ...
- (转)MySQL高可用架构之MHA
MySQL高可用架构之MHA 原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...
- MySQL 高可用架构在业务层面的应用分析
MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- mysql高可用架构
高可用 高可用(High Availabiltity) 应用提供持续不间断(可用)的服务的能力 系统高可用性的评价通常用可用率表示 造成不可用的原因 硬件故障(各种) 预期中的系统软硬件维护 ...
- MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解
MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...
- 032:基于Consul和MGR的MySQL高可用架构
目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...
- MySQL高可用架构应该考虑什么? 你认为应该如何设计?
一.MySQL高可用架构应该考虑什么? 对业务的了解,需要考虑业务对数据库一致性要求的敏感程度,切换过程中是否有事务会丢失 对于基础设施的了解,需要了解基础设施的高可用的架构.例如 单网线,单电源等情 ...
- MySQL高可用架构之MySQL5.7组复制MGR
MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...
- MySQL高可用架构之MHA
简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...
随机推荐
- Codeforces 915E Physical Education Lessons
原题传送门 我承认,比赛的时候在C题上卡了好久(最后也不会),15min水掉D后(最后还FST了..),看到E时已经只剩15min了.尽管一眼看出是离散化+线段树的裸题,但是没有时间写,实在尴尬. 赛 ...
- bzoj 1935: [Shoi2007]Tree 园丁的烦恼
Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个园丁道: ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
- BZOJ2300: [HAOI2011]防线修建
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2300 (我只是在发以前写过的题.. 因为题目没说强制在线,所以离线乱搞就可以了.先把点删掉然后 ...
- Prime Ring Problem(dfs水)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...
- 程序员听到bug后的N种反应,太形象了
程序员的世界里,不止有代码,还有bug,bug,bug 当出现bug时,程序员们的反应是怎样的呢?
- Button重写onClick两种方式
实现接口和匿名内部类 下午没课,自己又继续安卓的学习,照着书上做了一个left碎片Button点击后动态加载right碎片布局的Test,准备自己再继续做一个单击左碎片的button1 加载右碎片布局 ...
- Win7如何解决telnet不是内部或外部命令的方案!听语音
Telnet用于远程操作互联网中的设备或终端计算机服务器,可以有效的减少现场操作的麻烦.因为设备或终端是遍布整个省或市,有的甚至是国外,如何高效的处理问题是当务之急,除了telnet还可以ssh使用c ...
- LAMP LNMP 和 LNMPA
LAMP指的是:Linux+Apache+MySQL+Perl/PHP/Python LAMP是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件: Linux,操作系统: Apach ...
- g4e基础篇#6 了解Git历史记录
章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 了解Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git ...