Mysql之主从复制-yellowcong
程序员文章站
2024-03-20 21:01:16
...
安装主从复制的时候,需要安装Mysql,这个主从复制在生产环境中,还会同keepalived实现双机热备,来实现高可用性。
安装准备
系统架构
节点 | 服务 |
---|---|
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服务器
#重启两台服务器的mysql
service 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
#(非必须执行的)如果之前配置过,一定要先关闭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;
查看从节点
#查看从节点信息(这个是在从节点上查看的,主节点是看不到从节点信息的)
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');
主节点数据库信息
从节点数据库
错误集合
error connecting to master ‘aaa@qq.com:3306’ - retry-time: 60 retries: 1
这个地方有问题,连接不上主节点,导致这个问题的原因就是,我主节点授权的执行命令不对
查看主节点授权信息
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;
参考文章
http://blog.51cto.com/369369/790921
https://www.cnblogs.com/superfat/p/5267449.html
上一篇: 搭建高可用mysql集群PXC