主从复制基础

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

你可能感兴趣的:(主从复制基础)