一 下载

可以选择 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包

二 安装单机版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.

最新文章

  1. 微软开源全新的文档生成工具DocFX
  2. arcmap插件不能调试(转)
  3. 面向服务的体系结构(SOA)——(4)对于服务的理解
  4. python爬取糗百第一页的笑话
  5. 计算机IT求职学习List
  6. c++中从一段字符串中提取数字
  7. 自定义EditText实现一键删除数据
  8. 2016022604 - redis命令介绍
  9. HTTP协议的特点
  10. 【POJ3461】【KMP】Oulipo
  11. Spark Streaming 数据接收过程
  12. mysql安装常见问题(系统找不到指定的文件、发生系统错误 1067 进程意外终止)
  13. iOS 8中CLLocationManager及MKMapView showUserLocation失败的解决的方法
  14. JS 拖动DIV 需要JQUERY 支持
  15. Python学到什么程度就可以去找工作?掌握这4点足够了!
  16. 第二篇:服务消费者(RestTemplate+ribbon)
  17. Zabbix3.0版Graphtree的安装配置
  18. 20135220谈愈敏Blog1_计算机是如何工作的
  19. MySQL-视图View
  20. Maven项目常见错误解决方法汇总

热门文章

  1. 支持 Java 8/11/17/19 的框架,Solon v1.10.5 版本发布
  2. sql面试50题------(11-20)
  3. 齐博x1 直播神器聊天小插件
  4. 齐博x1如何取消禁止跨城市密码登录限制
  5. 浅谈API和SDK的区别
  6. 5 why 分析法,一种用于归纳抽象出解决方案的好方法
  7. ubuntu 输入法IBUS 输入不成功问题
  8. Vue2学习笔记
  9. Go语言核心36讲08
  10. i春秋Test