MySQL核心篇三
1.MySQL核心篇三
01.主从复制基础
a.主从复制简介
1.1. 基于二进制日志复制的
1.2. 主库的修改操作会记录二进制日志
1.3. 从库会请求新的二进制日志并回放,最终达到主从数据同步
1.4. 主从复制核心功能:
辅助备份,处理物理损坏
扩展新型的架构:高可用,高性能,分布式架构等
高可用架构方案:
负载均衡:有一定的高可用性
LVS Nginx
主备系统:有高可用性,但是需要切换,是单活的架构
KA , MHA, MMM
真正高可用(多活系统):
NDB Cluster Oracle RAC Sysbase cluster , InnoDB Cluster(MGR),PXC , MGC
b.主从复制搭建过程
第一步由于我们已经配置过3306,所以把3306的配置文件复制一遍修改端口即可(以下文件里面的内容都是可以自己设置的)
[root@db01 ~]# cat /data/3307/my.cnf
[mysqld]
basedir=/application/mysql ---MySQL软件放置的位置
datadir=/data/3307/data ---3307实例的数据存放位置
socket=/data/3307/mysql.sock ---3307本地连接的socket文件位置
port=3307 ---3307实例的端口为3307端口
log-error=/data/3307/mysql.log ---3307的错误日志存放位置
log_bin=/data/3307/mysql-bin ---3307的binlog文件位置
binlog_format=row
skip-name-resolve
server-id=7 ---3307实例的编号
gtid-mode=on ---开启gtid
enforce-gtid-consistency=true
log-slave-updates=1
第二步3308 和3309配置文件解释(略)和3307一样
第三步配置3307 3308 3309的systemd管理的配置文件(以3307为例)
由于3306设置过systemd管理的文件,所以这里直接拷贝
root@db01 /etc/systemd/system]# ll
-rw-r--r-- 1 root root 332 Apr 6 11:52 mysqld3307.service
-rw-r--r-- 1 root root 332 Apr 6 11:52 mysqld3308.service
-rw-r--r-- 1 root root 332 Apr 6 11:52 mysqld3309.service
-rw-r--r-- 1 root root 333 Apr 6 11:52 mysqld3310.service
-rw-r--r-- 1 root root 326 Mar 15 16:42 mysqld.service
对3307实例的systemd管理的配置文件进行修改
[root@db01 /etc/systemd/system]# cat mysqld3307.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf ---只用修改这里即可,把my.cnf文件换成当前实例的my.cnf文件存放的位置,然后就可以systemctl启动数据库了
LimitNOFILE = 5000
c.告知从库复制信息
在从库中开启专用复制线程
上面两个从库和主库建立关系之后,就可以使用了
d.主从复制原理
e.主从监控
f.主从故障模拟
1.搭建主从关系时,信息内容错误
2.日志中断或者损坏,或者主库有清空binlog的情况,或者主库要重做binlog的情况
3.SQL线程故障
g.小知识点扩展
02.主从复制高级进阶
a.什么是主从复制延时
介绍:
是我们认为配置的一种特殊从库.人为配置从库和主库延时N小时.
为什么要有延时从:
数据库故障?
物理损坏
主从复制非常擅长解决物理损坏.
逻辑损坏
普通主从复制没办法解决逻辑损坏
b.主从延复制监控
c.主从复制延时原因
d.特殊从库的应用 (延时从库)
e.故障模拟与恢复
f.从库恢复
g.GTID复制
https://www.jianshu.com/p/82bc8ed98e7f 构建方法连接
主库db01:
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=51
port=3306
secure-file-priv=/tmp
autocommit=0
log_bin=/data/mysql/binlog/mysql-bin
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[mysql]
prompt=db01 [\\d]>
EOF
从库(db02):
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=52
port=3306
secure-file-priv=/tmp
autocommit=0
log_bin=/data/mysql/binlog/mysql-bin
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[mysql]
prompt=db02 [\\d]>
EOF
从库(db03):
cat > /etc/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=53
port=3306
secure-file-priv=/tmp
autocommit=0
log_bin=/data/mysql/binlog/mysql-bin
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
[mysql]
prompt=db03 [\\d]>
EOF
三个都初始化
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
三个都启动mysqld
systemctl start mysqld
h.主从复制架构演变
搭建MHA过程:https://www.jianshu.com/p/0f7b5a962ba7
F:\老男孩DBA专家班\老男孩-深圳标杆版-DBA课程笔记 第十六章笔记 (个人笔记)