CentOS 7安装mysql5.7-单节点&主从
一 下载
- Mysql精细版本存档版本下载地址:https://downloads.mysql.com/archives/community/
- 选择对应的linux版本和x86/x64进行下载
可以选择 RPM Bundle,里面包含了所有的rpm安装包,如果选择了这个就不需要再分开下载下面的各个rpm包
如果不想全部下载,也可以细化下载,下载须要的mysql组件,有4个:分别是 server、client、common、libs(可选)
选择好后点击download进入到登陆页面,这一步如果没有账号可以选择不用登陆直接下载,点击下面的No thanks, just start my download.开始下载,可以将下载地址复制在下载器中下载,如迅雷,具体的下载地址为:
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar
下载完成后的tar包解压后里面是每个组件的rpm包
- 可以在下载页面中(https://dev.mysql.com/downloads/mysql/5.7.html#downloads)选择其他版本下载
二 安装单机版MySql
- 卸载mariadb
centos默认安装了mariadb,因此,在安装mysql之前,需要卸载系统中安装的mariadb。
查看系统中所有已安装的mariadb包。命令:
rpm -qa | grep mariadb
卸载mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
- 安装MySql组件
使用命令rpm -ivh {-file-name}进行安装操作。(ivh中, i-install安装;v-verbose进度条;h-hash哈希校验)
按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server,在下载的安装包中会有很多组件,mysql的正常运行只需要安装common、libs、client、server四个组件就可以,不需要全部安装
将所需组件的rpm包上传到服务器
执行安装命令
rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
在安装mysql-community-server-5.7.27-1.el7.x86_64.rpm如果出现下面错误:
原因:这是由于yum安装了旧版本的GPG keys造成的 解决办法:后面加上 --force --nodeps 如:
rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm --force --nodeps
从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。
注意细节
1、执行 yum remove mysql-libs 命令后,会自动删除掉 /etc/ 下的 my.cnf 文件
2、对于安装mysql组件,只有安装了 mysql-community-server-5.7.22-1.el7.x86_64.rpm 组件,才会:
a)在 /etc/下生成 my.cnf 文件 和 my.cnf.d 文件夹
b)在/var/lib/下生产以下三个文件夹:mysql、mysql-files、mysql-keyring
c) 在/var/log/ 下生成 mysqld.log 文件
d) 在/var/run/ 下生成 mysqld 目录
- 初始化mysql数据库
安装成功后执行 systemctl start mysqld 进行数据库初始化操作,若不进行初始化则不能生成root用户的初始密码
初始化启动使用命令:systemctl start mysqld (如果mysql无法启动可以尝试重启系统)
其他初始化命令:
启动:systemctl start mysqld
停止:systemctl stop mysqld
重启:systemctl restart mysqld
查看mysql状态:systemctl status mysqld
查看mysql进程:ps -ef|grep mysql
查看3306端口:netstat -anop|grep 3306
初始化启动完成后若要再管理mysql服务则需要用下命的命令
service mysql start
service mysql stop
service mysql restart
- 修改mysql配置文件
vi /etc/my.cnf
将文件原来的内容全部删除,重新添加如下内容
[mysqld]
character_set_server = utf8
bind-address = 0.0.0.0
skip-name-resolve
重启mysql:systemctl restart mysqld
如果上面的命令失败可以试试service mysql restart
- 初始化MySQL数据库
查看mysql初始密码,查看的密码要记录下来,在下一步修改mysql密码时要输入
cat /var/log/mysqld.log | grep "A temporary password"
修改MySQL密码
mysql_secure_installation
根据提示输入密码,新密码,选择等
在5.6后,mysql内置密码增强机制,低强度密码会报错,可以设置
修改密码需要提示信息依次为:
- Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :
您想用提供的密码继续吗?(按y | y表示是,按任何其他键表示否):y
- Remove anonymous users? (Press y|Y for Yes, any other key for No) :
删除匿名用户?(按y | y表示是,按任何其他键表示否):y(一般会选择删除匿名用户,安全)
- Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
不允许远程根用户登录?(按y | y表示是,按任何其他键表示否):n(输入y表示禁止root用户远程登陆,这样安全,但需要创建其他用户使用)
- Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
删除测试数据库并访问它?(按y | y表示是,按任何其他键表示否):y(是否都可以)
- Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
现在重新加载特权表?(按y | y表示是,按任何其他键表示否):y
修改成功后本地登陆管理员账户
mysql -u root -p
使用root账户创建一个新的账户
CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';
GRANT all privileges ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
创建完成之后可以使用admin用户操作,可以使用客户端登陆测试。
注:本安装步骤中限制了root用户的远程登陆,所以在使用客户端远程登陆时使用root用户登陆失败,要使用admin用户可以远程登陆,若需要root用户远程登陆,请参考下面
- 设置mysql开机自启
Systemctl enable mysqld
- 配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
(1)进入MySQL
[root@hadoop102 mysql-libs]# mysql -uroot -p000000
(2)显示数据库
mysql>show databases;
(3)使用MySQL数据库
mysql>use mysql;
(4)展示MySQL数据库中的所有表
mysql>show tables;
(5)展示user表的结构
mysql>desc user;
(6)查询user表
mysql>select User, Host from user;
(7)修改user表,把Host表内容修改为%
mysql>update user set host='%' where host='localhost';
(8)删除root用户的其他host
mysql>
delete from user where Host='hadoop102';
delete from user where Host='127.0.0.1';
delete from user where Host='::1';
(9)刷新
mysql>flush privileges;
(10)退出
mysql>quit;
至此,数据库的初始化工作完成,以上操作可以作为单机版的mysql安装步骤。
三 主从复制配置
按照单机版的按照步骤在另一台服务器上安装mysql,在搭建主从复制之前两台单机版的mysql之间是互相独立的,dajian 主从复制的原理就是从读取主的blog日志,将数据写入到从服务器
配置演示
主节点:192.168.194.161
从节点:192.168.194.162
MySQL版本:5.7.27
Linux:centOS7.6
3.1 主节点配置
- 编辑主节点配置文件
vi /etc/my.cnf
添加如下内容
log-bin=mysql-bin
server-id=1
innodb-file-per-table=ON
skip_name_resolve=ON
binlog-ignore-db=mysql
binlog_format=mixed
- 重启mysql服务
systemctl restart mysqld
- 查看MySQL信息
使用root用户登陆主节点
mysql -u root -p
查看二进制日志是否开启
show global variables like '%log%';
查看主节点二进制日志列表(已经生成的日志列表)
show master logs;
查看主节点的server id
show global variables like '%server%';
- 在主节点上创建有复制权限的用户
slave想要同步master上的数据首先肯定需要权限,所以我们要在master上面开通权限
grant replication slave, replication client on *.* to 'root'@'192.168.194.162' identified by '9o0p(O)P';
账号是root密码是9o0p(O)P ,允许192.168.194.162(从节点ip)这台机器向master发送同步请求,当然也可以设成其他用户
刷新一下授权信息,然后查看当前master的状态
flush privileges;
show master status;
3.2 从节点配置
- 编辑从节点配置文件
添加以下内容
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2 #全局唯一的,不能和其他节点重复
innodb_file_per_table=ON
skip_name_resolve=ON
- 重启从节点
systemctl restart mysqld
- 查看从节点配置信息
使用root用户登陆从节点
mysql -u root -p
查看中继日志是否开启
show global variables like '%log%';
查看看server 相关信息
show global variables like '%server%';
- 在从节点配置访问主节点的参数信息
添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。
注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。
查看主节点的二进制文件
这里的二进制文件只有一个,如果数据库已经运行了一段时间,会产生多个二进制文件,这里添加的要使用最后一个生成的二进制文件
在从节点上执行下面命令配置访问主节点的参数信息
change master to master_host='192.168.194.161',master_user='root',master_password='9o0p(O)P',master_log_file='mysql-bin.000001',master_log_pos=775;
其中
master_host='192.168.194.161':主节点的ip
master_user='root':登陆主节点的用户名,可以是root用户
master_password='9o0p(O)P':登陆密码
master_log_file='mysql-bin.000001':主节点的最后一个二进制文件名
master_log_pos=775:主节点的最后一个二进制文件名File_size值
- 查看从节点的状态信息
show slave status\G (G要大写,如果是小写则显示的不整齐)
因为没有启动 从节点的复制线程,IO线程 和 SQL 线程都为NO.
- 启动复制线程
start slave;
再次查看从节点状态信息
至此,mysql的主----从复制配置完成。
3.3测试
- 创建数据库
在主节点创建一个数据库
create database mydb;
在从节点查看
show databases;
也可以使用客户端软件远程登陆测试数据的增删该操作,注意,远程登陆需要使用admin用户,root用户已经现在了远程登陆。
3.4主从复制架构中应注意的问题
从节点要设置某些限定使得它不能进行写操作,才能保证复制当中的数据一致。
- 限制从服务器为只读
在从服务器上设置:
read_only = ON,但是此限制对拥有SUPER权限 的用户均无效。
阻止所有用户:
mysq>FLUSH TABLES WITH READ LOCK;
- 如何保证主从复制时的事物安全?
1:在主节点设置参数
sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。
如果用到innode 存储引擎:innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)
innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)
sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。
2:在每个slave节点
skip_slave_start =ON (跳过自动启动,使用手动启动。)
relay_log也会在内从中先缓存,然后在同步到relay_log中去,可以使用下面参数使其立即同步。
sync_relay_log =1 ,默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制。
sync_relay_log_info=1每间隔多少事务刷新relay-log.info,如果是table(innodb)设置无效,每个事务都会更新
注: 在从节点中 master.info是记录在主节点复制位置的文件。
relylog_info: 本地将来至于主节点的哪一个二进制文件中position并且保存文本地哪一个中继日志中的哪一个postion. 从节点启动时也需要根据relay-log.info定位本地relay-log.
CentOS 7安装mysql5.7-单节点&主从的更多相关文章
- 安装简易OpenShift单节点并配置DNS泛域名
1 楔子 公司有个项目部署在 OpenShift 容器云平台上,出现问题较多,于是萌生在公司环境搭建现场仿真环境,由于资源没有生产环境多,就使用单节点简单模拟下 本文主要内容包括以下: 使用 Dnsm ...
- Centos7安装 Hadoop(单节点)
1.Hadoop简介 Hadoop是一个由Apache基金会所开发的开源分布式系统基础框架,使用Java开发,是处理大规模数据的软件平台. Hadoop可以从单一节点扩展到上千节点.用户可以在不了解分 ...
- 在centos上安装mysql5.7的三种方法
带OS信息的是已编译的二进制文件,不带OS信息的是源码包 mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz 二进制包 mysql-5.5.51.tar.gz 源码包 ...
- centos 7安装mysql5.5
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...
- centOS上安装MySQL5.7
在centos上安装mysql,前提得有sudo的权限.没有的话先去跟管理员申请一个. STEP 1 - 安装MySQL 首先打开浏览器访问下 https://dev.mysql.com/downlo ...
- centos6.6手动安装mysql5.5并配置主从同步
0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave) 192.168.61.157 centos6.6 1.查看centos系统版本 [ ...
- CentOS RPM安装MySQL-5.6
1.检查是否有安装 安装之前应该先查询系统是否自在了mysql的软件包 rpm -qa|grep -i mysql 如果有的话需要先删除 rpm -e 软件名 --nodeps 2.下载安装包 cd/ ...
- centos 下安装mysql-5.6.11
这次是在centos6.4下安装mysql,在安装之前,你要先确定你的linux已经安装了这些包: wget, gcc-c++, ncurses-devel ,cmake, make ,perl 如果 ...
- Centos 7 安装 mysql5.7
1.需要下载mysql 下载地址:http://dev.mysql.com/downloads/mysql/ 2.将下载的rpm包上传到centos 7上(我是放在根下面的opt目录) 3. 安装my ...
随机推荐
- day10-习题
习题 1.Homework01 (1) D -- 没有在别名上加引号(ps:别名的as可以省略) (2) B -- 判断null或非空不能用不等于号 (3) C 2.Homework02 写出查看de ...
- TF-GNN踩坑记录(二)
引言 最近在尝试构建GraphTensor时,尝试把默认的特征名hidden_state改成其他时,出现了奇怪的报错. 报错 WARNING:tensorflow:Gradients do not e ...
- 虚拟机安装Linux系统的网络配置
1. 进入配置文件配置.如果不知道ifcfg 后的内容.使用ifconfig vi /etc/sysconfig/network-scripts/ifcfg-ens33 如果不知道网关怎样配置就找到这 ...
- Java并发编程 | Synchronized原理与使用
Java提供了多种机制实现多线程之间有需要同步执行的场景需求.其中最基本的是Synchronized ,实现上使用对象监视器( Monitor ). Java中的每个对象都是与线程可以锁定或解锁的对象 ...
- linux读写一个NTFS分区
为了读写一个NTFS分区的数据,挂载的时候出现错误提示如下: root@tv:/home/xx# mount -t ntfs-3g /dev/sdb1 /media/sxx/硬盘B-临时文件 The ...
- Pyserial 学习
# 连接串口 ser = serial.Serial("COM12", 115200, timeout=0.5, bytesize=8, parity=serial.PARITY_ ...
- TypeScript(基础篇)day01
一.TS介绍 1.1 简介 ts是2012年由微软开发,在js的基础上添加了类型支持 1.2 优劣势 优势 :任何位置都有代码提示,增加效率:类型系统重构更容易:使用最新的ECMAscript语法 劣 ...
- 真正“搞”懂HTTP协议04之搞起来
前两篇文章,我们从空间和时间的角度都对HTTP有了一定的学习和理解,那么基于上一篇的HTTP发展的时间顺序,我会在后面的文章由浅入深,按照HTTP版本内容的更迭,一边介绍相关字段的使用方法,一边讲解其 ...
- 2022春每日一题:Day 14
题目:字符串归类 发现字符串长度总数不大,因此把每个字符串有的字母分离,存放到桶中,再枚举合并即可,时间复杂度O(len) 赛时代码: #include <cstdio> #include ...
- vulnhub靶场之DEATHNOTE: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:DEATHNOTE: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com ...