keepalived实现mysql双主高可用

一、实验前准备

IP规划

mysql-50    192.168.10.50   

mysql-51    192.168.10.51

VIP  192.168.10.88

虚拟机初始化

关闭防火墙

注意:mysql-50和51都要执行
 

[root@mysql-50 ~]# systemctl    stop   firewalld.service

禁止开机启动
[root@mysql-50 ~]# systemctl disable firewalld.service

关闭SElinux

[root@mysql-50 ~]# sed -i 's/^selinux=.*/SELNUX=disabled/ip' /etc/selinux/config

注意(系统的selinux一定要关闭否则后续的keepalived调用心跳脚本无法生效)

重启服务器生效

[root@mysql-50 ~]# reboot

二、编译安装安装mysql5.7.40版本

## 克隆虚拟机 mysql-50, 2G内存,2CPU
 

[root@mysql-50 ~]# free -m

[root@mysql-50 ~]# cat /proc/cpuinfo | grep process

## 下载 boost 依赖库和 mysql源码包(50多m)
 

​
boost依赖库下载地址:https://www.boost.org/users/history/

[root@mysql-50 ~# cd /usr/local/src/

[root@mysql-50 /usr/local/src]#  wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40.tar.gz
[root@mysql-50 /usr/local/src]#   wget http://sourceforge.net/projects/boost/files/boost/1.59.0/

​
## 下载完成后
[root@mysql-50 /usr/local/src]# ls

boost_1_59_0.tar.gz mysql-5.7.40.tar.gz

## 补包:本地源
[root@mysql-50 /usr/local/src]# yum repolist
[root@mysql-50 /usr/local/src]# yum install gcc-c++ ncurses-devel cmake openssl openssl-devel

## 创建mysql用户组和mysql 用户, ID均为 27
[root@mysql-50 /usr/local/src]# groupadd -g 27 mysql
[root@mysql-50 /usr/local/src]# useradd -g mysql -u 27 -M -s /sbin/nologin mysql
[root@mysql-50 /usr/local/src]# id mysql
uid=27(mysql) gid=27(mysql) 组=27(mysql)

## 准备 mysql数据库目录 /data/mysql , 并设置好权限
[root@mysql-50 /usr/local/src]# mkdir -p /data/mysql
[root@mysql-50 /usr/local/src]# chown mysql:mysql /data/mysql
[root@mysql-50 /usr/local/src]# ls -ld /data/mysql/
drwxr-xr-x 2 mysql mysql 6 10月 20 15:09 /data/mysql/

## 解压 boost 并改目录为短名称, 不需要编译
[root@mysql-50 /usr/local/src]# tar xf boost_1_59_0.tar.gz
[root@mysql-50 /usr/local/src]# ls
[root@mysql-50 /usr/local/src]# mv boost_1_59_0 /usr/local/boost

## 解压 mysql 源码
[root@mysql-50 /usr/local/src]# tar xf mysql-5.7.40.tar.gz
[root@mysql-50 /usr/local/src]# cd mysql-5.7.40/

### 执行Cmake 并制定 boost 依赖库的位置
[root@mysql-50 /usr/local/src/mysql-5.7.40]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_BOOST=/usr/local/boost -DWITH_INNODB_MEMCACHED=ON


 

## make 和make install
[root@mysql-50 /usr/local/src/mysql-5.7.40]# make
等待比较长的时间... ... ....
[root@mysql-50 /usr/local/src/mysql-5.7.40]# make install

-------------------------------------------------------------------------------------------------------------

上面参数详解:

cmake——高级编译配置工具
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 指定向mysql的安装目录

-DMYSQL_DATADIR=/var/lib/mysql 指向mysql数据文件目录(/var/lib/mysql)

-DDEFAULT_CHARSET=utf8 指定默认的字符集为utf8

-DDEFAULT_COLLATION=utf8_general_ci 设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确)

-DMYSQL_TCP_PORT=3306 指定TCP端口为3306

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路径

-DMYSQL_USER=mysql 指定mysql用户(默认为mysql)

-DWITH_MYISAM_STORAGE_ENGINE=1 开启MyISAM引擎支持;

-DWITH_INNOBASE_STORAGE_ENGINE=1 开启innodb引擎支持;

-DWITH_BOOST=/usr/local/boost boots源码包的位置

-DWITH_INNODB_MEMCACHED=ON 是否生成memcached共享库。

### 编译完成后,观察目录大小
du  -h

du -sh 查看当前目录大小

1.9G	/usr/local/mysql57/
5.2G	/usr/local/src/mysql-5.7.40

### 清理 源码目录
[root@mysql-50 ~]# cd   /usr/local/src/
[root@mysql-50 /usr/local/src]# rm  -rf   mysql-5.7.40

########## 至此,mysq编译完成。

############# 修改配置文件如下 :
[root@mysql-50 /usr/local/mysql57/bin]# vim    /etc/my.cnf
[client]
port=3306
socket=/data/mysql/mysql.sock

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

symbolic-links=0
skip-name-resolve
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql
tmpdir=/tmp
socket=/data/mysql/mysql.sock

log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid 

## 编译好的mysql 相关组件, /usr/local/mysql57 这里 
## 主要应用程序
[root@mysql-50 ~]# ls   /usr/local/mysql57/bin 

## 修改环境变量配置 $PATH,加入 /usr/local/mysql57/bin

[root@mysql-50 ~]# vim /etc/profile
... ... ... 最后一行 
PATH=$PATH:/usr/local/mysql57/bin
export PATH

## 立刻生效 
[root@mysql-50 ~]# source   /etc/profile
[root@mysql-50 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql57/bin
## 测试一下执行某个命令 
查看MySQL版本号
[root@mysql-50 /usr/local/src]# mysql -V
########### 初始化数据库 
[root@mysql-50 ~]# ls /data/mysql/
[root@mysql-50 ~]# mysqld  --defaults-file=/etc/my.cnf   --initialize
[root@mysql-50 ~]# ls /data/mysql/
sys  performance_schema   mysql  mysqld.log (错误日志)... ....
#####从错误日志中 获取初始密码
[root@mysql-50 ~]# cat  /data/mysql/mysqld.log  | grep  password
2022-10-20T08:25:41.290774Z 1 [Note] A temporary password is generated for root@localhost: 2Xe0PaEZq-G6

########## 启动数据库服务 

## mysql.server  启动脚本 
[root@mysql-50 ~]# /usr/local/mysql57/support-files/mysql.server start
Starting MySQL. SUCCE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值