主从复制基础
2019-08-16 本文已影响0人
学Linux的小子
0. 企业高可用性标准(全年故障率)
99.9% ----> 0.001*365*24*60=525.6 min
99.99% ----> 0.0001*365*24*60=52.56 min
99.999% ----> 0.0001*365*24*60=5.256 min 金融级别
0.1企业级高可用方案
负载均衡:有一定的高可用性
LVS Nginx
主备系统:有高可用性,但是需要切换,是单活的架构
KeepAlive , MMM ,
MHA*****
真正高可用(多活系统):
MySQL NDB Cluster
Oracle RAC
Sysbase cluster
PXC ***
MGC ***
InnoDB Cluster(MGR)*****
1.主从复制的简介**
1.1. 基于二进制日志复制的
1.2. 主库的修改操作会记录二进制日志
1.3. 从库会请求新的二进制日志并回放,最终达到主从数据同步
1.4. 主从复制核心功能:
辅助备份,处理物理损坏
扩展新型的架构:高可用,高性能,分布式架构等
2.主从复制的前提(主从复制的规划实施过程)
##2.1 至少两个数据库实例
##2.2 主库要开启binlog,不同的server_id,server_uuid
##2.3 主库要有一个专门用作复制的用户(replication slave)
##2.4 通过备份将资源库数据补偿到从库
##2.5 告知从库,用户名密码,ip,port,自动复制的起点
##2.6 需要专门的复制线程(start slave)
3. 搭建主从复制
3.1搭建多实例环境
[root@db01 ~]# mysql -S /data/3307/mysql.sock
[root@db01 ~]# mysql -S /data/3308/mysql.sock
3.2 检查 主库binlog,不同server_id,server_uuid
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "select @@log_bin;select @@server_id"
[root@db01 ~]# mysql -S /data/3308/mysql.sock -e "select @@log_bin;select @@server_id"
3.3 主库创建复制用户
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "grant replication slave on *.* to repl@'10.0.0.%' identified by '123';"
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "select user,host from mysql.user where user='repl';"
3.4 通过备份将源库数据补偿到从库
[root@db01 ~]# mysqldump -S /data/3307/mysql.sock -A -R -E --triggers --master-data=2 --single-transaction --max-allowed-packet=128M >/tmp/full.sql
3.5 告知从库,用户名,密码,ip,port,自动复制的起点
# change master to
[root@db01 ~]# mysql -S /data/3308/mysql.sock
oldguo[(none)]>help change master to
vim /tmp/full.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=444;
CHANGE MASTER TO
MASTER_HOST='10.0.0.51',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=3307,
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=444,
MASTER_CONNECT_RETRY=10;
3.6 启动主从线程
[root@db01 ~]# mysql -S /data/3308/mysql.sock
oldguo[(none)]>start slave;
3.7 检测主从状态
[root@db01 ~]# mysql -S /data/3308/mysql.sock -e "show slave status \G"|grep Yes
4.1 主从复制过程中涉及到的文件
主库:
binlog 日志
/data/3307:
mysql-bin.000001
mysql-bin.000002
从库:
relaylog 中继日志
/data/3308/data
db01-relay-bin.000001
db01-relay-bin.000002
4.1.2 从库:
relaylog 中继日志
临时存储日志信息的文件
/data/3308/data
db01-relay-bin.000001
db01-relay-bin.000002
master.info 信息文件
主库信息文件
relay-log.info 信息文件
中继日志信息文件
4.2 主从复制中涉及到的线程
主库:
Binlog_Dump_Thread(二进制日志投递线程)
[root@db01 /data/3308/data]# mysql -S /data/3307/mysql.sock -e "show processlist;"
从库:
Slave_IO_Thread
Slave_SQL_Thread