2018年10月11日第二十七节课笔记——mysql主从
内容摘要
一、MySQL主从介绍
- MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
- MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
- 主从过程大致有3个步骤
- 主上有一个log dump线程,用来和从的I/O线程传递binlog
- 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地
- MySQL主从原理图
二、准备工作
- 重启mysql:/etc/init.d/mysqld restart
- 备份blog,zrlog数据库,作为测试使用(除mysql默认生成的库performance_schema,mysql,test):
- 创建用作同步数据的用户:grant replication slave on *.* to 'repl'@192.168.157.130 identified by 'zhaoyujie';
- 锁定主数据库:flush tables with read lock;
- 查看数据库状态(file和position显示的信息将在配置从数据库是用到):show master status;
四、配置从
- 修改/etc/my.cnf,增加配置语句(在从上执行):server-id=132 要求和主不一样
- 重启mysql:/etc/init.d/mysqld restart
- 把主上需要同步的库,导入到从的数据库中(在从上执行):
- 在从数据库中创建zrlog库:create database zrlog;
- 在从数据库中创建blog库:create database blog;
- 将主数据库备份的文件传输到从上(在从上执行): scp [email protected]:/tmp/zrlog.sql /tmp/
- 导入备份文件:mysql -uroot -p zrlog < /tmp/zrlog.sql
- 在从数据库上执行命令:stop slave;
- 在从数据库上执行命令: change master to master_host='192.168.157.128', master_user='repl', master_password='zhaoyujie', master_log_file='zhaoyujie.000001', master_log_pos=11037;
- change master to master_host=主数据库的IP
- master_user=用于主从的数据库用户名
- master_password=用于主从的数据库用户的密码
- master_log_file=主数据库使用命令show master status;中file显示的信息
- master_log_pos=主数据库使用命令show master status;中Position显示的信息,不需要使用单引号
Seconds_Behind_Master: 0 为主从延迟的时间
五、测试主从同步
replicate_wild_do_table= 如aming.%, 支持通配符% 主要使用该配置
replicate_wild_ignore_table= 如aming.%, 支持通配符% 主要使用该配置
六、扩展
- 不停库不锁表在线主从配置:http://seanlook.com/2015/12/14/mysql-replicas/
- 主从不同步
- https://blog.****.net/leshami/article/details/39779509
- http://www.cnblogs.com/ygqygq2/p/6045279.html
- mysql-proxy 实现读写分离 http://blog.51cto.com/zzclinux/1980487
- mysql-proxy类似的产品有:mycat 基于阿里的开源软件cobar,官网 www.mycat.io https://my.oschina.net/ruoli/blog/1789370
- mycat实现分库分表 https://www.cnblogs.com/joylee/p/7513038.html
- atlas 出自于360,不维护不更新了 https://blog.****.net/AnPHPer/article/details/80566385
- mysql环形主从http://ask.apelearn.com/question/11437
- mysql架构演变 http://www.aminglinux.com/bbs/thread-8025-1-1.html
- MHA架构 http://blog.51cto.com/xiaoshuaigege/2060768
- 比较复杂的mysql集群架构 http://ask.apelearn.com/question/17026