Mysql部署高可用---Mysql安装
Mysql集群地址规划
IP地址 | 主机名 | 职责 | 备注 |
---|---|---|---|
192.168.1.150 | mysql-150-master | mysql主 | 从节点为:192.168.1.152:3307、192.168.1.153:3307、192.168.1.154:3307 |
192.168.1.151 | mysql-151-master | mysql主 | 从节点为:192.168.1.152:3308、192.168.1.153:3308、192.168.1.154:3308 |
192.168.1.152 | mysql-152-slave | mysql从 | 需要安装两个实例端口分别为3307,3308 |
192.168.1.153 | mysql-153-slave | mysql从 | 需要安装两个实例端口分别为3307,3308 |
192.168.1.154 | mysql-154-slave | mysql从 | 需要安装两个实例端口分别为3307,3308 |
前期准备:域名设置
mysql-150-master 域名设置
[root@localhost ~]# hostnamectl set-hostname mysql-150-master [root@localhost ~]# bash [root@mysql-150-master ~]#
mysql-151-master 域名设置
#设置151主机域名 [root@mysql-150-master ~]# hostnamectl set-hostname mysql-151-master [root@mysql-150-master ~]# bash bash
mysql-152-slave 域名设置
#设置152主机域名 [root@localhost ~]# hostnamectl set-hostname mysql-152-slave [root@localhost ~]# bash [root@mysql-152-slave ~]#
mysql-153-slave 域名设置
#设置153主机域名 [root@localhost ~]# hostnamectl set-hostname mysql-153-slave [root@localhost ~]# bash [root@mysql-153-slave ~]#
mysql-154-slave 域名设置
#设置154主机域名 [root@localhost ~]# hostnamectl set-hostname mysql-154-slave [root@localhost ~]# bash bash [root@mysql-154-slave ~]#
检查是否已经安装mysql 或者mariadb
分别在5个节点上执行,如果有安装需要卸载
#检查是否已经安装过了 [root@mysql-150-master home]# rpm -qa | egrep "mariadb|mysql" mariadb-libs-5.5.68-1.el7.x86_64
存在安装包,先卸载安装包
[root@mysql-150-master home]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 [root@mysql-150-master home]#
解压mysql.tar.gz
mysql 统一安装到/home路径
[root@mysql-150-master home]# pwd /home # 解压mysql安装包 [root@mysql-150-master home]# tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz #解压完成将mysql文件重命名 [root@mysql-150-master home]# mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql-5.7.22
创建mysql用户和用户组
#在150节点上添加mysql用户,用户组 [root@mysql-150-master home]# groupadd mysql [root@mysql-150-master home]# [root@mysql-150-master home]# useradd -g mysql mysql [root@mysql-150-master home]# #在151节点上添加mysql用户,用户组 [root@mysql-151-master home]# groupadd mysql [root@mysql-151-master home]# [root@mysql-151-master home]# useradd -g mysql mysql [root@mysql-151-master home]# #在152节点上添加mysql用户,用户组 [root@mysql-152-slave home]# groupadd mysql [root@mysql-152-slave home]# [root@mysql-152-slave home]# useradd -g mysql mysql [root@mysql-152-slave home]# #在153节点上添加mysql用户,用户组 [root@mysql-153-slave home]# groupadd mysql [root@mysql-153-slave home]# [root@mysql-153-slave home]# useradd -g mysql mysql [root@mysql-153-slave home]# #在154节点上添加mysql用户,用户组 [root@mysql-154-slave ~]# groupadd mysql [root@mysql-154-slave ~]# [root@mysql-154-slave ~]# useradd -g mysql mysql [root@mysql-154-slave ~]# #修改mysql用户的密码 [root@mysql-150-master home]# passwd mysql 更改用户 mysql 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@mysql-151-master home]# passwd mysql 更改用户 mysql 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@mysql-151-master home]# [root@mysql-152-slave home]# passwd mysql 更改用户 mysql 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@mysql-152-slave home]# [root@mysql-153-slave home]# passwd mysql 更改用户 mysql 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@mysql-153-slave home]# [root@mysql-154-slave ~]# passwd mysql 更改用户 mysql 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@mysql-154-slave ~]#
Mysql-5.7.22目录赋mysql用户权限
修改mysql-5.7.22 目录为mysql用户权限,新增mysql用户后,centos会在/home路径下创建mysql目录,权限也是mysql
[root@mysql-150-master home]# ll 总用量 0 drwx------. 2 mysql mysql 62 3月 1 14:22 mysql drwxr-xr-x. 9 root root 129 3月 1 13:51 mysql-5.7.22 #home/mysql-5.7.22/ 给目录赋mysql用户权限 [root@mysql-150-master home]# chown -R mysql:mysql /home/mysql-5.7.22/ ### 将mysql-5.7.22移动到mysql目录下 [root@mysql-150-master home]# mv mysql-5.7.22/ mysql [root@mysql-150-master home]# ll 总用量 0 drwx------. 3 mysql mysql 82 3月 1 14:35 mysql
Mysql路径添加到环境变量
[root@mysql-150-master 3306]# vi /etc/profile #文件结尾添加MySQL路径 export MYSQL_HOME=/home/mysql/mysql-5.7.22 export PATH=$PATH:$MYSQL_HOME/bin #立即生效 [root@mysql-150-master 3306]# source /etc/profile
初始化数据库
在192.168.1.150节点上执行
[root@mysql-150-master mysql]# /home/mysql/mysql-5.7.22/bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysql-5.7.22 --datadir=/home/mysql/data/3306 2021-03-01T07:04:51.142825Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2021-03-01T07:04:51.532632Z 0 [Warning] InnoDB: New log files created, LSN=45790 2021-03-01T07:04:51.599975Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2021-03-01T07:04:51.658722Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 6b0dedc2-7a5c-11eb-8944-000c291220ce. 2021-03-01T07:04:51.660226Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2021-03-01T07:04:51.661744Z 1 [Note] A temporary password is generated for root@localhost: *,)pDnUBZ9SN [root@mysql-150-master mysql]#
==这里创建了mysql的默认数据密码,一定要记住后面有用==
2021-03-01T07:04:51.661744Z 1 [Note] A temporary password is generated for root@localhost: *,)pDnUBZ9SN
创建配置文件
在192.168.1.150
节点上执行
## 在/home/mysql下创建mysql 3306.cnf配置文件 ### master节点设置端口为3306 ### 数据路径为./data/3306 [root@mysql-150-master mysql]# vi 3306.cnf [client] port= 3306 socket= /home/mysql/data/3306/mysql.sock default-character-set=utf8 [mysqld] port=3306 socket=/home/mysql/data/3306/mysql.sock datadir=/home/mysql/data/3306 log-error=/home/mysql/data/3306/error.log pid-file=/home/mysql/data/3306/mysql.pid character-set-server=utf8 lower_case_table_names=1 autocommit = 1
启动Mysql
在192.168.1.150
节点上执行,以后台方式运行
[root@mysql-151-master mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3306.cnf & [1] 16512 [root@mysql-151-master mysql]# Logging to '/home/mysql/data/3306/error.log'. 2021-03-01T07:18:50.279274Z mysqld_safe Starting mysqld daemon with databases from /home/mysql/data/3306
登录mysql
这里登录密码在上面,必须立即修改,授权远程访问,刷新权限
[root@mysql-150-master 3306]# mysql -uroot -h 127.0.0.1 -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.22 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ####修改MySQL的初始密码 必须立即修改。 mysql> alter user 'root'@'localhost' identified by 'ruanjie@0511'; Query OK, 0 rows affected (0.00 sec) ###授权远程访问(这样远程客户端才能访问) mysql> grant all privileges on *.* to root@'%' identified by 'ruanjie@0511'; Query OK, 0 rows affected, 1 warning (0.00 sec) ###刷新权限,立即生效修改的配置 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql>
关闭Mysql服务
在192.168.1.150
节点上执行,之前已经启动150节点Msyql,需要关闭Mysql服务,后面拷贝数据库
关闭mysql服务命令(3306端口)
/home/mysql/mysql-5.7.22/bin/mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown
#关闭对应端口的服务 [root@mysql-150-master mysql]# /home/mysql/mysql-5.7.22/bin/mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown Enter password: [root@mysql-153-slave mysql]# 2021-03-01T08:59:02.088440Z mysqld_safe mysqld from pid file /home/mysql/data/3308/mysql.pid ended
复制数据库到其他节点
现在192.168.1.150
节点已经可以访问了,可以复制/home/mysql/data
下数据到其他节点
复制数据库到192.168.1.151(master)
在192.168.1.150
节点上执行,==这里从master节点复制数据到151上的mysql用户==
[root@mysql-150-master mysql]# scp -r /home/mysql/ mysql@192.168.1.151:/home/mysql/ The authenticity of host '192.168.1.151 (192.168.1.151)' can't be established. ECDSA key fingerprint is SHA256:ffQ6umzMxFoQ9SfpVjJfatIVrYtJqXQV1OkEvd6LlA4. ECDSA key fingerprint is MD5:7e:dc:aa:ca:83:2a:10:ac:09:d4:5b:50:c6:22:48:f6. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.151' (ECDSA) to the list of known hosts.
复制数据库到192.168.1.152(slave)
在192.168.1.150
节点上执行
[root@mysql-150-master mysql]# scp -r /home/mysql/ mysql@192.168.1.152:/home/mysql/ ###192.168.1.152上的从节点端口为3307 这里需要将3306命名为3307 同时修改配置文件 [root@mysql-152-slave data]# ll drwxr-x---. 5 mysql mysql 4096 3月 1 19:48 3306 [root@mysql-152-slave data]# pwd /home/mysql/data [root@mysql-152-slave data]# mv /home/mysql/data/3306 /home/mysql/data/3307 ###/home/mysql 配置文件修改为3307 端口也要修改为3307 -rw-r--r--. 1 mysql mysql 404 3月 1 19:51 3307.cnf drwxr-x---. 4 mysql mysql 30 3月 1 15:54 data drwxr-xr-x. 9 mysql mysql 129 3月 1 13:56 mysql-5.7.22 [root@mysql-152-slave mysql]# pwd /home/mysql [root@mysql-152-slave mysql]# ###slave节点是有2个实例,需要负责3307 为3308 [root@mysql-152-slave data]# cp -r /home/mysql/data/3307 /home/mysql/data/3308 [root@mysql-152-slave mysql]# ll -rw-r--r--. 1 mysql mysql 404 3月 1 19:51 3307.cnf drwxr-x---. 4 mysql mysql 30 3月 1 15:54 data drwxr-xr-x. 9 mysql mysql 129 3月 1 13:56 mysql-5.7.22 [root@mysql-152-slave mysql]# cp -r 3307.cnf 3308.cnf
复制数据库到192.168.1.153(slave)
在192.168.1.152
节点上执行,由于152节点为从节点,153也是从节点,直接使用152的节点数据库
[root@mysql-152-slave mysql]# scp -r /home/mysql/ mysql@192.168.1.153:/home/mysql/
复制数据库到192.168.1.154(slave)
在192.168.1.152
节点上执行,由于152节点为从节点,154也是从节点,直接使用152的节点数据库
[root@mysql-152-slave mysql]# scp -r /home/mysql/ mysql@192.168.1.153:/home/mysql/
启动所有节点数据库
启动mysql-150-master
###启动主库 [root@mysql-150-master mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3306.cnf &
启动mysql-151-master
###启动主库 [root@mysql-151-master mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3306.cnf &
启动mysql-152-slave
### 启动从库152:3307 [root@mysql-152-slave mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3307.cnf & ### 启动从库152:3308 [root@mysql-152-slave mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3308.cnf &
启动mysql-153-slave
### 启动从库153:3307 [root@mysql-153-slave mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3307.cnf & ### 启动从库153:3308 [root@mysql-153-slave mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3308.cnf &
启动mysql-154-slave
### 启动从库154:3307 [root@mysql-154-slave mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3307.cnf & ### 启动从库154:3308 [root@mysql-154-slave mysql]# /home/mysql/mysql-5.7.22/bin/mysqld_safe --defaults-file=/home/mysql/3308.cnf &