MySQL 主从复制(单组传统复制,GTID复制。双主复制)
案例环境
单组复制
master: 192.168.180.143
slave01:192.168.180.144
双组复制
master01:192.168.180.143
master02:192.168.180.144
案例过程
准备工作
关闭所有防火墙
setenforce 0 && systemctl stop firewalld
更改相应主机名和hosts文件
#更改hosts文件
vim /etc/hosts
192.168.180.143 master
192.168.180.144 slave01
192.168.180.145 slave02
#更改主机名
hostnamectl set-hostname master && bash
hostnamectl set-hostname slave01 && bash
hostnamectl set-hostname slave02 && bash
主服务器配置文件配置时间同步
#安装服务
yum -y install ntp
#配置文件
vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 8
#启动ntp
systemctl start ntpd
从服务器下载配置时间同步
#下载服务
yum install -y ntpdate
#配置同步
ntpdate 192.168.180.143
YUM下载MySQL
详细YUM安装MySQL配置过程https://blog.csdn.net/div3tengr/article/details/145202508?spm=1001.2014.3001.5502
解压mysqly的yum文件
mkdir /mysql57 && tar xf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C /mysql57
下载前置包,配置yum仓库
yum -y install createrepo
cat >> /etc/yum.repos.d/CentOS-mysql57.repo <<EOF
[mysql57]
name=mysql57
enabled=1
gpgcheck=0
baseurl=file:///mysql57
EOF
yum clean all
下载mysql并修改密码
yum install -y mysql-community-server
systemctl start mysqld
#查看默认密码
grep "password" /var/log/mysqld.log
#修改密码
mysqladmin -u root -p password 'ABCabc-123'
单组复制-传统复制
主服务器上配置my.cnf文件
vim /etc/my.cnf
server-id = 100
log_bin = mysql-bin
#启动服务
systemctl restart mysqld
在主服务器上创建用户
#登入mysql数据库
mysql -u root -p'密码'
#创建用户权限
grant replication slave on *.* to 'repluser'@'192.168.180.%' identified by 'ABCabc-123';
#刷新权限
flush privileges;
#查看服务状态
show master status\G;
在从服务器上链接到主服务器
#进入数据库
mysql -u root -p'密码'
#停止复制进程
stop slave;
#连接主服务器
change master to
#主服务IP
master_host="192.168.180.143",
#连接用户
master_user="repluser",
#连接密码
master_password="ABCabc-123",
#连接端口
master_port=3306,
#连接文件
master_log_file="mysql-bin.000001",
#连接位置
master_log_pos=605;
#启动复制进程
start slave;
从服务器查看连接状态
show slave status\G;
创建库,并查看复制情况
#在主服务器上创建数据库
create database Chen;
#在从服务器上查看复制情况
show databases;
单组复制-GTID复制
在主,从服务器上配置文件
#配置主配置文件
vim /etc/my.cnf
gtid_mode = ON
enforce_gtid_consistency = true
#重启服务
systemctl restart mysqld
从服务器配置连接
#登入数据库
mysql -uroot -pABCabc-123
#停止复制进程
stop slave;
change master to
#主服务器IP
master_host="192.168.180.143",
#连接用户
master_user="repluser",
#连接密码
master_password="ABCabc-123",
#启动全局事务标识符
master_auto_position=1;
#启动复制进程
start slave;
#查看服务状态
show slave status\G;
测试查看复制情况
双主复制
在主服务器上同步用户
#创建授权用户
grant replication slave on *.* to 'repluser'@'192.168.180.%' identified by 'ABCabc-123';
#刷新权限
flush privileges;
在第二主上查看用户信息
#进入数据库
mysql -u root -p'密码'
#查看用户信息
select user,host from mysql.user;
在第二台主上开启二进制
vim /etc/my.cnf
#配置日志文件路径
log_bin = mysql-bin
#重启服务
systemctl restart mysqld
在第一台主上配置连接
stop slave;
change master to
master_host="192.168.180.144",
master_user="repluser",
master_password="ABCabc-123",
master_auto_position=1;、
start slave;
创建表并查看同步情况
#在第一个主服务器创建表格
create table Chen.bcnt(id int,name varchar(10));
#插入数据
insert into Chen.bcnt values(1,'ccc');