欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql之主从复制-yellowcong

程序员文章站 2024-03-20 21:01:16
...

安装主从复制的时候,需要安装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

Mysql之主从复制-yellowcong

2、修改从服务器

vi /etc/my.cnf
[mysqld]
//[不是必须]启用二进制日志
log-bin=mysql-bin  

//[必须]服务器唯一ID,默认是1,一般取IP最后一段 
//192.168.100.11,所以最后一段就是11了
server-id=11      

3、重启mysql服务器

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

Mysql之主从复制-yellowcong

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';

Mysql之主从复制-yellowcong

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

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

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

Mysql之主从复制-yellowcong

6、配置从节点

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

#登录从节点
myslq -u root -p

#(非必须执行的)如果之前配置过,一定要先关闭slave
stop slave;

#设定主节点
#master_host 主节点信息,填写目标机器的ip地址,如果是本机,可以填写127.0.0.1,需要和主节点一致。
#master_user 用户
#master_user 密码
#master_log_file 要连接的主服务器的bin日志的日志名称(第五步获取)
#master_log_pos  要连接的主服务器的bin日志的记录位置(第五步获取)
#MASTER_PORT 是端口号,不能是字符串,是数字,如果不写,默认就是3306端口
change master to master_host='192.168.100.10',master_user='yellowcong',MASTER_PORT=3306,master_password='yellowcong', master_log_file='mysql-bin.000002',master_log_pos=324;


#启动从服务器复制功能
start slave;    

Mysql之主从复制-yellowcong

查看从节点

#查看从节点信息(这个是在从节点上查看的,主节点是看不到从节点信息的)
show slave status;

#这个\G可以看起来更好
show slave status\G

我们可以看到主节点的信息。
Mysql之主从复制-yellowcong

查看到的信息
Mysql之主从复制-yellowcong

测试

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

在主节点添加测试数据

#创建数据库
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');

主节点数据库信息
Mysql之主从复制-yellowcong

从节点数据库
Mysql之主从复制-yellowcong

错误集合

error connecting to master ‘aaa@qq.com:3306’ - retry-time: 60 retries: 1

这个地方有问题,连接不上主节点,导致这个问题的原因就是,我主节点授权的执行命令不对
Mysql之主从复制-yellowcong

查看主节点授权信息

select user,host from mysql.user;

-- 我的ip地址一样,是由于我后来测试的时候,用的一个主机,多个mysql实例做的主从节点测试。
-- 192.168.66.100 指定了只能这一台服务器,才能用这个号码来登录俺Mysql服务。
GRANT REPLICATION SLAVE ON *.* to 'yellowcong'@'192.168.66.101' identified by 'yellowcong';

-- 从节点,添加配置
-- master_host 主机点地址
-- MASTER_PORT 端口
-- master_user 用户名
-- master_password 密码
-- master_log_file 二进制而知的信息
-- master_log_pos  二进制日志当前指针位置
change master to master_host='192.168.66.100',MASTER_PORT=3306,master_user='yellowcong',master_password='yellowcong', master_log_file='binlog.000012',master_log_pos=403;

Mysql之主从复制-yellowcong

参考文章

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

相关标签: mysql

上一篇: 搭建高可用mysql集群PXC

下一篇: