<返回更多

Mysql5.7主从配置

2021-09-06    神马冬锡
加入收藏

搭建的环境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主从配置

 

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

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>