TypechoJoeTheme

Dcr163的博客

统计

Mysql5.7主从配置

2021-09-03
/
0 评论
/
1,128 阅读
/
正在检测是否收录...
09/03

环境说明

搭建的环境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。

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

使用SSH工具连接到Mysql_2服务器上,先连接进入mysql服务
[root@mysql1 ~]# mysql -uroot –p

查询出自己的UUID
mysql> SELECT UUID();

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

修改Mysql_2的UUID
进入到安装目录下的data目录
[root@mysql1 ~]# cd /usr/local/mysql/data/

编辑修改auto.cnf这个文件,UUID就定义在这个文件内,把刚刚复制出来的UUID,替换掉旧的
[root@mysql1 data]# vim auto.cnf

保存并且退出,我们重新启动一下mysql服务
[root@mysql1 data]# /etc/init.d/mysqld restart

到这一步,我们的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

保存后重启Mysql_1的mysql服务
[root@mysql1 ~]# /etc/init.d/mysqld restart

在Mysql_1上创建刚刚我们指定的那个数据库,我们是使用的utf8mb4字符集:
[root@mysql1 ~]# mysql -uroot -p
mysql> CREATE DATABASE mydb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

在Mysql_1上创建一个同步的账号,给从服务器使用
mysql> grant replication slave on . to 'repl'@'192.168.254.%' identified by '654321';
mysql> flush privileges;

上面我们创建了一个 repl账号,密码为:654321,只能在192.168.254.* 这个网段的客户端链接,请根据自己的环境需求修改自己对应的ip。
先锁表,不让数据写入,防止配置同步的时候数据不一致
mysql> flush tables with read lock;

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

备份mydbd的数据库,先退出mysql客户端
mysql> quit
[root@mysql1 ~]# mysqldump -uroot -p mydb>mydb.sql

把备份好的数据库拷贝到从服务器上的/root目录下,记得把从服务器的ip改成自己环境下的
[root@mysql1 ~]# scp mydb.sql 192.168.254.130:~

配置从服务器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

修改配置文件,需要新增一些配置信息:
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

保存退出后重启mysql服务器
[root@mysql2 ~]# /etc/init.d/mysqld restart

登陆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;

从服务器配置完成后,取消主服务器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;


写入一条数据
mysql> INSERT INTO a1 (title) VALUES ('不如吃茶去');

去从服务器Mysql_2看看有没有同步
mysql> use mydb;
mysql> show tables;
mysql> SELECT * FROM a1;

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

MYSQL
朗读
赞(0)
版权属于:

Dcr163的博客

本文链接:

https://dcr163.cn/541.html(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. William Tardent
    2024-02-27
  2. Maryann Hamer
    2024-02-27
  3. Sanora Pantano
    2024-02-24
  4. aa
    2024-02-21
  5. Kassie Baum
    2024-01-28

标签云