Mysql数据库-多实例主从复制-主从故障详解
一、mysql结构
1.实例
1.什么是单实例
一个进程 + 多个线程 + 一个预分配的内存空间
2.多实例
多个进程 + 多个线程 + 多个预分配的内存空间
2.mysql程序结构
1)连接层
1.验证用户身份
2.提供两种连接方式
3.与sql层建立线程
2)sql层
1.接收连接层发过来的sql语句
2.判断sql的语法
3.判断sql的语义
4.解析器:解析sql语句,生成执行计划
5.优化器:选择最优执行计划
6.执行器:执行选择出来的计划,SQL
6.1 与存储引擎层建立交互,将sql语句传给存储引擎层
6.2 将存储引擎层传来的数据以表格的形式展示出来
7.将数据写入缓存
8.记录日志
3)存储引擎层
1.与sql层建立交互,接收sql层传来sql语句
2.与磁盘建立交互,获取数据

3.mysql逻辑结构
1.库:库的下面全是表
2.表:元数据 + 真实数据行
3.元数据:列 + 其它属性(行数+占用空间大小+权限)
4.列:列名字 + 数据类型 + 其他约束(非空、唯一、主键、非负数、自增长、默认值)
4.mysql物理结构
1.MySQL的最底层的物理结构是数据文件,也就是说,存储引擎层,打交道的文件,是数据文件。
2.存储引擎分为很多种类(Linux中的FS)
3.不同存储引擎的区别:存储方式、安全性、性能
#数据库创建时,不论库名还是表名,尽量都用小写字母
5.mysql物理大小
1.段:理论上一个表就是一个段,由多个区构成,(分区表是一个分区一个段)
2.区:连续的多个页构成
3.页:最小的数据存储单元,默认是16k
4.分区表:一个区构成一张段,就是一张表

二、mysql的多实例
#mysql 多实例,也是多个配置文件启动数据库
mysql多个配置文件:
1.多个端口
2.多个socket文件
3.多个日志文件
4.多个srver_id
5.多个数据目录
1.创建多实例目录
创建多实例的时候只需要,指定basedir为最原先安装的路径就好了,可以在任何文件夹下创建多实例目录,注意权限对数据库启动的影响。
[root@db03 ~]# mkdir /service/{3307,3308,3309} -p
2.编辑配置文件
[root@db03 ~]# vim /service/3307/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3307/data
port=3307
socket=/service/3307/mysql.sock
server_id=1
log_err=/service/3307/data/mysql.err
log_bin=/service/3307/data/mysql-bin
[root@db03 ~]# vim /service/3308/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3308/data
port=3308
socket=/service/3308/mysql.sock
server_id=2
log_err=/service/3308/data/mysql.err
log_bin=/service/3308/data/mysql-bin
[root@db03 ~]# vim /service/3309/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3309/data
port=3309
socket=/service/3309/mysql.sock
server_id=3
log_err=/service/3309/data/mysql.err
log_bin=/service/3309/data/mysql-bin
3.初识化多实例数据目录
[root@db03 scripts]# ./mysql_install_db --defaults-file=/service/3307/my.cnf --user=mysql --basedir=/service/mysql --datadir=/service/3307/data
[root@db03 scripts]# ./mysql_install_db --defaults-file=/service/3308/my.cnf --user=mysql --basedir=/service/mysql --datadir=/service/3308/data
[root@db03 scripts]# ./mysql_install_db .cnf --user=mysql --basedir=/service/mysql --datadir=/service/3309/data
4.授权目录
[root@db03 service]# chown -R mysql.mysql /service/
5.启动多实例
注意在多实例的启动过程中会消耗比较多的内存。
[root@db03 service]# mysqld_safe --defaults-file=/service/3309/my.cnf &
[root@db03 service]# mysqld_safe --defaults-file=/service/3308/my.cnf &
[root@db03 service]# mysqld_safe --defaults-file=/service/3307/my.cnf &
6.连接多实例并验证
[root@db03 service]# mysql -S /service/3308/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 2 |
+---------------+-------+
[root@db03 service]# mysql -S /service/3309/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 3 |
+---------------+-------+
[root@db03 service]# mysql -S /service/3307/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
7.mysql多实例设置密码
[root@db03 service]# mysqladmin -S /service/3307/mysql.sock -uroot password '123'
Warning: Using a password on the command line interface can be insecure.
[root@db03 service]# mysqladmin -S /service/3308/mysql.sock -uroot password '123'
Warning: Using a password on the command line interface can be insecure.
[root@db03 service]# mysqladmin -S /service/3309/mysql.sock -uroot password '123'
Warning: Using a password on the command line interface can be insecure.
8.设置密码后连接
使用tcp/ip 的连接会产生一个反向解析的问题。可以在配置文件中设置跳过反向解析,或者直接使用socket的方式去连接。如果使用localhost去连接会报错因为他会去找默认socket文件的位置,mysql多实例配置文件的socket的文件是我们自己指定的位置会出现找不到的情况。
[root@db03 service]# mysql -S /service/3307/mysql.sock -uroot -p
Enter password:
# 简单连接方式
[root@db03 service]# cat /usr/bin/mysql3307
mysql -S /service/3307/mysql.sock -uroot -p123
[root@db03 service]# cat /usr/bin/mysql3308
mysql -S /service/3308/mysql.sock -uroot -p123
[root@db03 service]# cat /usr/bin/mysql3309
mysql -S /service/3309/mysql.sock -uroot -p123
[root@db03 service]# chmod +x /usr/bin/mysql33*
三、数据库多实例主从复制
1.主库操作
1.开启binlog
[root@db03 service]# vim /service/3307/my.cnf
[mysqld]
basedir = /service/mysql
datadir = /service/3307/data
port=3307
socket=/service/3307/mysql.sock
server_id=1
log_err=/service/3307/data/mysql.err
log_bin=/service/3307/data/mysql-bin
2.主库授权一个用户,给从库用来连接
mysql> grant replication slave on *.* to rep@'172.16.1.%' identified by '123';
Query OK, 0 rows affected (0.18 sec)
3.主库查看binlog信息
mysql> show master status;
+------------------+----------+
| File | Position |
+------------------+----------+
| mysql-bin.000004 | 120 |
+------------------+----------+
1 row in set (0.00 sec)
2.从库的操作
#从库需要知道的主库信息
主库的IP
连接主库用的用户和密码
binlog信息
1.配置主从
change master to
master_host='172.16.1.53',
master_user='rep',
master_password='123',
master_log_file='mysql-bin.000004',
master_log_pos=120,
master_port=3307;
1.开启IO线程和sql线程
mysql> start slave;
Query OK, 0 rows affected (0.08 sec)
3.IO线程不为YES
IO线程的功能主要就是去拉取bin_log中的操作,然后再自己的数据库上面执行来达到同步的目的。
1.测试网络
[root@db03 ~]# ping 172.16.1.53
2.测试端口
[root@db03 ~]# telnet 172.16.1.53 3307
3.测试主库授权的用户登录
[root@db03 ~]# mysql -urep -p123 -h172.16.1.53 -P3307
4.反向解析
[root@db03 service]# vim /service/3307/my.cnf
skip-name-resolve
5.UUID相同
克隆的时候,uuid相同会导致配置数据库主从复制的问题。
[root@db03 ~]# cat /service/3307/data/auto.cnf
[auto]
server-uuid=527f6221-c286-11ea-9ca7-000c29e19d84
4.SQL线程不为YES
在从库上创建了数据库,会导致这个问题。
1.主库有数据,从库没有
2.从库有数据,主库没有
# 主从数据库数据不一致
Mysql数据库-多实例主从复制-主从故障详解的更多相关文章
- mysql数据库,安装 !创建!...详解!
package cn.jiayou; /* 一.mysql? a.MySQL是Web世界中使用最广泛的数据库服务器. SQLite的特点? 1.是轻量级.可嵌入,但不能承受高并发访问,适合桌面和移动应 ...
- Mysql数据库日志类型查询与配置详解
在mysql中日志分为很多种,下面小编来给大家介绍Mysql数据库日志类型查询与使用,希望对各位同学会有所帮助 mysql常见的日志类型有五种:错误日志.二进制日志.查询日志.慢查日志和中继日志. 一 ...
- mysql数据库外键、主键详解
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学 ...
- mysql用户授权、数据库权限管理、sql语法详解
mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...
- mysql:数据库与实例的区别
题记:最近想更深入的了解mysql,所以买了一些书在学习,趁着这个机会开个坑,整理一下一些我认为重要的知识点. 刚工作那会经常能听到组长提到实例这个词,一开始我以为是服务器... 数据库(databa ...
- mysql5.6主从参数详解
mysql5.6的主从相当的不错,增加了不少参数,提升了主从同步的安全和效率,以下是mysql5.6主从参数详解. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- MYSQL服务器my.cnf配置文档详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- mysql服务性能优化—my.cnf配置说明详解
MYSQL服务器my.cnf配置文档详解硬件:内存16G [client]port = 3306socket = /data/3306/mysql.sock [mysql]no-auto-rehash ...
- MySQL慢查询(二) - pt-query-digest详解慢查询日志 pt-query-digest 慢日志分析
随笔 - 66 文章 - 0 评论 - 19 MySQL慢查询(二) - pt-query-digest详解慢查询日志 一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它 ...
随机推荐
- nginx 本地配置(解决跨域问题)
前端做跨域本身就是扯淡的事情.后台人员不配合说什么都是白搭.索性整理了一下心得,(可以直接部署自配置)发不多说上代码: 1 #user nobody; 2 worker_processes 1; 3 ...
- [Fundamental of Power Electronics]-PART I-1.引言-1.2 1.3 电力电子技术的几个应用、本书内容
1.2 电力电子技术的几个应用 高效开关变换器面临的功率范围从 (1)小于1瓦(电池供电的便携式设备内的DC-DC转换器)到(2)计算机及办公设备中的几十,几百,数千瓦到(3)变速电机驱动器中上千瓦及 ...
- Apache Hudi 0.8.0版本重磅发布
1. 重点特性 1.1 Flink集成 自从Hudi 0.7.0版本支持Flink写入后,Hudi社区又进一步完善了Flink和Hudi的集成.包括重新设计性能更好.扩展性更好.基于Flink状态索引 ...
- BUAA_OS lab2 难点梳理
BUAA_OS lab2 难点梳理 实验重点 所列出的实验重点为笔者在进行lab2过程中认为需要深刻理解的部分. 进行内存访问的流程 熟悉mips内存映射布局,即理解mmu.h内图 二级页表的理解和实 ...
- Spring-@PostConstruct注解
@PostConstruct注解 @PostConstruct注解好多人以为是Spring提供的.其实是Java自己的注解. Java中该注解的说明:@PostConstruct该注解被用来修饰一个非 ...
- 所谓 ICMP,不过将军与士卒而已
什么是 ICMP 协议 关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失.重复.延迟和乱序等各种情况, 但 ...
- Kubernetes 普及系列:容器基础入门
随着云原生时代的来临,云以及分布式计算已经是时下最受欢迎的技术之一了.其中 Docker 作为最知名的容器平台,到底有着怎样的魅力来让其无人不知无人不晓?废话不多说,让我们开始逐层掀开容器技术的神秘面 ...
- 9.while循环
while 循环 语法: while( 布尔表达式 ) { //循环内容 } 布尔值为 true 开始循环,为 false 结束循环 死循环:布尔值一直为 true. 例: package com.w ...
- pyqt5 菜单栏+信息提示框
前言 使用pyqt5 添加菜单栏 单击菜单栏 弹出信息框(MessageBox用法) 菜单栏 功能 Action是Qt中单独引入的一个对象,对应QAction类.Action表示一个独立的操作,是将界 ...
- 关于 C/C++ 函数调用约定
关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的. VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调 ...