MySQL高级学习笔记day03

《黑马程序员MySQL数据库入门到精通,从mysql安装到mysql高级mysql优化》学习笔记总目录 MySQL数据库入门到精通,从mysql安装到mysql高级mysql优化》所有知识点的笔记进行总结分类。学习时总结的目录笔记以及。和实训,将在后续更新。第一章:MySQL概述。 阅读详情

MySQL主从复制

概述

生产环境中如果数据库只有一台服务器,容易产生单点故障问题,如这台服务器访问压力过大没有响应,服务不可用,或者硬盘坏了,整个数据库数据就丢失了为了保障数据安全可靠性,我们需要将数据复制多份部署在多台不同的服务器上,就算一台坏了其他还可以提供服务主从复制可以实现对数据库备份和读写分离主服务器负责读和写,从服务器只负责读

一主多从架构

在这里插入图片描述

主从复制原理

当master主服务器上的数据发生改变时,则将其改变写入二进制事件日志文件中salve,从服务器会在一定时间内对master主服务器上的二进制日志进行探测,探测器是否发生改变,如果探测master主服务器的二进制时间日志发生改变,则开始一个I/OThread请求master二进制事件日志,同时master主服务器为每个I/OThread启动一个dump Thread,用于向其发送二进制时间日志salve从服务器将接收到的二进制事件日志保存至自己本地的中继日志文件中salve从服务器将启动SQL Thread从中继日志中读取二进制日志,在本地重放,使得起数据和主服务器保持一致;最后I/O Thread和SQL Thread将进入睡眠状态,等待下一次被唤醒。

主从复制流程图

在这里插入图片描述

MySQL多实例搭建

一台Linux服务器上同时启动多个MySQL数据库(技术研究和学习的场景)

每台服务器都分别安装MySQL(适用于实际线上生产环境)

  1. 上传mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz到/usr/local/software

2.tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

3.mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql-5.7.24

4.cd mysql-5.7.24

5**.mkdir data**

6.进入data目录 创建2个文件夹 mkdir 3307 3308

7.如果此Linux从未安装过MySQL 执行下面步骤

groupadd mysql

useradd -g mysql mysql

8.修改权限(cd /usr/local目录)

chgrp -R mysql mysql-5.7.24

chown -R mysql mysql-5.7.24

chown -R mysql mysql-5.7.24/data/

chown -R root mysql-5.7.24

9.添加MySQL环境变量

vim /etc/profile

在文件末尾添加

export MYSQL_HOME=/usr/local/software/mysql-5.7.24

export PATH=$MYSQL_HOME/bin:$PATH

需要执行 source /etc/profiles

10.执行数据库初始化

mysqld --initialize-insecure --basedir=/usr/local/software/mysql-5.7.24 --datadir=/usr/local/software/mysql-5.7.24/data/3307 --user=mysql

mysqld --initialize-insecure --basedir=/usr/local/software/mysql-5.7.24 --datadir=/usr/local/software/mysql-5.7.24/data/3308 --user=mysql

initialize-insecure 表示不生成MySQL数据库root用户的随机密码,

即root密码为空

11**.配置2个MySQL数据库服务的my.cnf文件**

在/data/3307,/data/3308两个目录下分别创建一个my.cnf文件

在两个my.cnf文件分别配置如下内容(注意:不同的实例下配置要修改 端口号)

[client]

port        = 3307

socket      = /usr/local/software/mysql-5.7.24/data/3307/mysql.sock

default-character-set=utf8

 

[mysqld]

port    = 3307

socket  = /usr/local/software/mysql-5.7.24/data/3307/mysql.sock

datadir = /usr/local/software/mysql-5.7.24/data/3307

log-error = /usr/local/software/mysql-5.7.24/data/3307/error.log

pid-file = /usr/local/software/mysql-5.7.24/data/3307/mysql.pid

 

character-set-server=utf8

lower_case_table_names=1

autocommit = 1

12.多实例启动

mysqld_safe --defaults-file=/usr/local/software/mysql-5.7.24/data/3307/my.cnf &

mysqld_safe --defaults-file=/usr/local/software/mysql-5.7.24/data/3308/my.cnf &

其中 --defaults-file 是指定配置文件,& 符合表示后台启动

13.打开两个XShell窗口 分别登录 密码为空
mysql -uroot -p -P3307 -h127.0.0.1

mysql -uroot -p -P3308 -h127.0.0.1

14.修改密码

alter user 'root'@'localhost' identified by '123';

15.授权远程访问(这样远程客户端才能访问)

grant all privileges on *.* to root@'%' identified by '123';

其中*.* 的第一个表示所有数据库名,第二个表示所有的数据库表

root@’%’ 中的root表示用户名

%表示所有ip地址,%也可以指定具体的ip地址,比如root@localhost, root@192.168.10.129

16.刷新权限

flush privileges;

17.多实例关闭

mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown

mysqladmin -uroot -p -P3308 -h127.0.0.1 shutdown

一主一从环境搭建

在这里插入图片描述

修改各个系统配置文件my.cnf

3307

log-bin=mysql-bin #表示启用二进制日志

server-id=3307 #表示server编号,编号要唯一

binlog_format=STATEMENT #设置logbin格式(默认)

log-bin=mysql-bin

server-id=3307

binlog_format=STATEMENT

3308

server-id=3308 #表示server编号,编号要唯一

模式的区别

STATEMENT模式

基于SQL语句的复制,每一条修改数据的sql语句会记录到binlog中。

优点

不需要记录每一条sql语句和每一行数据变化,减少binlog日志量

缺点

update xxx set xx time=now() where name=xxx

上面now函数在master上执行但在slave上执行时time就变了

ROW模式

基于行的复制

对于update xxx set xx time=now() where name=xxx

记录每一行的改变 直接把值复制过去

缺点

比方说有一个部门表 部门有CEO字段 一个公司的老总变了,

那么所有行CEO都会变,执行语句是update不加where条件就可以

比方说这个公司有10万人 每行都记录就会有10万行记录

会产生大量的日志,效率有问题

MIXED模式

结合上面两种模式,有函数切换到行模式,没函数切换到STATEMENT模式

缺点

如果有系统变量(@@hostname)也没有办法避免主从复制不一致问题

重启两个MySQL服务,启动时指定配置文件

mysqld_safe --defaults-file=/usr/local/software/mysql-5.7.24/data/3307/my.cnf &

mysqld_safe --defaults-file=/usr/local/software/mysql-5.7.24/data/3308/my.cnf &

主服务器设置

主服务器3307设置

需要登录到主服务器3307的客户端

mysql -uroot -p -P3307 -h127.0.0.1

在主服务器上创建复制数据的账号并授权

grant replication slave on *.* to 'copy'@'%' identified by '123';

查看主服务器状态

show master status;

mysql主服务器默认初始值:

File:mysql-bin.000001

Position:154

如果主服务状态不是初始状态,需要重置状态

reset master;

从服务器3308设置

a.需要登录到从服务器3308的客户端

mysql -uroot -p -P3308 -h127.0.0.1

b.如果从服务器不是初始状态,建议重置一下

show slave status \G;

stop slave; #停止复制,相当于终止从服务器上的IO和SQL线程

reset slave;

c.设置从服务器的master(在3308从服务器客户端执行)

change master to master_host='182.92.234.71',master_user='copy',

master_port=3307,master_password='123',

master_log_file='mysql-bin.000001',master_log_pos=154;

d.在从机器上执行开始复制命令

start slave;

e.若主从复制失效了 需要在主机上执行下面操作

reset master; (主)

stop slave; (从)

reset slave; (从)

start slave; (从)

主从验证

a.检查从服务器复制功能状态

在从服务器的客户端执行以下命令:show slave status \G;

\G表示格式化输出

如果 Slave_IO_Running和Slave_SQL_Running 均为YES,则表示主从 关系正常

b.在主服务器上创建数据库/表/数据 在从服务器上查看是否已经复制

1.在Navicat主服务器上创建库test,查看从服务器情况

2.在Navicat主服务器上test库创建表user(id,name)看从服务器情况

3.在Navicat主服务器上test库user中添加数据,查看从服务器情况

c.查看主从复制binlog日志文件内容

在主服务器客户端执行:show binlog events in ‘mysql-bin.000001’\G;

Spring Cloud 整合(一) CRUD Springcloud 整合之 CRUDSpringcloud介绍功能概述为什么要选用Springcloud Springcloud介绍 功能概述 实现微服务 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。 为什么要选用Springcloud 阅读详情

相关推荐

声音事件检测metric:PSDS

这项工作为多声道声音事件检测(SED)系统的性能评估定义了一个新的框架,它克服了传统的collar-based事件决定、事件F-cores和事件错误率的限制。拟议的框架引入了对事件检测的定义,该定义对标签的主观性更为稳健。它还采用了多声道接收器操作特性(ROC)曲线,以提供比F1分数更全面的系统性能洞察力,并建议将这些曲线简化为单一的多声道声音检测分数(PSDS),这允许系统独立于操作点(OPs)进行比较。所提出的方法还能更好地了解不同声音类别的数据偏差和分类稳定性。

Maestro_T的博客 2675

MySQL高级学习笔记-day03

Mysql高级-day03 MySQL高级部分学习笔记,该笔记仅供学习参考。 1.应用优化 前面章节,我们介绍了很多数据库层面的优化措施。但是在实际生产环境中由于数据库本身性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问。 1.1使用连接池 对于范文数据库来说,简历联结的代价是比较昂贵的,因为我们频繁的创建关闭联结,是比较耗费资源的,我们有必要建立数据库连接池,以提高访问的性能。 1.2减少对MySQL的访问 1.2.1避免对数据进行重复检索 在编写应用代码时,需要能够理清对数据库的访问逻辑。

String小四的博客 596

基于HTML+CSS的静态网页设计仿网易云音乐静态页面95分以上项目源码.zip

基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。基于HTML+CSS的静态网页设计仿网易云音乐静态

python高级学习笔记Day03--01 Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

ubuntu安装mysql服务 sudo apt-get install mysql-server 查看MySQL是否启动 ps -ajx|grep mysql 开启和停止 sudo service mysql start sudo service mysql stop 客户端安装 ubuntu下客户端服务端均已经默认安装 sudo apt-get install mysql-client 最基本连接指令 初始化mysql设置密码等 连接 mysql -uroot -p 输入密码

qq_53157982的博客 1148

Mysql高级-day03

Mysql高级-day03 1. 应用优化 前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。 1.1 使用连接池 对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据库连接池,以提高访问的性能。 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两

MARSHCW的博客 372

DAY11 MySQL学习笔记

题目:现在运营想要找到gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学同学进行用户调研,请你取出相应数据。题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。题目:现在运营想要筛选出所有北京大学的学生进行用户调研,请你从用户信息表中取出满足条件的数据,结果返回设备id和学校。题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据。

i0201_的博客 937

MySQL高级学习笔记-day01

MySQL高级部分学习笔记,该笔记仅供学习参考。 MySQL高级-day01 1.Linux系统安装MySQL 1.1下载linux安装包 安装路径:https://dev.mysql.com/downloads/mysql/ 1.2安装MySQL 1.2.1安装前检查 1、检查是否已经安装过mysql,执行命令 [root@localhost /]# rpm -qa | grep mysql 如果之前安装了mysql,执行删除命令 rpm -e --nodeps mysql*** 再次执行查询命

String小四的博客 1067

mysql day_MySQL day()函数

在本教程中,您将学习如何使用MySQL DAY函数来获取指定日期的月份的日期(一个月的第几天,也就是表示月份多少日/号)。MySQL DAY函数简介DAY函数返回给定日期的月份的部分。下面显示DAY函数的语法:DAY(date);DAY函数接受一个参数,它是您要获取月份日期的日期值。如果date参数为零,例如'0000-00-00',则DAY函数返回0,如果日期为,则DAY函数返回NULL值。请注...

weixin_34061241的博客 1562

MySQL高级-Day03toStudents

MySQL-Day02必须掌握 外键 原理 让当前表字段的值在另一张表的范围内去选择 使用规则 1、数据类型要一致 2、主表被参考字段必须为KEY的一种 : PRI 级联动作 1、cascade : 删除 更新同步(被参考字段) 2、restrict(默认) : 不让主表删除 更新 3、set null : 删除 更新,从表该字段值设置为NULL 嵌套查询(子查询) 定义 把内层的查询结果作...

huhaidi123的博客 354

DAY9 MySQL学习笔记

函数:是指一段可以直接被调用的程序或代码,以及在mysql内置,我们只需要调用即可。日记:到周日就有大片时间练习了,加油。案例–自己不太会写这个想不到。

i0201_的博客 678

mysql高级-day03

主从复制、主主复制、级联复制、双主与级联复制、MySQL高可用、数据分配、mycat工具

Libra_97的博客 371

DAY10 MySQL学习笔记

1.字符串函数:CONCAT, LOWER, UPPER, LPAD, RPAD, TRIM, SUBSTRING2.数值函数:CELL, FLOOR, MOD, RAND, ROUND3.日期函数:CURDATE, CURTIME, NOW, YEAR, MONTH, DAY, DATE_ADD, DATEDIFF4.流程函数:IF, IFNULL, CASE[…] WHEN… THEN… ELSE… END日记:今天学习的比较少,放松了下,明天加油吧!

i0201_的博客 629

DAY ) mysql,MySQL last_day()函数

MySQL日期/时间last_day()函数last_day()是一个MySQL日期/时间函数,仅接受日期或datetime值。它用于获取指定日期的给定月份的最后一天。如果我们提供了无效的输入日期或日期时间,则它总是返回NULL值。句法以下是用于返回给定月份的最后日期的语法。参数说明日期:last_day函数仅接受一个参数,即date或datetime,以获取最后一天的日期。返回值此函数返回给定有...

weixin_39824191的博客 2780

MySQL高级学习笔记-day02

MySQL高级部分学习笔记,该笔记仅供学习参考。 Mysql高级-day02 1.Mysql体系结构概述 整个MySQL Server有以下组成: Connection Pool:连接池组件; Management Services & Utilities:管理服务和工具 SQL Interface:SQL接口组件 Parser:查询分析器组件 Optinizer:优化器组件 Caches * Buffers:缓冲池组件 Pluggable Storage Engines:存储引擎 File S

String小四的博客 1116

DAY12 MySQL学习笔记

1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据2.目的:保证数据库中数据的正确、有效性和完整性约束描述关键字非空约束限制该字段的数据不能为nullNOT NULL唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE主键约束主键是一行数据的唯一标识,要求非空且唯一,设计一张表一定要有主键,这是规范默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT检查约束(8.0.16版本之后)保证字段值满足某一个条件CHECK外键约束。

i0201_的博客 683

MySQL学习笔记01【数据库概念、MySQL安装与使用】

MySQL数据库软件 MySQL数据库的安装 MySQL数据库的卸载 MySQL服务(启动与关闭) 登录 本地/异地 MySQL MySQL安装目录 MySQL数据目录

upward 838

DAY2 MySQL学习笔记

1.查询查询所有数据库查询当前数据库--一定要加括号不然会报错2.创建CREAT DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];/*[IF NOT EXISTS]如果这个数据库名称不存在则创建;如果存在,则不执行任何操作[DEFAULT CHARSET 字符集]可略,UTF8不建议,因为只3个字节,建议UTF8MB4,有4个字节[COLLATE 排序规则]可略*/3.删除。

i0201_的博客 643

基本数据类型包装类、包装类的用途

基本数据类型包装类 **Java是面向对象语言,但是不是“纯面向对象”,因为我们常用的基本数据类型就不是对象。但是在实际应用中我们常常将基本数据类型转化为对象,以方便操作。例如:将基本数据类型存储到object【】数组或者集合中的操作。 为了解决这个不足,Java 在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。 包装类均位于 java.lang 包,八种包装类和基本数据类型的对应关系如表 ** 基本数据类型 包装类

Wynb1020的博客 2024
上一篇: MySQL高级day02
下一篇: Mycat学习笔记day01
Mr.W.code
博客等级 码龄5年 10粉丝 · 81原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值