1 Star 0 Fork 120

youbp/DBA_1

forked from panglijing/DBA 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
NSD2202随堂笔记6月16-22 12.63 KB
一键复制 编辑 原始数据 按行查看 历史
RDBMS1_DAY06
增量备份 在51主机已经做增量备份
增量恢复 练习 + 休息到 10:15
实时备份数据 ---- 启用MySQL服务的binlog日志文件实现的
一 、binlog 日志介绍
二、日志管理 :
启用
查看
自定义日志位置和名字 练习+休息到 11:20
日志的相关管理命令
查看日志文件内容
SQL命令查看
系统命令查看
insert update delete
!!!!只要启用的日志就能够实现对数据的实时备份
三、使用日志记录的命令恢复数据
执行日志文件里记录的命令 可以达到恢复数据的目录
3.1 查看整个日志文件内容恢复数据
适合日志文件里没有 delete drop 命令时 ,使用此种格式恢复数据
]#mysqlbinlog /目录/日志文件名 | mysql -uroot -p密码
休息到 15:15
3.2 修改日志记录命令的格式
查看当前使用的日志格式
修改日志格式
update tarena.user set shell="shutdown" where id <= 5;
update tarena.user set shell="shutdown" where id = 1;
update tarena.user set shell="shutdown" where id = 2;
update tarena.user set shell="shutdown" where id =3;
update tarena.user set shell="shutdown" where id =4;
update tarena.user set shell="shutdown" where id=5;
3.3 查看日志记录的部分命令恢复数据 练习+休息到 16:30
适合日志文件里有 delete drop 命令时 ,使用此种格式恢复数据
]#mysqlbinlog 选项 /目录/日志文件名 | mysql -uroot -p密码
查看指定时间范围内记录的sql命令
--start-datetime="起始时间" --stop-datetime="结束时间"
查看指定偏移量范围内记录的sql命令
--start-position=起始偏移量 --stop-position=结束偏移量
mysqlbinlog --start-datetime="2022/06/16 11:30:08"
--stop -datetime="2022/06/16 11:30:09" /mylog/plj.000005 | mysql -uroot -p123456
mysqlbinlog --start-position=1601 --stop-position=1724 /mylog/plj.000005
| mysql -uroot -p123456
物理备份与恢复
mysqldump
innobackupex 完全备份 增量备份 差异备份
启用binlog日志 实现对数据的实时备份
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RDMBS2 mysql 数据存储架构的搭建
自动备份数据架构
数据读写分离架构
数据分布式存储架构
高可用集群架构
MySQL存储引擎
MySQL多实例
RDMBS2_DAY01----mysql主从同步
1主从同步介绍
2配置一主(51)一从(52)结构
第一步:配置master服务
第二步:配置slave服务器
3配置一主多从结构
把数据库服务器53 也同时配置为51的从服务器
Got fatal error 1236 from master when reading data from binary log:
'Client requested master to start replication from position &gt;
file size'
Last_SQL_Erro
4 配置主从从结构
给一主一从结构中的从服务器 也配置1台从服务器
配置 + 测试到 11:50
Slave_IO_Running: Connecting
检查所有数据库服务器的防火墙和selinx 是否 关闭了
在从服务器测试主的授权用户repluser 用户
[root@host55 ~]# mysql -h192.168.4.54 -urepluser -p123qqq...A
连接不成功的话要在主服务器 再执行一遍授权
在主服务器查看正在使用的日志名和偏移量
在从服务器上做如下操作
stop slave;
change master to 再次指定主服务器信息;
start slave;
show slave status \G
5配置主主结构 2台数据库服务器互为主从
练习20分钟到 14:46
一主一从
一主多从
与其他软件一起使用 实现数据库服务的高可用集群的功能
主从从
主主结构
课间休息到 15:10
6修改主从同步复制数据的工作模式
启用半同步复制模式的步骤
命令行配置马上生效 (重启数据库会还原)
安装模块
启用模块
永久配置 (把配置写在配置文件里) /etc/my.cnf
练习到 15:49
RDBMS2_DAY02
1 数据读写分离
相关的概念?
读写分离介绍?
在访问数据库服务器的时候,
把查询数据的select 访问 和 写数据的访问(insert
delete update ) 给不同数据库服务器出来
为什么? 减轻数据库服务器的并发访问压力
如何实现数据的读写分离:
通过程序实现:
程序员在脚本(Python 、php 、Java)
select ---- > a 192.168.4.52
insert、delete 、update ------>b 192.168.4.51
搭建读写分离服务器 客户端访问数据库服务时,连接
的是读写分离服务器,然后读写分离服务器根据执行的命令
select ---> a 192.168.4.52
insert、delete 、update ------>b 192.168.4.51
实现读写分离服务的软件(MySQL中间件)
mysql-proxy mycat maxscale
创建新的虚拟机 IP地址 192.168.4.57
把上午提到软件拷贝的 57主机里
maxscale-2.1.2-1.rhel.7.x86_64.rpm
mysql-5.7.20-linux-glibc2.12-x86_64.tar
把上午的 数据库服务器 192.168.4.51 和 192.168.4.52 也启动
配置读写分离服务器192.168.4.57,具体操作如下
1 安装软件
2 修改57主机的主配置文件
3 配置数据库服务器
添加mysqla用户
添加mysqlb用户
4 启动读写分离服务 并查看服务状态
5 测试配置
RDBMS2_DAy02
多实例
相关概念:
什么是多实例: 类似于网站服务的虚拟机主机技术
在一台物理主机上 跑多个数据库服务
节约成本
提供硬件的使用率
[root@host57 ~]# killall -9 maxscale
[root@host57 ~]# tar -xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
具体配置如下
安装软件
练习 + 休息到 10:10
创建并编辑主配置文件
vim /etc/my.cnf
#管理多实例服务的运行配置
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/user/local/mysql/bin/mysqladmin
user=root
#定义多实例
[mysqld1]
#数据库目录
#端口号
#存放进程的pid号文件
#日志文件
#sokect文件 (在本机连接 mysql服务时通过sokect 文件
与服务建立连接)
启动实例
练习 到 12:00
连接实例
RDBMS2_DAY03 MYSQL数据分布式存储
使用的 机器
50(客户端)
53 54 55
(新的数据库服务器)
56 分片服务器
把软件
Mycat-server-1.6-RELEASE-20161028204710-linux.tar
拷贝 56 主机
回归分布式存储 是怎么存储数据的 使用的是什么软件
把数据存储在不同地点的不同服务器上
每台服务器上存储的数据都是不同的
所有服务器的数据加一起才是全部的数据
相关概念:
存储数据到数据库服务器时,把数据存储到不同地点的不同
数据库服务器里
配置mycat 服务器 192.168.4.56,具体步骤如下:
1 安装软件
2 文件列表
3 修改配置文件
server.xml 定义客户连接mycat服务 使用的用名 密码
及假库名
schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
定义存储数据的表名 及向表里存储数据
时 使用的分片规则
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table .... />
<table> </table>
</schema>
定义数据库服务器的主机名 存储表的库名
<dataNode 。。。。。 />
定义数据库服务器的IP地址
<dataHost ....>
</dataHost ....>
</mycat:schema>
4 配置数据库服务器
5 启动mycat服务
6 测试配置
客户端连接56 主机 查看库和表
枚举分片规则 (sharding-by-intfile) 表中必须有表头名叫
sharding_id 表头赋值时值必须在配置文件定义的值里选择
10000=0
10010=1
10020=2
求模分片规则 (mod-long): 表中必须有表头名叫id
把id表头的值 与指定的数字做取余计算 然后根据余数 把记录存储在
指定数据库服务器里
余数 是 0 dn1
余数 是 1 dn2
余数 是 2 dn3
insert into hotnews
id name age class
13 a 19 nsd 54 db2 hotnews
10 a 19 nsd 54 db2 hotnews
9 a 19 nsd 53 db1 hotnews
11 a 19 nsd 55 db3 hotnews
100 a 19 nsd 54 db2 hotnews
13%3 3 1
ERROR 3009 (HY000): java.lang.IllegalArgumentException:
Invalid DataSource:0
53 db1 54 db2 55 db3
课间休息到 10:10
sharding_id
10000
10010
10020
添加新库新表
TESTDB 表名
休息到 11:15
salary type="global"
RDBMS2_DAY03 数据分布式存储
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RDBMS2_DAY04 部署MySQL高可用集群
解决mysql服务的单点故障问题 和数据的自动备份问题
配置和维护比较复杂
一、部署集群
1.1 环境准备
公共配置 (3台数据库服务器都配置)
启用binlog日志
做用户授权
都要启用主从半同步复制模式
禁止自动删除本机中继日志文件
配置ssh免密登录
首先所有数据库服务器之间彼此要免密登录
启动管理主机57 可以免密登录所有数据库服务器
配置一主多从同步结构
配置master数据库服务器51
启用binlog日志 用户授权 查看日志信息
数据库服务器52和53 分别做51 的slave服务器
配置slave数据库服务器52
配置slave数据库服务器53
指定server_id 指定主服务器信息 启动slave进程
查看进程状态
mha 51 52 53 57
1.2 配置管理主机
1 安装软件
2 创建并编辑管理服务的主配置文件
3 创建故障切换脚本
1.3 配置数据库服务器
1.3.1 根据故障切换脚本的定义
把vip 地址部署在当前MySQL主从结构中的master 服务器上
1.3.2 在3台数据库服务器安装mha_node软件
1.3.3 在3台数据库服务器添加 57监视使用的plj用户
在master服务添加 从 会自动同步用户
时间到 17:40
二 测试配置 /etc/mha/app1.cnf
测试ssh免密登录的配置
[root@host57 mha]# masterha_check_ssh --conf=/etc/mha/app1.cnf
Tue Jun 21 05:46:07 2022 - [info] All SSH connection tests passed successfully.
测试一主多从的配置
[root@host57 mha]# masterha_check_repl --conf=/etc/mha/app1.cnf
MySQL Replication Health is OK.
三 启动管理服务 查看状态 和 停止
[root@host57 mha]# masterha_manager --conf=/etc/mha/app1.cnf
Tue Jun 21 05:51:25 2022 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Jun 21 05:51:25 2022 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Tue Jun 21 05:51:25 2022 - [info] Reading server configuration from /etc/mha/app1.cnf..
--remove_dead_master_conf 把宕机的master服务的配置在app1.cnf文件删除
--ignore_last_failover 默认只做1次故障切换,可以做多次故障切换
52 53
开新终端 查看运行状态
[root@host57 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:11622) is running(0:PING_OK), master:192.168.4.51
四 测试高可用集群 ( 时时刻刻让客户端可以有访问的数据库服务)
master51
slave 52 he slave53 某1台 称为新的master 并获取vip地址
测试 + 休息到 10:20
五 把宕机的主数据库服务器再添加到集群里
配置数据库服务器
安装数据库服务软件
启动数据库服务
确保与当前主服务器的数据一致
配置为当前主服务器的从
配置 + 休息到 11:15
配置管理主机
要把数据库服务器加到app1.cnf
测试主从复制
重启管理服务
测试配置
把当前的主服务器52 停止
51 或 53 都有可能成为新的master角色服务器
成为新的master主机获取vip 地址
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/you-baopeng0425/dba_1.git
git@gitee.com:you-baopeng0425/dba_1.git
you-baopeng0425
dba_1
DBA_1
master

搜索帮助