(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服务器不宕机的情况下,基本能保证数据的一 ...
随机推荐
- SpringBoot项目构建、测试、热部署、配置原理、执行流程
SpringBoot项目构建.测试.热部署.配置原理.执行流程 一.项目构建 二.测试和热部署 三.配置原理 四.执行流程
- Java枚举类的7种常用的方法
转载于:https://www.cnblogs.com/xhlwjy/p/11314368.html
- Codeforces #499 E Border ( 裴蜀定理 )
题目链接 题意 : 给出 N 种纸币.并且给出面值.每种纸币的数量可以任选.问你得出来的数在 k 进制下.末尾位的数有多少种可能.输出具体方案 分析 : 纸币任意选择组成的和 可以用一个一次多项式来表 ...
- D. Treasure Hunting ( 思维题 , 贪心)
传送门 题意: 在一个 n * m 的地图里,有 k 个宝藏,你的起点在 (1, 1), 每次你能 向下向右向左移动(只要在地图里): 现在,有 q 个安全的列, 你只有在这些列上面,你才能 ...
- Centos 下硬盘分区的最佳方案
Centos7从零开始]Centos 下硬盘分区的最佳方案 2016年12月25日 10:09:02 浮華的滄桑 阅读数 41971 在对硬盘进行分区前,应该先弄清楚计算机担负的工作及硬盘的容量有 ...
- [shell]管道连接的命令判断返回值
场景: 在bash执行管道连接的命令,需要获取到各个命令的返回值用于判断 在脚本中我们可能需要将执行结果打印到屏幕,同时保存在文件中供后面分析用,写出如下的命令 command 2>&1 ...
- AOI 设计
http://blog.csdn.net/zhanghefu/article/details/25833535 云风的Blog 并进行整理而写. AOI(Area Of Interest),中文就是感 ...
- 系统句柄报too many files open
对于一般的应用来说(象Apache.系统进程)1024完全足够使用.但是如何象java等单进程处理大量请求的应用来说就有点捉襟见肘了.如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too ...
- 一、基础篇--1.1Java基础-什么是java的序列化和反序列化
什么是序列化和反序列化 序列化:把堆内存中的java对象数据,通过某种方式把对象存储到磁盘文件或者传递给其他网络节点.这个过程称为序列化.简单来说呢,就是将对象转换成二进流的过程. 反序列化:把磁盘 ...
- 详解嵌套ListView、ScrollView布局显示不全的问题
在项目开发中,可能经常遇到嵌套ListView.ScrollView的问题,就是重写onMeasure方法.解决如下 public class ExpandListView extends ListV ...