(5.2)mysql高可用系列——测试环境部署
关键词环境部署:
############## 测试环境机器架构 #########
【1】策划
【1.1】linux服务器A组 8台
192.168.1.200~192.168.1.207,主机名db,db1~db7
【1.2】负载均衡服务器 2台
192.168.1.211~192.168.1.212,主机名,fz1,fz2
【1.3】中间件
192.168.1.221~192.168.1.222,主机名,xm1,xm2
【1.4】mysql服务器B组 8台
#拷贝的【1.1】中的虚拟机文件,所以是同样的IP和主机名
192.168.1.200~192.168.1.207,主机名db,db1~db7
############## 样板机部署 #########
【2】虚拟机,样板机centos7
#IP地址
IP地址,192.168.1.200
#修改主机名
hostname db1#直接修改本地主机名
vi /etc/sysconfig/network #修改网络上的主机名
#磁盘分布
/ 50G
softvg:30G
appvg:51
datavg:52
logvg:53
bakvg:54
lvm磁盘系统构建
#PV
pvcreate /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
#VG
vgcreate softvg /dev/sdf
vgcreate appvg /dev/sdb
vgcreate datavg /dev/sdc
vgcreate logvg /dev/sdd
vgcreate bakvg /dev/sde
#LV
lvcreate -n softlv -L 30000M softvg
lvcreate -n mysqllv -L 50000M appvg
lvcreate -n datalv -L 50000M datavg
lvcreate -n loglv -L 50000M logvg
lvcreate -n baklv -L 49998M bakvg
#格式化
mkfs.xfs /dev/softvg/softlv
mkfs.xfs /dev/appvg/mysqllv
mkfs.xfs /dev/datavg/datalv
mkfs.xfs /dev/logvg/loglv
mkfs.xfs /dev/bakvg/baklv
#创建目录
mkdir -p /soft
mkdir -p /mysql/app
mkdir -p /mysql/data
mkdir -p /mysql/log
mkdir -p /mysql/backup
#挂载
mount /dev/softvg/softlv /soft
mount /dev/appvg/mysqllv /mysql/app
mount /dev/datavg/datalv /mysql/data
mount /dev/logvg/loglv /mysql/log
mount /dev/bakvg/baklv /mysql/backup
#修改 /etc/fstab 以便可以重启自动挂载
echo '/dev/softvg/softlv /soft xfs defaults 0 0'>>/etc/fstab
echo '/dev/appvg/mysqllv /mysql/app xfs defaults 0 0'>>/etc/fstab
echo '/dev/datavg/datalv /mysql/data xfs defaults 0 0'>>/etc/fstab
echo '/dev/logvg/loglv /mysql/log xfs defaults 0 0'>>/etc/fstab
echo '/dev/bakvg/baklv /mysql/backup xfs defaults 0 0'>>/etc/fstab
#本地host
echo '192.168.1.200 db' >>/etc/hosts
echo '192.168.1.201 db1' >>/etc/hosts
echo '192.168.1.202 db2' >>/etc/hosts
echo '192.168.1.203 db3' >>/etc/hosts
echo '192.168.1.204 db4' >>/etc/hosts
echo '192.168.1.205 db5' >>/etc/hosts
echo '192.168.1.206 db6' >>/etc/hosts
echo '192.168.1.207 db7' >>/etc/hosts
echo '192.168.1.211 fz1' >>/etc/hosts
echo '192.168.1.212 fz2' >>/etc/hosts
echo '192.168.1.221 xm1' >>/etc/hosts
echo '192.168.1.222 xm2' >>/etc/hosts
#配置字符集
echo "export LANG=en_US.UTF8">>~/.bash_profile
echo "export LANG=en_US.UTF8">>/etc/profile
#挂载光驱
mount /dev/cdrom /mnt
#配置本地yum源
cd /etc/yum.repos.d/
mkdir bk
mv CentOS-Base.repo bk/
touch base.repo
echo "[base]">>base.repo
echo "name=centos7.5_cdrom">>base.repo
echo "baseurl=file:///mnt">>base.repo
echo "gpgcheck=0">>base.repo
echo "enabled=1">>base.repo
yum list #核验yum源
#设置默认启动方式为3,多用户模式
systemctl get-default multi-user.target
systemctl get-default #核验
#参数优化(1)
echo "* soft memlock 300000">>/etc/security/limits.cnf #内存锁 300M
echo "* hard memlock 300000">>/etc/security/limits.cnf
echo "vm.nr_hugepages=150">>/etc/sysctl.conf
echo "vm.swappiness=10">>/etc/sysctl.conf --虚拟内存页面交换在物理内存低于10%的时候启用
echo "vm.min_free_kbytes=51200">>/etc/sysctl.conf --给操作系统预留50M,建议测试环境
echo "#vm.min_free_kbytes=512000">>/etc/sysctl.conf --给操作系统预留500M,建议给生产环境
sysctl -p#核验
#参数优化(2)
echo "* soft nproc 65535" >>/etc/security/limits.conf #nproc 用户创建进程数限制
echo "* hard nproc 65535" >>/etc/security/limits.conf
echo "* soft nofile 65535" >>/etc/security/limits.conf #nofile 进程打开文件次数限制
echo "* hard nofile 65535" >>/etc/security/limits.conf
echo "* soft stack 65535" >>/etc/security/limits.conf #存放变量的指针
echo "* hard stack 65535" >>/etc/security/limits.conf
systemctl stop avahi-daemon.socket avahi-daemon.service
systemctl disable avahi-daemon.socket avahi-daemon.service
#selinux关闭
echo "* - nproc 16384">/etc/security/limits.d/90-nproc.conf #nproc 进程数限制
echo "SELINUX=disable">/etc/selinux/config #关闭selinux
echo "#SELINUXTYPE=targeted">>/etc/selinux/config
cat /etc/selinux/config
setenforce 0
getenforce
#防火墙关闭
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
#IO调度算法
#一共4种,默认是CFQ(完全随机访问,相对来说这种算法对于mysql来说不是很好,会造成小IO的延时增加,msql官网建议算法换成deadline算法,这种IO比较稳定)。一共4种,默认是CFQ(完全随机访问,相对来说这种算法对于mysql来说不是很好,会造成小IO的延时增加,msql官网建议算法换成deadline算法,这种IO比较稳定)。
#sas和stat官网建议用这个
echo 'deadline' > /sys/block/sdb/queue/scheduler
echo 'deadline' > /sys/block/sdc/queue/scheduler
echo 'deadline' > /sys/block/sdd/queue/scheduler
echo 'deadline' > /sys/block/sde/queue/scheduler
echo 'deadline' > /sys/block/sdf/queue/scheduler
#ssd用这个
echo 'NOOP' > /sys/block/sd*/scheduler
#减少预读(默认128)
echo '16'>/sys/block/sdb/queue/read_ahead_kb
echo '16'>/sys/block/sdc/queue/read_ahead_kb
echo '16'>/sys/block/sdd/queue/read_ahead_kb
echo '16'>/sys/block/sde/queue/read_ahead_kb
echo '16'>/sys/block/sdf/queue/read_ahead_kb
#增大队列
echo '512'>/sys/block/sdb/queue/nr_requests
echo '512'>/sys/block/sdc/queue/nr_requests
echo '512'>/sys/block/sdd/queue/nr_requests
echo '512'>/sys/block/sde/queue/nr_requests
echo '512'>/sys/block/sdf/queue/nr_requests
#x修改时区为上海
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#更换内存模式,不使用NUMA模式
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off" #把这行改成这样
grub2-mkconfig -o /etc/grub2.cfg
numastat
numactl --show
numactl --hardware
shutdown -r now
############## 克隆机器调整 ################################
#【1】记录每台机器的MAC
192.168.1.201 00:0c:29:65:8c:19
192.168.1.202
192.168.1.203
192.168.1.204
192.168.1.205
192.168.1.206
192.168.1.207
#【2】直接删除/etc/udev/rules.d下的70-persistent-net.rules文件,然后reboot次系统
#【3】配置mac地址,首先ifconfig -a 命令看一下hwaddr的值和文件/etc/sysconfig/network-scripts/ifcfg-ens34
#改MAC、IP、删UUID
(1)vi /etc/sysconfig/network-scripts/ifcfg-ens34 #修改IP信息,删除UUID
(2)rm -f /etc/udev/rules.d/70-persistent-ipoib.rules #修改mac地址,重启会生成
(3)#修改主机名
hostnamectl set-hostname db1
echo "db1">/etc/hostname
reboot
############ 安装mysql ################
【1】利用scp传输文件到8台服务器
scp 192.168.1.200:/soft/*
【2】install the base lib
mount /dev/cdrom /mnt
yum remove mariadb* -y
yum install gcc gcc-c++ perl-DBD-MySQL ncurses-devl.x86_64 cmake.x86_64 libaio.x86_64 bison.x86_64 gcc-c++.x86_64 bind-utils wget curl curl-devel -y
# perl-DBD-MySQL 这个lib包很重要
yum search rz -y
yum install -y lrzsz.x86_64
【3】install mysql
#(1)uncompress file,create user and usergroup mysql
groupadd mysql
useradd -r -g mysql -s /bin/falsh mysql
cd /mysql/app
tar -zxvf /soft/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.24-linux-glibc2.12-x86_64 mysql
echo "export PATH=\$PATH:$HOME/bin:/mysql/app/mysql/bin">>/etc/profile
source /etc/profile
#(2)create dir,and change privileges to mysql user
mkdir -p /mysql/data/3306/data
mkdir -p /mysql/log/3306/binlog
mkdir -p /mysql/log/3306/relaylog
mkdir -p /mysql/backup/backup-db
mkdir -p /mysql/backup/backup-tmp
mkdir -p /mysql/backup/backup-binlog
chown -R mysql:mysql /mysql
#(3)init database mysql
rm -rf /mysql/data/3306/data
cp /soft/my.cnf /mysql/data/3306/
/mysql/app/mysql/bin/mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql
ln -s /mysql/data/3306/mysql.sock /tmp/mysql.sock
#(4) remove default my.cnf
rm -f /etc/my.cnf
rm -rf /etc/my.cnf.d
#(5)set the default password
mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --skip-grant-tables --skip-networking &
mysql -uroot --socket='/mysql/data/3306/mysql.sock' -e"update mysql.user set authentication_string=password('123456') where user='root' and host='localhost';flush privileges;"
mysql -uroot -p123456 --connect-expired-password -S /mysql/data/3306/mysql.sock -e"alter user 'root'@'localhost' identified by '123456';"
mysql -uroot -p123456 -S /mysql/data/3306/mysql.sock -e"create user 'root'@'%' identified by '123456';grant all privileges on *.* to 'root'@'%' with grant option;flush privileges;"
mysql -uroot --password='123456' -S /mysql/data/3306/mysql.sock -e"create database t;use t;create table t1 select 1 as id;select * from t1;drop database t;"
--connect-expired-password 使用过期密码连接
#(6)set the mysql.start shell
echo "mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --user=mysql &">>/mysql/data/3306/mysql.start
chown mysql:mysql /mysql
chmod +x /mysql/data/3306/mysql.start
mysqladmin -uroot -p123456 -S /mysql/data/3306/mysql.sock shutdown
sh /mysql/data/3306/mysql.start
#(7)把mysql配置成服务
ln -s /mysql/data/3306/my.cnf /etc/my.cnf
cp -r /mysql/app/mysql/support-files/mysql.server /usr/lib/systemd/system/
cp -r /mysql/app/mysql/support-files/mysql.server /etc/init.d/mysql
systemctl daemon-reload #重载系统进程,才能让上面的cp起作用把mysql.server封装成服务
#(8)设置成开机自启
systemctl daemon-reload #重载系统进程,才能让上面的cp起作用把mysql.server封装成服务
systemctl status mysql #查看mysql服务状态
systemctl start mysql #启动mysql
systemctl enable mysql #设置mysql服务开机自启
chkconfig --add mysql #设置mysql服务开机自启
(5.2)mysql高可用系列——测试环境部署的更多相关文章
- MySQL高可用架构-MHA环境部署记录
一.MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司) ...
- MySQL高可用架构-MMM环境部署记录
MMM介绍MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理 ...
- (5.8)mysql高可用系列——MySQL中的GTID复制(实践篇)
一.基于GTID的异步复制(一主一从)无数据/少数据搭建 二.基于GTID的无损半同步复制(一主一从)(mysql5.7)基于大数据量的初始化 正文: [0]概念 [0.5]GTID 复制(mysql ...
- Mysql高可用集群环境介绍
MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...
- (5.15)mysql高可用系列——MHA实践
关键词:MHA,mysql mha [1]需求 采用mysql技术,实现MHA高可用主从环境,预计未来数据量几百G MHA概念参考:MYSQL高可用技术概述 [2]环境技术架构 [2.1]MHA简介 ...
- MySQL高可用系列之MHA(二)
一.參数说明 MHA提供了一系列配置參数.深入理解每一个參数的详细含义,对优化配置.合理使用MHA非常重要.非常多高可用性也都是通过合理配置一些參数而实现的. MHA包含例如以下配置參数,分别说明例如 ...
- (5.1)mysql高可用系列——高可用架构方案概述
关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下: ...
- ProxySQL Cluster 高可用集群环境部署记录
ProxySQL在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数据并不能共通,在主实例上配置后,仍需要在备用节点上进行配置,对管理来说非常不方便.但是Proxy ...
- MySQL高可用方案MHA的部署和原理
MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切换操作,在master服务器不宕机的情况下,基本能保证数据的一 ...
随机推荐
- (转载)Ant自动编译打包android项目
1 Ant自动编译打包android项目 1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压 ...
- Linux Expect自动交互脚本
https://likegeeks.com/expect-command/ In the previous post, we talked about writing practical shell ...
- IE大文件断点续传
IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...
- k8s删除节点后再重新添加进去(踩坑)
开启本地集群,发现一台节点出问题了,想删除再换一台节点,结果就踩坑了,还好本地有好几套环境. 再master节点执行以下命令 [root@k8s-master ~]# kubectl drain k8 ...
- ship(动态规划)
(ships.pas/c/cpp) 来源:<奥赛经典>(提高篇)[问题描述]PALMIA国家被一条河流分成南北两岸, 南北两岸上各有N个村庄. 北岸的每一个村庄有一个唯一的朋友在南岸,且他 ...
- C++入门经典-例6.17-输出每行数组中的最小值
1:代码如下: // 6.17.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...
- JAVA-Runnable、Callable、FutureTask
通常,创建线程的执行单元有两种,一种是直接继承 Thread,另外一种就是实现 Runnable 接口. 但这两种都有一个问题就是无法有返回值,且子线程在执行过程中无法抛出异常.想线程有返回值,可以使 ...
- 使用 apt-get 清理
大多数使用基于 Debian 的系统的人通常会使用 apt-get 来安装软件包和升级,但是我们多久才清理一次?让我们看下该工具本身的一些清理选项. 在基于 Debian 的系统上运行 apt-get ...
- linux挂载问题
说明 Linux系统在使用光盘.软盘或U盘时,必须先执行挂载(mount)命令. 挂载命令会将这些存储介质指定成系统中的某个目录,以后直接访问相应目录即可读写存储介质上的数据. 挂载光盘 mount ...
- 1.3 Junit4简介
1.Junit4框架 可用于单元测试,直接测试类中的方法 2.简单实用 a.导入Junit的jar包 b.熟悉Junit的执行顺序 c.写测试用例 d.利用断言,找bug 3.demo public ...