目录
主从复制前提准备:
1. 修改hosts文件以及修改主机名称
vim /etc/hosts
192.168.180.110 master
192.168.180.120 slave01
192.168.180.130 slave02
hostnamectl set-hostname master && bash
hostnamectl set-hostname slave01 && bash
hostnamectl set-hostname slave02 && bash
2. 关闭防火墙
setenforce 0 && systemctl stop firewalld && systemctl disable firewalld
3. 时间同步
#在master上
yum -y install ntp
#配置NTP
vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 8
#开启
systemctl start ntpd && systemctl enable ntpd
#在两台slave上安装时间同步
yum install -y ntpdate
ntpdate 192.168.180.110
4. 安装mysql,我使用的是二进制方式安装,具体的二进制安装过程可详细查看二进制安装mysqlhttps://blog.csdn.net/m0_68472908/article/details/144746891?spm=1001.2014.3001.5501
这里将逐一展示单主复制以及双主复制
一、 单主复制
传统复制:
1. 在master上配置my.cnf文件
vim /etc/my.cnf
server-id = 100
log_bin = mysql-bin
systemctl restart mysqld
2. 在master上创建用户
mysql -uroot -pabc-123
grant replication slave on *.* to 'repluser'@'192.168.180.%' identified by 'ABCabc-123';
flush privileges;
show master status\G;
3. 在两台slave上配置server-id
#slave1
vim /etc/my.cnf
server-id = 101
#slave2
vim /etc/my.cnf
server-id = 102
systemctl restart mysqld
4. 在两台slave上链接到master
mysql -uroot -pabc-123
change master to
master_host="192.168.180.110",
master_user="repluser",
master_password="ABCabc-123",
master_port=3306,
master_log_file="mysql-bin.000001",
master_log_pos=605;
#启用slave
start slave;
#查看slave的状态,两个都要是yes才是正确的
show slave status\G;
5. 在master上创建库
create database test_db;
6. 在两台slave上查看库,有无
show databases;
GTID复制:
1. 在master上配置文件
vim /etc/my.cnf
gtid_mode = ON
enforce_gtid_consistency = true
systemctl restart mysqld
2. 在两台slave上配置文件
vim /etc/my.cnf
gtid_mode = ON
enforce_gtid_consistency = true
systemctl restart mysqld
3. 两台slave配置
mysql -uroot -pabc-123
stop slave;
change master to
master_host="192.168.180.110",
master_user="repluser",
master_password="ABCabc-123",
master_auto_position=1;
start slave;
show slave status\G;
二、 双主复制
1. 在master上同步用户到第二台主
mysql -uroot -pabc-123
grant replication slave on *.* to 'repluser'@'192.168.180.%' identified by 'ABCabc-123';
flush privileges;
2. 在slave1上查看
select user,host from mysql.user;
3. 在slave1上开启二进制
vim /etc/my.cnf
log_bin = mysql-bin
systemctl restart mysqld
4. 在master上
change master to
master_host="192.168.180.120",
master_user="repluser",
master_password="ABCabc-123",
master_auto_position=1;
start slave;
show slave status\G;
5. 在master上创建表
create table test_db.test(id int,name varchar(10));
insert into test_db.test values(1,'zs');
6. 在slave1上查看,有无同步
select * from test_db.test;
7. 在slave2上添加配置
vim /etc/my.cnf
master_info_repository = TABLE
relay_log_info_repository = TABLE
systemctl restart mysqld
#配置通道,从服务器同时监控两台主服务器:
mysql -u root -pabc-123
stop slave;
change master to
master_host="192.168.180.110",
master_user="repluser",
master_password="ABCabc-123",
master_auto_position=1 for channel "master1";
change master to
master_host="192.168.180.120",
master_user="repluser",
master_password="ABCabc-123",
master_auto_position=1 for channel "master2";
start slave;
show slave status\G;
8. 在slave1上插入数据
insert into test_db.test values(2,'ls');
9. 在slave2上查看是否同步
select * from test_db.test;
主从复制到这里就完成了⭐
接下来是mycat读写分离的实验操作步骤部分
mycat读写分离
前提准备:
1. 基于前面的主从复制的环境进行部署
2. 在三台mysql上添加hosts记录
vim /etc/hosts
192.168.180.140 mycat
mycat开始部署:
1. 安装时间同步
yum install -y ntpdate
ntpdate 192.168.180.110
2. 修改主机名称
hostnamectl set-hostname mycat && bash
3. 安装JDK
yum install -y java-1.8.0-openjdk.x86_64
4. 上传mycat并安装
tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
useradd -M -s /sbin/nologin mycat
chown -R mycat:mycat /usr/local/mycat
echo "export MYCAT_HOME=/usr/local/mycat" >> /etc/profile
source /etc/profile
echo $MYCAT_HOME
5. 修改主配置文件
vim /usr/local/mycat/conf/server.xml
把这一段后面的<user name>都删除
6. 修改辅助配置文件
vim /usr/local/mycat/conf/schema.xml
将这两个中间的都注释掉
修改为之前创建的库,并把后面两个注释
在这个下面添加内容
<writeHost host="hostM1" url="192.168.180.110:3306" user="mycat" password="abc-123">
<readHost host="hostS1" url="192.168.180.130:3306" user="mycat" password="abc-123" />
</writeHost>
<writeHost host="hostM2" url="192.168.180.120:3306" user="mycat" password="abc-123">
<readHost host="hostS2" url="192.168.180.130:3306" user="mycat" password="abc-123" />
</writeHost>
7. 启动mycat
/usr/local/mycat/bin/mycat start
netstat -nultp | grep -e 8066 -e 9066