CentOs 安装配置 MySQL

安装参考官网Yum 安装 MySQL 文档

安装步骤

添加 MySQL Yum Repository

  1. 这里下载。
  2. 选择你要下载的版本下载。我的系统是CentOs7:

    1
    wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm
  3. 下载好之后,使用下面的命令安装RPM包

    1
    yum localinstall mysql80-community-release-el7-2.noarch.rpm

这个安装命令会把MySQL的Yum源添加到系统的源列表中,并且下载GnuPG key校验软件包的完整性。使用下面的命令验证MySQL的Yum源是否添加成功:

1
yum repolist enabled | grep "mysql.*-community.*"

选择一个版本系列

使用 MySQL Yum Repository,默认会选择最新的GA(Generally Available)系列(当前是MySQL 8.0)安装。如果这是你想要安装的版本,可以跳过这一步。
MySQL的不同版本系列托管在不同的子仓库中。默认情况下启用了最新GA系列(当前MySQL 8.0)的子仓库,并且其他版本的子仓库默认是禁用的。
使用下面的命令查看所有仓库的状态:

1
yum repolist all | grep mysql

安装指定的版本要先禁用最新的GA子仓库,并启用指定版本的子仓库。如果系统支持yum-config-manager,可以使用yum-config-manager,比如,
禁用5.7的子仓库并启用8.0:

1
2
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql80-community

对于启用了dnf的系统,使用:

1
2
dnf config-manager --disable mysql57-community
dnf config-manager --enable mysql80-community

除了上面的方式,还可以手动修改/etc/yum.repos.d/mysql-community.repo文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 8.0
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

通过修改enabled的值来禁用和启用对应的版本仓库。enabled=0表示禁用。使用yum repolist enabled | grep mysql检查状态。

注意,只能启用一个版本。

安装 MySQL

执行下面的命令安装 MySQL:

1
yum install mysql-community-server

这个命令安装MySQL server(mysql-community-server)和运行MySQL server必要的组件,包括MySQL 客户端(mysql-community-client)等。

启动 MySQL

启动 MySQL:

1
2
3
4
systemctl start mysqld
# 检查
systemctl status mysqld

初次启动MySQL server,要注意:

  • SSL证书和密钥文件在数据目录中生成。
  • validate_password被安装并启用。
  • 会创建一个名为root的超级用户。密码可以使用grep 'temporary password' /var/log/mysqld.log来查看。使用生成的临时密码登录,
    尽快更改root密码,并为超级用户帐户设置自定义密码:
    1
    2
    3
    4
    mysql -uroot -p
    # 修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@111';

报错:Your password does not satisfy the current policy requirements

说明密码太简单了。

配置

安装后,配置文件为/etc/my.cnf。具体配置参数参考官网

MySQL 主从复制

环境说明和注意点:

  • 假设有两台服务器,一台做主,一台做从
    • MySQL 主信息:
      • IP:10.5.4.247
      • 端口:3306
    • MySQL 从信息:
      • IP:10.5.4.248
      • 端口:3306
  • 注意点
    • 主 DB server 和从 DB server 数据库的版本一致
    • 主 DB server 和从 DB server 数据库数据一致
    • 主 DB server 开启二进制日志,主 DB server 和从 DB server 的 server-id 都必须唯一
  • 优先操作:
    • 把主库的数据库复制到从库并导入

主库机子操作

  • 主库操作步骤

    • 创建一个目录:mkdir -p /usr/local/mysql/data/mysql-bin
    • 主 DB 开启二进制日志功能:vim /etc/my.cnf
      • 添加一行:log-bin = /usr/local/mysql/data/mysql-bin
      • 指定同步的数据库,如果不指定则同步全部数据库,其中 ssm 是我的数据库名:binlog-do-db=ssm
    • 主库关掉慢查询记录,用 SQL 语句查看当前是否开启:SHOW VARIABLES LIKE '%slow_query_log%';,如果显示 OFF 则表示关闭,ON 表示开启
    • 重启主库 MySQL 服务
    • 进入 MySQL 命令行状态,执行 SQL 语句查询状态:SHOW MASTER STATUS;
      • 在显示的结果中,我们需要记录下 FilePosition 值,等下从库配置有用。
    • 设置授权用户 slave01 使用 123456 密码登录主库,这里 @ 后的 IP 为从库机子的 IP 地址,如果从库的机子有多个,我们需要多个这个 SQL 语句。

      1
      2
      grant replication slave on *.* to 'slave01'@'192.168.1.135' identified by '123456';
      flush privileges;

从库机子操作

  • 从库操作步骤

    • 从库开启慢查询记录,用 SQL 语句查看当前是否开启:SHOW VARIABLES LIKE '%slow_query_log%';,如果显示 OFF 则表示关闭,ON 表示开启。
    • 测试从库机子是否能连上主库机子:mysql -h 192.168.1.105 -u slave01 -p,必须要连上下面的操作才有意义。
      • 由于不能排除是不是系统防火墙的问题,所以建议连不上临时关掉防火墙:service iptables stop
      • 或是添加防火墙规则:
        • 添加规则:iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
        • 保存规则:service iptables save
        • 重启 iptables:service iptables restart
    • 修改配置文件:vim /etc/my.cnf,把 server-id 改为跟主库不一样
    • 在进入 MySQL 的命令行状态下,输入下面 SQL:

      1
      2
      3
      4
      5
      6
      7
      CHANGE MASTER TO
      master_host='192.168.1.113',
      master_user='slave01',
      master_password='123456',
      master_port=3306,
      master_log_file='mysql3306-bin.000006',>>>这个值复制刚刚让你记录的值
      master_log_pos=1120;>>>这个值复制刚刚让你记录的值
  • 执行该 SQL 语句,启动 slave 同步:START SLAVE;

  • 执行该 SQL 语句,查看从库机子同步状态:SHOW SLAVE STATUS;
  • 在查看结果中必须下面两个值都是 Yes 才表示配置成功:
    • Slave_IO_Running:Yes
      • 如果不是 Yes 也不是 No,而是 Connecting,那就表示从机连不上主库,需要你进一步排查连接问题。
    • Slave_SQL_Running:Yes
  • 如果你的 Slave_IO_Running 是 No,一般如果你是在虚拟机上测试的话,从库的虚拟机是从主库的虚拟机上复制过来的,那一般都会这样的,因为两台的 MySQL 的 UUID 值一样。你可以检