CentOS7下的Mysql8集群操作实践(二)-主从复制

主从复制原理介绍:

  • Master服务器数据提交后,会将数据写入到Binary log中
  • Slave服务器通过IO线程监听Binary log日志,如果该日志发生变化,会将内容读取到并写入relay log(中继日志)中。
  • Relay线程监听relay log,如果该日志发生变化会将该日志增量的写操作执行一遍,写入数据文件。

CentOS7下的Mysql8集群操作实践(二)-主从复制_第1张图片

硬件规划(虚机)

主机名

OS

IP

用途

备注

CentOS 7_107

CentOS7

192.168.1.107

Master/

Mysql8

CentOS 7_108

CentOS7

192.168.1.108

Slave/读

Mysql8

CentOS 7_109

CentOS7

192.168.1.109

Slave/读

Mysql8

创建三台虚机,一台为主,两台从机。

主从复制具体实现步骤:

  1. Master主服务器配置
  • 修改my.cnf

             

vi /etc/my.cnf

               #启用二进制文件

               log-bin=mysql-bin

              #设置服务器唯一ID,用于区分主从服务器。

              server-id=107

CentOS7下的Mysql8集群操作实践(二)-主从复制_第2张图片

  • 重启Mysql服务
systemctl restart mysqld
  • 登录Mysql给Slave服务器授权限
mysql -uroot -p

输入mysql密码回车,进入到mysql界面

  • 在Master库创建一个账号,具备Replication Slave权限,提供给Slave库访问二进制日志使用。
CREATE USER 'sluser'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'sluser'@'%';
  • 刷新权限
flush privileges;
  • 查看Master状态
show master status;

         2.Slave从服务器的配置

108,109服务器为Slave从服务器,以下只演示了108的从服务器配置,109与108的配置方式一致,就不在此重复。

  • 修改my.cnf
vi /etc/my.cnf

新增如下内容

server-id=108

replay-log=mysql-bin

  • 登录mysql并配置从服务器

设置从服务器对主服务器的监听

CHANGE MASTER TO  MASTER_HOST='192.168.1.107',MASTER_USER='sluser',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1707;

说明:

MASTER_HOST:master的ip或虚ip或域名

MASTER_USER:master上之前创建的登录账户名

MASTER_PASSWORD:创建的登录账户密码

MASTER_LOG_FILE:master的file

MASTER_LOG_POS:master的position

  • 启动从服务器复制功能
start slave;
  • 查看从服务器的状态
show slave status \G

如果Slave_IO_Running:Yes

Slave_SQL_Running: Yes,说明我们的从服务器配置成功,主从复制的配置都已完成。

CentOS7下的Mysql8集群操作实践(二)-主从复制_第3张图片

         3.测试主从复制功能

  • 主服务器创建数据库并新增t_user表
create database testdb;

use testdb;
DROP TABLE IF EXISTS `t_user`;

CREATE TABLE `t_user`  (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

  `age` int(11) NOT NULL,

  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `t_user` VALUES (1, 'test', 25);
  • 从服务器上查看数据库
show databases;

CentOS7下的Mysql8集群操作实践(二)-主从复制_第4张图片

use testdb;

show tables;

CentOS7下的Mysql8集群操作实践(二)-主从复制_第5张图片

select * from t_user;

CentOS7下的Mysql8集群操作实践(二)-主从复制_第6张图片

可以看到在主服务器创建的表和写入的数据在从服务器中也能查询到,表明我们的主从复制配置成功。

你可能感兴趣的:(Mysql)