您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

Mysql5.7主从配置

时间:2021-09-06 13:26:46  来源:  作者:神马冬锡

搭建的环境1主1从:MySQL_1作为主服务器ip:192.168.254.129,Mysql_2作为从服务器ip:192.168.254.130

首先准备好2台安装好Mysql5.7的服务器,安装过程可以查看这个链接:https://www.dcr163.cn/519.html

这里我是使用的VMware Workstation 这个虚拟机软件,首先在centos7上安装好1台mysql5.7之后,这里命名虚拟机为Mysql_1,克隆1份Mysql_1虚拟机出来,命名为Mysql_2。

Mysql5.7主从配置

 

依次打开这2台mysql服务器,因为是克隆出来的,Mysql_2的Mysql软件UUID是和第1台一样的,这里我们需要更改一下Mysql_2的UUID。

使用SSH工具连接到Mysql_2服务器上,先连接进入mysql服务

[root@mysql1 ~]# mysql -uroot –p

Mysql5.7主从配置

 

查询出自己的UUID

mysql> SELECT UUID();

Mysql5.7主从配置

 

上面可以看到,这个是本机的UUID,复制这一串UUID,我们退出mysql

mysql> quit

Mysql5.7主从配置

 

修改Mysql_2的UUID

进入到安装目录下的data目录

[root@mysql1 ~]# cd /usr/local/mysql/data/

Mysql5.7主从配置

 

编辑修改auto.cnf这个文件,UUID就定义在这个文件内,把刚刚复制出来的UUID,替换掉旧的

[root@mysql1 data]# vim auto.cnf

Mysql5.7主从配置

 

保存并且退出,我们重新启动一下mysql服务

[root@mysql1 data]# /etc/init.d/mysqld restart

Mysql5.7主从配置

 

到这一步,我们的mysql_2就暂时准备好了。

开始配置mysql主从环境

先配置主服务器master,这里我们是Mysql_1,需要新增一些配置信息:

server-id=1 #这个类似一个唯一的标示,不能重复,最好是和自己的ip一致

log-bin=mysql-bin # 启用二进制日志

#两个可选参数(2选1)

binlog-do-db=mydb #需要同步的库 多个格式 db1,db2 ,这里我们同步的是mydb这个数据库

binlog-ignore-db= #忽略不同步的库

[root@mysql1 ~]# vim /etc/my.cnf

Mysql5.7主从配置

 

保存后重启Mysql_1的mysql服务

[root@mysql1 ~]# /etc/init.d/mysqld restart

Mysql5.7主从配置

 

在Mysql_1上创建刚刚我们指定的那个数据库,我们是使用的utf8mb4字符集:

[root@mysql1 ~]# mysql -uroot -p

mysql> CREATE DATABASE `mydb` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

Mysql5.7主从配置

 

在Mysql_1上创建一个同步的账号,给从服务器使用

mysql> grant replication slave on *.* to 'repl'@'192.168.254.%' identified by '654321';

mysql> flush privileges;

Mysql5.7主从配置

 

上面我们创建了一个 repl账号,密码为:654321,只能在192.168.254.* 这个网段的客户端链接,请根据自己的环境需求修改自己对应的ip。

先锁表,不让数据写入,防止配置同步的时候数据不一致

mysql> flush tables with read lock;

Mysql5.7主从配置

 

查看主服务器的状态,并且记录二进制文件File和Position,这个配置从服务器的时候需要用到。

mysql> show master status;

Mysql5.7主从配置

 

备份mydbd的数据库,先退出mysql客户端

mysql> quit

[root@mysql1 ~]# mysqldump -uroot -p mydb>mydb.sql

Mysql5.7主从配置

 

把备份好的数据库拷贝到从服务器上的/root目录下,记得把从服务器的ip改成自己环境下的

[root@mysql1 ~]# scp mydb.sql 192.168.254.130:~

Mysql5.7主从配置

 

配置从服务器slave,我们这里是Mysql_2

新建一个和主服务器同样的库

mysql> CREATE DATABASE `mydb` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

导入主服务器备份的数据sql

mysql> use mydb

Database changed

mysql> sourece /root/mydb.sql

Mysql5.7主从配置

 

修改配置文件,需要新增一些配置信息:

server-id=2 #这个类似一个唯一的标示,不能重复,最好是和自己的ip一致

log-bin=mysql-bin # 启用二进制日志

#两个可选参数(2选1)这两个参数设置成和主一样

binlog-do-db=mydb #需要同步的库 多个格式 db1,db2 ,这里我们同步的是mydb这个数据库

binlog-ignore-db= #忽略不同步的库

#设置只读,从服务器不给写入,这个不影响数据同步

read_only = 1 #普通用户设置只读

super_read_only = 1 #超级用户设置只读

[root@mysql1 ~]# vim /etc/my.cnf

Mysql5.7主从配置

 

保存退出后重启mysql服务器

[root@mysql2 ~]# /etc/init.d/mysqld restart

Mysql5.7主从配置

 

登陆Mysql_2客户端,配置slave

[root@mysql2 ~]# mysql -uroot –p

执行以下命令, (根据mysql官方手册的说明,5.5之前是slave stop,5.6之后改为stop slave)

mysql> stop slave;

mysql> change master to master_host='192.168.254.129', master_user='repl', master_password='654321',master_log_file='mysql-bin.000001', master_log_pos=815;

-- (master_log_file和master_log_pos填上刚才记录下的二进制日志文件名和位置)

mysql> start slave;

查看从服务器的状态:

mysql> show slave status G;

Mysql5.7主从配置

 

从服务器配置完成后,取消主服务器Mysql_1的锁表操作;

mysql> unlock tables;

查看验证主从配置的效果

在主服务器Mysql_1上创建一张a1表

CREATE TABLE `a1` (

`id` INT(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,

`title` CHAR(20) NOT NULL DEFAULT ''

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Mysql5.7主从配置

 

写入一条数据

mysql> INSERT INTO a1 (title) VALUES ('不如吃茶去');

Mysql5.7主从配置

 

去从服务器Mysql_2看看有没有同步

mysql> use mydb;

mysql> show tables;

mysql> SELECT * FROM a1;

Mysql5.7主从配置

 

多添加几条记录,删除一条记录,发现从服务器也能正常的同步;主从配置就这样完成了,写数据只能在主服务器中写,从服务器只能读取!



Tags:主从配置   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
搭建的环境1主1从:Mysql_1作为主服务器ip:192.168.254.129,Mysql_2作为从服务器ip:192.168.254.130首先准备好2台安装好Mysql5.7的服务器,安装过程可以查看这个链接:https://www.d...【详细内容】
2021-09-06  Tags: 主从配置  点击:(49)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(6)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(17)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(16)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(19)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(27)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条