Linux安装mysql数据库并实现主从搭建

一.环境说明

【环境说明】:
192.168.110.161 mysql-master  ##网络配置到位,防火墙关闭,selinux关闭
192.168.110.162 mysql-slave   ##网络配置到位,防火墙关闭,selinux关闭

两台主机,操作系统是centos7,提前网络配置好,关闭防火墙,selinux,修改主机名

二.【YUM配置】

本次建议使用操作系统镜像做yum源,具体方法如下

1.创建操作系统ISO镜像的挂载目录,并挂载

mkdir /mnt/yllyum
mount /dev/cdrom /mnt/zijian-yum

2.进入yum的目前做备份,并创建自建的yum源的文件

cd /etc/yum.repos.d/
mkdir bak
mv * bak 

#自建yum的文件

cat >zijian-yum.repo <<EOF
[base]
name=CentOS-$releasever - Base
baseurl=file:///mnt/zijian-yum
enable=1
gpgcheck=0
gpgkey=file:///mnt/zijian-yum/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF

yum clean all
yum makecache

三.【mysql安装】 

1.清理老的mysql

(1)卸载已有的mysql
      查找以前是否装有mysql命令:rpm -qa|grep -i mysql
      停止mysql服务,卸载之前安装的mysql: rpm -ev 包名
      如果卸载过程中报依赖错误,直接在卸载命名后面加参数 --nodeps
      rpm -ev 包名 --nodeps
(2)查找之前老版本mysql的文件并删除老版本mysql的文件

2.安装前的准备

安装mysql之前需要确保系统中有libaio依赖

yum search libaio
yum install libaio -

 3.下载mysql软件包

mkdir /u01/
cd /u01/
mkdir soft
cd soft

下载并上传文件mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz到soft目录下

5.解压软件包

#解压
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
#重命名文件夹
mv mysql-8.0.33-linux-glibc2.12-x86_64 ../mysql8 

3)、安装
(1)添加用户和组

#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql(使用-r参数表示mysql用户是一个系统用户,不能登录) --已有,不操作
useradd -r -g mysql mysql#添加完用下面命令测试,能看到mysql用户的信息
id mysql

(2)手动创建MySQL data目录

cd /u01/mysql8
mkdir data
mkdir log
mkdir run
touch /u01/mysql8/log/mysql8.log

(3)目录权限设置

#将mysql及其下所有的目录所有者和组均设为mysql
chown -R mysql:mysql /u01/mysql8/#查看是否设置成功,执行下面命令,可以看到文件的所有者和组都变成了mysql
cd /u01/mysql8
ll

(4)配置my.cnf文件----此文件非常重要,初始化之前要把此文件放到 /etc 目录下,或者把老文件备份一下(升级失败还能用老MySQL)
##rm -rf /etc/my.cnf编辑新文件
vi /etc/my.cnf
#此文件内容如下(路径根据自己的实际情况):

[client]
port = 13306
socket = /tmp/mysql.sock[mysqld_safe]
log-error=/u01/mysql8/log/mysql8.log
pid-file=/u01/mysql8/run/mysql8.pid[mysqld]
port = 13306
init-connect='SET NAMES utf8mb4'     #连接时执行的SQL
basedir=/u01/mysql8           #根据自己的安装目录填写
datadir=/u01/mysql8/data       #根据自己的mysql数据目录填写
socket=/tmp/mysql.sock                
max_connections=200                   #允许最大连接数
max_connect_errors = 30               #最大连接错误次数
character-set-server=utf8mb4         #服务端使用的字符集默认为8比特编码的latin1字符集
default-storage-engine=INNODB         #创建新表时将使用的默认存储引擎
skip-character-set-client-handshake   #忽略应用程序想要设置的其他字符集
###sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式net_read_timeout = 120               #在中止读取之前等待来自连接的更多数据的秒数
net_write_timeout = 900               #在中止写入之前等待块写入连接的秒数
max_allowed_packet = 500M             #在一次传送数据包的过程当中最大允许的数据包大小
wait_timeout=1800                     #请求的最大连接时间
interactive_timeout=1800             #和上一参数同时修改才会生效###记录慢SQL
slow_query_log=1
long_query_time = 10
slow_query_log_file=slow-query.log

(5)初始化mysql数据库

/u01/mysql8/bin/mysqld --initialize-insecure --user=mysql --basedir=/u01/mysql8 --datadir=/u01/mysql8/data#注意:mysqld --initialize-insecure初始化后的mysql是没有密码的

(6)mysqld_safe启动mysql(临时启动)

/u01/mysql8/bin/mysqld_safe --user=mysql &

(7)修改密码,调整用户

#登录数据库,无密码

cd /u01/mysql8/bin/
./mysql -u root -p # 默认没有密码,直接敲回车就可以

[注]:没有可以不管
--报错
[root@ol8_mysql8_master bin]# ./mysql -u root -p
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
--解决
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

#修改数据库登录密码

#设置外网可以访问
在mysql的bin目录下执行:mysql -uroot -p密码 登陆到数据:
执行:use mysql;
执行:select host,user from user;可以看到user为root,host为localhost的话,说明mysql只允许本机连接,那么外网,本地软件客户端就无法连接了。调整方法:
执行:update user set host='%' where user ='root';
执行刷新:flush privileges;use mysql;
ALTER USER 'root'@'%' IDENTIFIED BY 'Htjs_JS_2023';
flush privileges;exit;

(8)测试登录

cd /u01/mysql8/bin/
./mysql -u root -p输入密码后,应该就连接上了show databases;
exit; #退出

(9)copy启动脚本并将其添加到服务且设置为开机启动,之前已经有的统统备份,统统移走
#mysql启动脚本为:/u01/mysql8/support-files/mysql.server

cp /u01/mysql8/support-files/mysql.server /etc/init.d/mysqld


#添加服务并设置开机启动

#添加系统服务
chkconfig --del mysqld
chkconfig --add mysqld# 显示服务列表
chkconfig --list# 开机启动
chkconfig --level 345 mysqld on

# 测试添加的服务是否能用
因为之前已经通过mysqld_safe启动mysql,因此需要先停掉进程,需要删除守护进程

ps -ef|grep mysqld 
kill -9 进程号

启动数据库服务

 [Linux6]
service mysqld status #查看状态
service mysqld start #启动mysql服务
service mysqld stop #停止mysql服务
[Linux7]
systemctl status mysqld #查看状态
systemctl start mysqld #启动mysql服务
systemctl stop mysqld #停止mysql服务如果还访问不了,那可能是防火墙问题,修改下防火墙就ok。


4、配置mysql客户端命令快捷方式
先删除老的

rm -rf /bin/mysql
rm -rf /bin/mysqldump

--再增加新的快捷方式

cp /u01/mysql8/bin/mysql /bin/mysql
cp /u01/mysql8/bin/mysqldump /bin/mysqldump

测试登录
cd /
mysql -u root -p

输入密码后,应该就连接上了

show databases;
exit; #退出

[可能出现的问题]:libcrypto.so.1.1: cannot open shared object file。
[root@sc_12366_dzswj_l /]# mysql -u root -p
mysql: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
[解决1]:可以将OpenSSL进行升级,也可以用偷取取巧方法解决,还可以用直接复制所需要的lib文件解决,附上升级OpenSSL的方法
1.zlib 
    tar -zxvf zlib-1.2.13.tar.gz
    cd zlib-1.2.13
    ./configure
    make && make install
2.openssl 
    tar -zxvf openssl-1.1.1q.tar.gz
    cd openssl-1.1.1q
    ./config
    
    若报错Can't locate IPC/Cmd.pm in @IPC/Cmd
        yum install perl-IPC-Cmd
      若报错Operating system: x86_64-whatever-linux2
You need Perl 5.
       yum install perl -y   
    make && make install
        不用专门加参数,默认在/usr/local/ssl
        
    cp libcrypto.so.1.1 /usr/local/lib
    cp libssl.so.1.1 /usr/local/lib
    cd /usr/local/lib
    ln -sf libcrypto.so.1.1 libcrypto.so.0
    ln -sf libcrypto.so.1.1 libcrypto.so
    ln -sf libssl.so.1.1 libssl.so.0
    ln -sf libssl.so.1.1 libssl.so
    ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    
    验证
    openssl version
[解决2]:
先删除老的
rm -rf /bin/mysql
rm -rf /bin/mysqldump

--或者投机取巧用软连接
ln -s  /u01/mysql8/bin/mysql /bin/mysql
ln -s  /u01/mysql8/bin/mysqldump /bin/mysqldump

测试登录

[测试登录]
cd /
mysql -u root -p输入密码后,应该就连接上了show databases;
exit; #退出

【主从环境准备】

1、mysql-master端关机,VMware克隆mysql-master端为mysql-slave端,并且启动mysql-slave端
2、mysql-slave端修改IP
3、mysql-slave端修改《auto.cnf》,修改为与主库不一致就行了
    /u01/mysql8/data/auto.cnf
4、启动从节点,启动主节点

【主从搭建】:
1.配置mysql-master端
 1)、追加my.cnf配置

server-id = 11
log-bin = mysql-bin                   #打开二进制功能,MASTER主服务器必须打开此项
expire_logs_days=15                   #日志过期时间
max_binlog_size=1024M                 #binlog单文件最大值
binlog-rows-query-log_events=1        #可以在binlog日志中看到语句的原始sql
?
binlog-format=ROW
###binlog-row-p_w_picpath=minimal     #允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作
?
###gtid模式关键参数
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=true #从库做为其他从库的主库时用master-info-repository=TABLE
relay-log-info-repository=TABLE

 2)、重启MySQL服务

systemctl restart mysqld

2.配置mysql-slave端
 1)、追加my.cnf配置

server-id = 12
log-bin = mysql-bin                   #打开二进制功能,MASTER主服务器必须打开此项
expire_logs_days=15                   #日志过期时间
max_binlog_size=1024M                 #binlog单文件最大值
binlog-rows-query-log_events=1        #可以在binlog日志中看到语句的原始sql
?
binlog-format=ROW
###binlog-row-p_w_picpath=minimal     #允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作
?
###gtid模式关键参数
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=true #从库做为其他从库的主库时用master-info-repository=TABLE
relay-log-info-repository=TABLE##从库用,验证 binlog 内容的正确性
binlog-checksum=CRC32 #验证 binlog 内容的正确性
source-verify-checksum=1
replica_sql_verify_checksum=1

 2)、重启MySQL服务

systemctl restart mysqld

3.主从搭建配置
1、master端
1)新建用户,mysql登陆进去

CREATE USER slave@'%' identified by 'Htjs_JS_2023';
GRANT Replication slave ON *.* to slave@'%';
ALTER USER slave@'%' IDENTIFIED WITH mysql_native_password BY 'Htjs_JS_2023';
flush privileges;

2)查看主库状态

MYSQL>show master status\G;

3)查看gtid状态

show  variables like '%gtid%';

 2、slave端
1)从库上执行命令

change master to master_host='192.168.110.161',master_port=13306,master_user='slave',master_password='Htjs_JS_2023',master_auto_position=1 ;

2)开启同步

start slave;

3)查看同步状态

show slave status\G;

4.主从验证
1.主库新建数据库及用户

create database swgxpt CHARACTER SET utf8 ;

2.验证主从,从库执行

show slave status\G;

从库检查是否有无新建数据库、用户、相应的表结构。
    

【主从切换】:

切换步骤:

1 切断应用对主库的流量

2 主库、备库设置只读

set global read_only=ON;set global super_read_only=ON;

3 查看备库复制进程状态

show slave status\G

确认Slave_IO_Running,Slave_SQL_Running状态为YES,Seconds_Behind_Master为0

4 比对主备两边的GTID是否一致

方法一:获取主备两边的executed_gtid集合,进行比对

select @@global.gtid_executed;

5 从库停掉复制进程并清空主从信息

stop slave;reset slave all;

6 从库关闭只读开启读写,转为新主库

set global read_only=off;set global super_read_only=off;

7 主库设置执行新主库的复制链路,转为新备库,完成主从切换

change master to master_host='192.168.110.162',master_port=13306,master_user='slave',master_password='Htjs_JS_2023',master_auto_position=1 ;start slave;show slave status\G

8 应用流量切向新主库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python入门教程】Python实现猜数字小游戏

今天跟大家分享一下很久之前自己做的一款猜数字小游戏&#xff0c;基本的循环判断语句即可实现&#xff0c;可以用来当练手或者消磨时间用。 大家在编代码的时候最重要就是先理清逻辑思路&#xff0c;例如应该套几层循环、分几个模块等等。然后在编码时可以先随意一点&#xff…

影响独立服务器稳定运行的因素

影响独立服务器稳定运行的因素 独立服务器的稳定对于网站和运行的程序来说都是最重要的因素&#xff0c;不只是简单的影响网站的速度&#xff0c;也影响搜索引擎对网站的优化。试想一下&#xff0c;客户在访问网站时&#xff0c;网页长时间打不开&#xff0c;页面崩溃会导致客户…

opencv图像像素类型转换与归一化

文章目录 opencv图像像素类型转换与归一化1、为什么对图像像素类型转换与归一化2、在OpenCV中&#xff0c;convertTo() 和 normalize() 是两个常用的图像处理函数&#xff0c;用于图像像素类型转换和归一化&#xff1b;&#xff08;1&#xff09;convertTo() 函数用于将一个 cv…

算法 三数之和-(双指针)

牛客网: BM54 题目: 数组中所有不重复的满足三数之和等于0的数&#xff0c;非递减形式。 思路: 数组不小于3。不重复非递减&#xff0c;需先排序。使用idx从0开始遍历到n-2, 如果出现num[idx]num[idx-1]的情况&#xff0c;忽略继续下一个idx&#xff1b;令left idx1, right …

现代卷积网络实战系列2:PyTorch构建训练函数、LeNet网络

&#x1f308;&#x1f308;&#x1f308;现代卷积网络实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、MNIST数据集处理、加载、网络初始化、测试函数 2、训练函数、PyTorch构建LeNet网络 3、PyTorch从零构建AlexNet训练MNIST数据…

ndoe.js、npm相关笔记

1、npm 全局安装 npm config get prefix 获取 npm 全局安装路径如果全局插件不能正常使用&#xff0c;看环境变量是否已经配置。没有配置则把全局安装路径配置到环境变量的path中

npm 命令

目录 初始化 搜索 安装 删除 更新 换源 查看 其他 补充 1.初始化 npm init #初始化一个package.json文件 npm init -y | npm init --yes 2.搜索 npm s jquery | npm search jquery 3.安装 npm install npm -g #更新到最新版本 npm i uniq | npm ins…

MS933NA适用于 1MP/60fps 摄像头、37.5MHz100MHz、10 位/12 位的串化器

MS933NA 是 10 位 /12 位串化器&#xff0c;支持 37.5MHz  100MHz 时钟&#xff0c; MS933NA 广泛应用于车载摄像、医疗设备、管道探测等领域。 主要特点 ◼ 支持输入 37.5MHz 到 100MHz 的图像时钟 ◼ 单个差分对互连 ◼ 可编程数据有效负载 10 位 /12 …

django 实现:闭包表—树状结构

闭包表—树状结构数据的数据库表设计 闭包表模型 闭包表&#xff08;Closure Table&#xff09;是一种通过空间换时间的模型&#xff0c;它是用一个专门的关系表&#xff08;其实这也是我们推荐的归一化方式&#xff09;来记录树上节点之间的层级关系以及距离。 场景 我们 …

什么是关系模型? 关系模型的基本概念

关系模型由IBM公司研究员Edgar Frank Codd于1970年发表的论文中提出&#xff0c;经过多年的发展&#xff0c;已经成为目前最常用、最重要的模型之一。 在关系模型中有一些基本的概念&#xff0c;具体如下。 (1)关系(Relation)。关系一词与数学领域有关&#xff0c;它是集合基…

Xcode14.3.1打包报错Command PhaseScriptExecution failed with a nonzero exit code

真机运行编译正常,一打包就报错 rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/d9889869-120b-11ee-b796-7a03568b17ac/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender2.6.9] Command PhaseScrip…

优化类问题概述

数学建模系列文章&#xff1a; 以下是个人在准备数模国赛时候的一些模型算法和代码整理&#xff0c;有空会不断更新内容&#xff1a; 评价模型&#xff08;一&#xff09;层次分析法&#xff08;AHP&#xff09;,熵权法&#xff0c;TOPSIS分析 及其对应 PYTHON 实现代码和例题…

QRunnable与外界互传对象

1.概述 QRunnable与外界互通讯是有两种方法的 使用多继承。让我们的自定义线程类同时继承于QRunnable和QObject&#xff0c;这样就可以使用信号和槽&#xff0c;但是多线程使用比较麻烦&#xff0c;特别是继承于自定义的类时&#xff0c;容易出现接口混乱&#xff0c;所以在项…

数据通信——应用层(域名系统)

引言 TCP到此就告一段落&#xff0c;这也意味着传输层结束了&#xff0c;紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关&#xff0c;我们使用电子设备娱乐或办公时&#xff0c;接触到的就是应用…

package.json属性

添加链接描述 一、必须属性 name 定义项目的名称&#xff0c;不能以".“和”_"开头&#xff0c;不能包含大写字母version 定义项目的版本号&#xff0c;格式为&#xff1a;大版本号.次版本号.修订号 二、描述信息 description 项目描述keywords 项目关键词author …

【刷题笔记9.24】LeetCode:二叉树最大深度

LeetCode&#xff1a;二叉树最大深度 1、题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二、思路与算法 如果我们知道了左子树和右子树的最大深度 lll 和 rrr&#xff0c;…

力扣:109. 有序链表转换二叉搜索树(Python3)

题目&#xff1a; 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 来源&#xff1a;力扣&#xff08;LeetCod…

uni-app使用HBuilder X编辑器本地打包apk步骤说明

1.下载安装Android Studio 下载地址官方地址&#xff1a;Android Studio 下载文件归档 | Android 开发者 | Android Developers 安装Android SDK和Google USB Driver即可&#xff0c;后者主要是为了后期使用USB设置的&#xff0c;如果不需要可以不点。 2.下载uni-app提供…

ICMP差错包

ICMP报文分类 Type Code 描述 查询/差错 0-Echo响应 0 Echo响应报文 查询 3-目的不可达 0 目标网络不可达报文 差错 1 目标主机不可达报文 差错 2 目标协议不可达报文 差错 3 目标端口不可达报文 差错 4 要求分段并设置DF flag标志报文 差错 5 源路由…

Mac磁盘空间满了怎么办?Mac如何清理磁盘空间

你是不是发现你的Mac电脑存储越来越满&#xff0c;甚至操作系统本身就占了100多G的空间&#xff1f;这不仅影响了电脑的性能&#xff0c;而且也让你无法存储更多的重要文件和软件。别担心&#xff0c;今天这篇文章将告诉你如何清除多余的文件&#xff0c;让你的Mac重获新生。 一…