Centos7安装MySQL5.7和主从复制配置

本文详细介绍了在Linux环境下MySQL的安装步骤,包括环境搭建、用户组与用户创建、服务配置与启动,以及如何通过主从复制实现数据同步。特别强调了在多台虚拟机上配置一主两从的MySQL集群过程,包括修改配置文件、设置权限、启动服务、检查状态等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:MySQL安装

1、下载tar包,这里使用wget从官网下载

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

2、将mysql安装到/usr/local/mysql下

# 解压
tar -xvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

# 移动
mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/

# 重命名
mv /usr/local/mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql

3、新建data目录

mkdir /usr/local/mysql/data

4、新建mysql用户、mysql用户组

# mysql用户组
groupadd mysql

# mysql用户
useradd mysql -g mysql

5、将/usr/local/mysql的所有者及所属组改为mysql

chown -R mysql.mysql /usr/local/mysql

6、初始化mysql

/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize

# 如果出现以下错误, 则执行下面的命令来安装numactl,然后再重新执行上面的mysqld命令
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
yum -y install numactl

7、编辑my.cnf

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密码验证
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

8、开启服务

# 将mysql加入服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# 开机自启
chkconfig mysql on

# 启动mysql服务
service mysql start

9、设置密码

# 登录(由于/etc/my.cnf中设置了取消密码验证,所以此处密码任意)
/usr/local/mysql/bin/mysql -u root -p

# 操作mysql数据库
>use mysql;

# 修改密码
>update user set authentication_string=password('你的密码') where user='root';
>flush privileges;
>exit;

10、将/etc/my.cnf中的skip-grant-tables删除

11、登录再次设置密码(不知道为啥如果不再次设置密码就操作不了数据库了)

/usr/local/mysql/bin/mysql -u root -p
>ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密码';
>exit;

12、允许远程连接

/usr/local/mysql/bin/mysql -u root -p

>use mysql;
>update user set host='%' where user = 'root';
>flush privileges;
>eixt;

13、添加快捷方式

ln -s /usr/local/mysql/bin/mysql /usr/bin
  1. 创建数据库
CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 永久禁用防火墙(需要重启虚拟机)
systemctl disable firewalld.service
reboot

# 在虚拟机上查看一下IP地址
ifconfig

在这里插入图片描述
15、远程连接mysql

mysql -h 172.16.128.128 -u root -p
> show databases;

在这里插入图片描述

注意:最好设置一下静态ip地址,如果不设置ip可能会变,主从复制就不成功。


二:克隆多台虚拟机

克隆多台虚拟机: VMWare Fusion 虚拟机–> 创建完整克隆

这里克隆两次,即总共3台,克隆完成之后需要修改第二台和第三台的mysql的uuid值,随便修改一下即可只要保证三台机器的uuid不同即可

sudo vim /usr/local/mysql/data/auto.cnf

三:MySQL 主从复制配置(一主两从)

①:master操作

  1. 修改master上的mysql配置文件
    vi /etc/my.cnf

    [mysqld]
    # servier-id 每台mysql都要不同
    server-id=1
    log-bin=mysql-bin
    
  2. 在Master建立账户并授权Slave

    # 授权一个用户名为rep,密码为root
    # *.*代表所有库的所有表(可以指定库.表)
    # ip代表只能该ip段下有权限访问, 即配置从服务器的前两个ip段即可,我的两个slave都是172.16段
    mysql> grant replication slave on *.* to 'rep'@'172.16.xxx.%.%' identified by 'root';
    
  3. 重启mysql服务
    service mysql restart;

  4. 查看master状态

    # File 和 Position 两个字段比较重要
    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000005 |      307 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    

② slave1操作

  1. 修改/etc/my.cnf

    [mysqld]
    server-id=2
    log-bin=relay-bin
    
  2. 重启mysql
    service mysql restart;

  3. slave指定master信息

    # 如果之前已经配置过主从复制,需要重新复制需要先停止slave,然后再change master
    mysql> stop slave;
    mysql> change master to
     master_host='172.16.128.128',
     master_port=3306,
     master_user='rep',
     master_password='root',
     master_log_file='mysql-bin.000005',
     master_log_pos=154;
    
  4. 启动slave

    mysql> start slave;
    
    mysql> show slave status\G;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.16.128.128
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000005
              Read_Master_Log_Pos: 307
                   Relay_Log_File: yuslave1-relay-bin.000005
                    Relay_Log_Pos: 473
            Relay_Master_Log_File: mysql-bin.000005
                 # Slave_IO_Running和Slave_SQL_Running必须为Yes
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    

Slave_IO_Running和Slave_SQL_Running必须为Yes,如果有一个为NO主从复制就不成功。
Slave_IO_Running: NO 之三大原因:https://blog.youkuaiyun.com/mqsyoung/article/details/78361469
Slave_SQL_Running: NO https://blog.youkuaiyun.com/heng_ji/article/details/51013710

③ slave2操作

修改/etc/my.cnf,其它步骤和slave1操作完全一样

	[mysqld]
	server-id=3
	log-bin=relay-bin

④ 测试主从复制

# 在master上创建一个数据库
mysql> create database testdb;
# 在slave1和slave2上看testdb是否存在
mysql> show databases;

参考文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风流 少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值