mysql8.0集群技术
在Linux下部署mysql
首先安装cmake3和gcc-11,在安装依赖包最后安装mysql
安装mysql
配置yum源仓库
安装依赖包
yum install -y git bison openssl-devel ncurses-devel -y
安装gcc
unzip gcc-11.zip
cd gcc-11/
yum install *.rpm
source /opt/rh/devtoolset-11/enable
cat /opt/rh/devtoolset-11/enable >> ~/.bash_profile
安装cmake3
tar zxf cmake3.tar.gz
cd cmake3/
yum install *.rpm
下载并解压mysql源码包
tar zxf mysql-boost-8.0.40.tar.gz
cd mysql-8.0.40/
mkdir build
cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_SSL=system -DWITH_BOOST=/root/mysql-8.0.40/boost/boost_1_77_0/ -DWITH_DEBUG=OFF
编译完make安装 make install
部署mysql
生成启动脚本
cd /usr/local/mysql/support-files/
cp -p mysql.server /etc/init.d/mysqld
修改环境变量
vim ~/.bash_profile
source ~/.bash_profile
建立数据库程序运行用户
useradd -M -s /sbin/nologin mysql
建立数据库数据目录并给权限
mkdir /data/mysql/
chown mysql.mysql /data/mysql/
生成配置文件
vim /etc/my.cnf
数据库初始化建立mysql基本数据
mysqld --initialize --user=mysql #这会给个初始密码要提前复制好
/etc/init.d/mysqld start 启动
chkconfig mysqld on
数据库安全初始化
mysql_secure_installation #第一个粘贴提前复制的密码,第二个是修改的密码,第三个是确认修改的密码,最后一直回车就行了
mysql的组从复制
master配置
vim /etc/my.cnf
/etc/init.d/mysqld restart 重启
进入mysql
查看默认认证插件
生成专门用来做复制的用户,此用户是用于slave端做认证用
对这个用户进行授权
SHOW MASTER STATUS; 查看master的状态
slave配置
vim /etc/my.cnf 与主一样
/etc/init.d/mysqld restart 重启
进入mysql
SHOW SLAVE STATUS\G;
当有数据时添加slave2
vim /etc/my.cnf 与上一致
/etc/init.d/mysqld restart 重启
在master上配置
mysqldump -uroot -pldr ldr > /mnt/ldr.sql
scp /mnt/ldr.sql root@192.168.23.190:/mnt 拷贝到slave2
slave2配置
看master状态
进入mysql
查看slave状态(两个线程是yes就行)
mysql高可用之组复制 (MGR)
开启一个协议层,写东西时会先进入协议层,协议层会先去询问数据库能不能做,如果超过(n/2+1)回复不能做,就不能做遵循少数服从多数原则
三台主机都要先停止mysqld服务再删除/data/mysql/里的所有数据 在配置hosts解析
rm -fr /data/mysql/*
三台都是同样的做法
vim /etc/my.cnf
做初始化
做完不要启动继续编辑文件(因为后面要添加组件,只能在初始化后做,不然初始化启动不了)
做完启动mysql
进入mysql(登录用初始化给的密码)
进去修改密码
关闭日志,后面的操作不需要记录到日志中
创建用户
授权
把自己加入组中
手动打开组复制模式
打开服务,再关闭模式(如下)
查看组情况
gtid模式
在master端的写入时多用户读写,在slave端的复制时单线程日志回放,所以slave端一定会延迟与master端
这种延迟在slave端的延迟可能会不一致,当master挂掉后slave接管,一般会挑选一个和master延迟日志最接近的充当新的master
那么为接管master的主机继续充当slave角色并会指向到新的master上,作为其slave.
三台主机一样
查看gtid状态
重启服务
两台从服务器配置
show slave status\G;( Auto_Position: 1 #功能开启)
半同步模式
master配置
不要重启(会出现没有pidde错误)
安装半同步插件
查看插件情况
打开半同步功能
查看半同步功能状态
slave端
#开启半同步功能
mysql配置
MHA
使用一主两从架构
创建一台mha服务器
将MHA-7.zip传上去
再解压进入MHA-7
yum install *.rpm -y
将mha4mysql-node-0.58-0.el7.centos.noarch.rpm拷贝给另外三台主机
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.23.170:/mnt
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.23.180:/mnt
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.23.190:/mnt
拷贝完再安装
在mha里面进行配置
进行添加用户并给权限让root用户能够远程连接
ssh-keygen
ssh-copy-id root@192.168.23.170
ssh-copy-id root@192.168.23.180
ssh-copy-id root@192.168.23.190
ssh-copy-id root@192.168.23.200
再将id_rsa传给另外三台主机
检测网络及ssh免密
在master数据节点还在正常工作情况下
看原来的主
看原来的从
如果想修改回去就将ip改为原来的ip