高性能mysql主存架构

时间:2022-08-31 14:37:44

原文:高性能mysql主存架构

MySQL Replication(Master与Slave基本原理及配置)

主从mysql工作原理:
高性能mysql主存架构
1:过程:
(1)Mysql的复制(replication)是一个异步的复制,从一个Mysql节点复制到另一个Mysql节点。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程)另外一个进程在 Master(IO进程)上。
(2)要实施复制,首先必须打开Master端的binary log功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。
2:复制的基本过程如下:
(1)Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
(2)Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;
(3)Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;
(4)Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
3:主从结论
(1)主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。 
(2)如果主从的网络断开,从会在网络正常后,批量同步。 
(3)如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。 
(4)还有一个mysql配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。 
(5)如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。
4:搭建mysql主从服务器
(1)实验环境
操作系统:Red Hat Enterprise Linux Server release 6.4
数据库版本: 5.6.21
(2)主机地址:
master:192.168.10.130
slave:192.168.10.120
(3)安装数据mysql数据库

(4)配置master的my.cnf文件
[mysqld]
log_bin = mysql-bin #开启binlog日志
basedir = /usr/local/mysql #指定mysql的安装目录
datadir = /data/mysql #指定mysql数据库的数据存放位置
port = 3306 #指定端口,默认是3306,如果一个主机有两个数据库需指定不同端口
server_id = 1 #指定server-id,必须与slave端的server-id不同
bind-address = 0.0.0.0 #默认是127.0.0.1,更改为0.0.0.0,否则Slave将无法链接到 Master
expire_logs_days = 10 #终止日志的时间,以天为单位,默认是30天
max_binlog_size = 100M #存放日志最大容量
sync-binlog=1 #允许日志同步
(5)重启mysql服务
[root@localhost ~]# service mysqld restart
(6)本地登录mysql数据库,向slave授权并查看当前使用的binlog日志与偏移量
mysql> grant replication client,replication slave on *.* to 'repluser'@'192.168.10.120' identified by '123456';
语意:允许用户repluser以密码123456在192.168.10.120主机,登陆本机数据库同步数据;
(7)查看master状态
mysql> show master status \G;
*************************** 1. row ***************************
File: mysql-bin.000015 #binlog日志
Position: 211 #偏移量
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
ERROR:
No query specified
错误显示:
mysql>show master status;
Empty set (0.02 sec)
查询如果出现以上提示表示配置有问题;
(8)配置slave服务器my.cnf文件
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
server_id = 2 #指定server-id,必须与master端的server-id不同
sync-binlog=1 #允许日志同步
read-only=1 #设置只读
(9)重启mysql服务
[root@localhost ~]# service mysqld restart
(10)本地登录mysql数据库,指定从服务器的主服务器并开启slave功能
执行以下操作必须关闭slave功能
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
-> master_host='192.168.10.130', #指定主服务器地址
-> master_port=3306, #指定端口,默认是3306,不需要指定
-> master_user='repluser', #指定同步时使用的用户名
-> master_password='123456', #指定同步用户的密码
-> master_log_file='mysql-bin.000015', #指定当前的主服务器使用的binlog日志
-> master_log_pos=120; #指定当前主服务器上的位偏移量
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
(11)查看slave是否正常工作
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.130
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000015
Read_Master_Log_Pos: 120
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(12)测试
在master创建wql数据
mysql> create database wql;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
| wql |
+--------------------+
6 rows in set (0.00 sec)
在slave数据查看是否有该数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wql |
+--------------------+
5 rows in set (0.00 sec)

Mysql主从同步搭建完成且可以正常工作,但其中有几点需要注意:

(1)设置slave服务器时在指定其主服务器时要在每个项目后面加逗号分隔
(2)如需更改slave服务器的主服务器的设置需要先停止slave服务,然后再更改,使用命令stop slave可以停止slave服务
(3)只有Slave_IO_Running与Slave_SQL_Running两个进程的状态全为Yse时才表明slave服务正常工作,否则都表示其工作异常。
Slave_IO_Running进程状态为NO的原因:
(1)连接不上主数据库服务器(物理线路,安全设置问题,授权问题)
(2)当前binlog日志名和pos点和主服务器的不一致
Slave_SQL_Running进程状态为NO的原因:从服务器本机没有主数据库上的库和表或者表结构不一致。
13:主从复制如何提高可靠性

(1)主从单向复制,从服务器只是实时的保存了主服务器的一个副本。当主服务器发生故障时,可以切换到从服务器继续做查询,但不能更新。

(2)如果采用双向复制,即两台mysql服务器即作为主服务器,又作为从服务器。那么两者都可以执行更新操作并能实现负载均衡,当一方出现故障时,另一方不受影响。但是,除非能保证任何更新操作顺序都是安全的,否则双向复制会导致失败。

注:如有操作及编写问题及时联系;QQ:1078956079 /1648111701

高性能mysql主存架构的更多相关文章

  1. 高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  2. 转&colon;高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  3. 高性能Mysql主从架构的复制原理及配置详解&lpar;转&rpar;

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  4. 高性能Mysql主从架构的复制原理及配置

    1. 复制概述 1.1 mysql支持的复制类型 1.2 复制解决的问题 1.3 复制如何工作 2. 2 复制配置 2.1创建复制帐号 2.2拷贝数据 2.3配置master 2.4配置slave 2 ...

  5. 高性能MySQL笔记:第1章 MySQL架构

    MySQL 最重要.最与众不同的特性是他的存储引擎架构,这种架构的设计将查询处理(Query Precessing)及其系统任务(Server Task)和数据的存储/提取相分离.   1.1 MyS ...

  6. 1121高性能MySQL之运行机制

    本文来自于拜读<高性能MySQL(第三版)>时的读书笔记作者:安明哲转载时请注明部分内容来自<高性能MySQL(第三版)> MySQL的逻辑构架 MySQL服务器逻辑架构 最上 ...

  7. 《高性能MySQL》读书笔记--锁、事务、隔离级别 转

    1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进 ...

  8. 高性能MySQL --- 读书笔记&lpar;1&rpar; - 2016&sol;8&sol;2

    此书不但帮助MySQL初学者提高使用技巧,更为有经验的MySQL DBA指出了开发高性能MySQL应用的途径.全书包括14章,内容覆盖MySQL系统架构.设计应用技巧.SQL语句优化.服务器性能调优. ...

  9. 《高性能MySQL》

    <高性能MySQL>(第3版)讲解MySQL如何工作,为什么如此工作? MySQL系统架构.设计应用技巧.SQL语句优化.服务器性能调优.系统配置管理和安全设置.监控分析,以及复制.扩展和 ...

随机推荐

  1. C&num;中的WebBrowser控件的使用

    0.常用方法   Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(st ...

  2. &lpar;转&rpar;将win7电脑无线网变身WiFi热点&comma;让手机、笔记本共享上网

    将win7电脑变身WiFi热点,让手机.笔记本共享上网 功能:开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器 ...

  3. &lpar;转&rpar;文件系统缓存dirty&lowbar;ratio与dirty&lowbar;background&lowbar;ratio两个参数区别

    这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_r ...

  4. Python中创建ndarrary的20中方法

    本文完整示例:完整示例代码 本文介绍了基础的.常用的创建ndarrary的多种方法,附带示例代码. 一.通过ndarray创建 import numpy as np 1.1 一维数组 a = np.a ...

  5. shell脚本-批量执行机器命令

    场景:通过跳板机,批量获取线上机器日志 使用方式:run2 host 'ls -al /home/admin/' #! /bin/sh USER_NAME=$USER if [ $# -ne 2 ]; ...

  6. shell脚本—— 字符串操作(长度,查找,替换)

    表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有 ...

  7. LINUX操作系统(centos6&period;9)安装与配置

    LINUX操作系统(centos6.9)安装与配置_百度经验 https://jingyan.baidu.com/article/acf728fd6bdba1f8e510a3f7.html cento ...

  8. CentOS RabbitMQ 高可用&lpar;Mirrored&rpar;

    原文:https://www.sunjianhua.cn/archives/centos-rabbitmq.html 一.RabbitMQ 单节点 1.1.Windows 版安装配置 1.1.1 安装 ...

  9. appium API记录

    1,滑动屏幕 driver.swipe(start_x=720, start_y=1000, end_x=0, end_y=1000,duration=1000) ,注意开始坐标不能是最大值 2,获取 ...

  10. Effective STL 学习笔记14: Use reserve to avoid unnecessary reallocations&period;

    vector 和 string 容器在动态插入一个新的对象时,如果容器内空间不够,该容器会: 重新分配空间 通常的做法是分配当前 Capacity 大小两倍的空间. 将旧空间中的所有元素拷贝进新的空间 ...