Mysql之主从复制-yellowcong

来源:互联网 发布:linux网卡配置生效 编辑:程序博客网 时间:2024/06/04 20:13

安装主从复制的时候,需要安装Mysql,这个主从复制在生产环境中,还会同keepalived实现双机热备,来实现高可用性。

安装准备

CentOS之Mysql安装-yellowcong

系统架构

节点 服务 192.168.100.10:3306 master 192.168.100.11:3306 slave

原理

原理:mysql要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B;主从复制就是
   B跟着A学,A做什么,B就做什么。那么B怎么同步A的动作呢?现在A有一个日志功能,把自己所做的增删改查的动作
   全都记录在日志中,B只需要拿到这份日志,照着日志上面的动作施加到自己身上就可以了。这样就实现了主从复制。

扩展:MYSQL还有一种日志叫做:慢日志
   可以设置一个时间,那么所有执行时间超过这个时间的SQL都会被记录下来。这样就可以通过慢日志快速的找到网站中SQL的瓶颈来进行优化。

集群搭建

1、修改主服务器

#vim /etc/my.cnf[mysqld]#[必须]启用二进制日志log-bin=mysql-bin #这个server-id是用来标明服务器的,同zookeeper的myid一样的作用#[必须]服务器唯一ID,默认是1,一般取IP最后一段server-id=10

这里写图片描述

2、修改从服务器

vi /etc/my.cnf[mysqld]//[不是必须]启用二进制日志log-bin=mysql-bin  //[必须]服务器唯一ID,默认是1,一般取IP最后一段 //192.168.100.11,所以最后一段就是11了server-id=11      

3、重启mysql服务器

#重启两台服务器的mysqlservice mysql restart

这里写图片描述

4、在主服务器上建立帐户并授权slave

#登录主服务器mysql -u root -p#配置权限#创建yellowcong用户,#`%`表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替GRANT REPLICATION SLAVE ON *.* to 'yellowcong'@'%' identified by 'yellowcong';#只允许192.168.199.11机器连接的方式GRANT REPLICATION SLAVE ON *.* to 'yellowcong'@'192.168.199.11' identified by 'yellowcong';

这里写图片描述

5、登录主服务器的mysql,查询master的状态

这一步执行后,服务器的状态会发生变化,所以执行了这一步,就不要再修改主服务器信息了

#查看主节点的状态#  注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化show master status;

这里写图片描述

6、配置从节点

如果节点之前配置过,就需要停掉slave,然后再配置,这一步配置信息依赖于第五步配查看的主节点信息。

#登录从节点myslq -u root -p#(非必须执行的)如果之前配置过,一定要先关闭slavestop slave;#设定主节点#master_host 主节点信息#master_user 用户#master_user 密码#master_log_file 要连接的主服务器的bin日志的日志名称(第五步获取)#master_log_pos  要连接的主服务器的bin日志的记录位置(第五步获取)change master to master_host='192.168.100.10',master_user='yellowcong',master_password='yellowcong', master_log_file='mysql-bin.000002',master_log_pos=324;#启动从服务器复制功能start slave;    

这里写图片描述

查看从节点

#查看从节点信息(这个是在从节点上查看的,主节点是看不到从节点信息的)show slave status;#这个\G可以看起来更好show slave status\G

我们可以看到主节点的信息。
这里写图片描述

查看到的信息
这里写图片描述

测试

测试数据库中在主节点中添加数据,然后从节点数据,就会复制过去了

在主节点添加测试数据

#创建数据库create database yellowcong_cluster;#使用数据库use yellowcong_cluster;#创建表create table test(id int primary key auto_increment,age int,name varchar(32));#插入数据insert into test values (null,12,'yellowcong');insert into test values (null,23,'zhangsan');

主节点数据库信息
这里写图片描述

从节点数据库
这里写图片描述

参考文章

http://blog.51cto.com/369369/790921
https://www.cnblogs.com/superfat/p/5267449.html