MySQL主从
原理:MySQL主从原理是首先我们的主服务器要开启binlog日志,我们主服务器的数据库的增删改回记录到这里面,从服务器有一个I/O线程,这个I/O线程会定时定期地去看主服务器的binlog日志有没有变化,有变化的话,就把它拿到,然后写入到Relaylog里边,Relaylog叫中继日志,从服务器还有一个SQL线程,会去读取这个中继日志,然后把它写到我们本地的数据库里面。
应用场景:
- 主从互为备份:当主服务器出现问题,我们可以人工/自动的切换到从服务器让其继续提供服务
- 读写分离:主从服务器可以通过程序(php,java等)或代理软件(mysql-proxy,amoeba)对用户对数据库的请求实现读写分离。从库一般只处理select查询请求,来降低用户查询的等待时间及缓解主服务器的压力,对于更新的请求则交给主服务器处理,并且要确保数据实时主从同步
- 根据业务拆分从库:根据业务的不同讲从库拆分为不同的部分,比如从1-3用于帖子浏览,从4用于后台访问,从5用于binlog备份
配置步骤:
先说一下大致步骤:
- 主库首先开启binlog。
- 在主库中创建用户并授权,用于主从复制
- 在主库中进行全量备份(把先前主库中有的数据先导入到从库中)
- 然后在从库中设定主库信息,设定主库的IP地址,端口号,用户名,密码等信息。
- 然后从库就可以开启主从复制
start slave
主库配置
第一步:
第二步:进入MySQL
GRANT REPLICATION SLAVE ON *.* TO 'plrep'@'%' identified by 'reppass';
第三步:备份主库
mysqldump -u root -p -B class > /tmp/haha_bak.sql
查看主库状态
show master status;
从库配置
第一部:配置主库信息
CHANGE MASTER TO \
MASTER_HOST='10.1.1.164' ,
MASTER_PORT=3306,
MASTER_USER='plrep' ,
MASTER_PASSWORD='reppass' ,
MASTER_LOG_FILE='mysql-bin.000002' ,
MASTER_LOG_POS=348;
第二步:开启主从复制
start slave;
不加/G格式是横着显示的,是看不懂的
show slave status\G;
关闭主从复制
show slave status;