一、准备Mysql安装包
本文以Centos7为例,mysql安装包版本:mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar
mysql官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应系统版本下载即可。
mysql官网截图
下载完成之后进行解压,解压命令:
tar -zxvf mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar
解压命令
解压后目录:
解压后目录
mysql-community-client-5.7.10-1.el6.x86_64.rpm
mysql-community-common-5.7.10-1.el6.x86_64.rpm
mysql-community-devel-5.7.10-1.el6.x86_64.rpm
mysql-community-embedded-5.7.10-1.el6.x86_64.rpm
mysql-community-embedded-devel-5.7.10-1.el6.x86_64.rpm
mysql-community-libs-5.7.10-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.10-1.el6.x86_64.rpm
mysql-community-server-5.7.10-1.el6.x86_64.rpm
mysql-community-test-5.7.10-1.el6.x86_64.rpm
二、开始安装
1、查询是否有mariadb组件,已安装的mariadb组件会和mysql安装时产生冲突
查询命令:rpm -qa | grep mariadb
如果存在mariadb组件执行卸载命令:
卸载命令:rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
2、mysql组件安装有先后顺序的依赖关系,依次执行如下命令:
rpm -ivh mysql-community-common-5.7.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.11-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.11-1.el7.x86_64.rpm
注意:官方文档说安装mysql-community-client-5.7.11-1.el7.x86_64.rpm和mysql-community-server-5.7.11-1.el7.x86_64.rpm就可以获得标准功能的MySQL。但是由于RPM包的依赖关系,所以实际上我们还要多装2个RPM包:mysql-community-common-5.7.11-1.el7.x86_64.rpm和mysql-community-libs-5.7.11-1.el7.x86_64.rpm。
3、安装结束,执行查询命令确定组件已安装成功。
查询命令:rpm -qa | grep mysql
4、数据库初始化
官方文档介绍,在Unix和Unix系列系统中,有一点是很重要的,那就是确保数据库目录与文件的所有者为mysql登录账户,以便在你运行mysqld服务的时候,mysql服务可以对这些目录和文件进行读取与写入操作。如果你是以root身份运行mysqld服务,就需要确认一下,执行如下面显示的包含有--user选项的命令:
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysqld --initialize-insecure --user=mysql
另外,当你是以mysql的账户登录并执行程序的情况下,你可以将--user选项从命令中去掉。
所以我在前面提到过添加mysql用户和mysql用户组,当然这步操作可做可不做。通过官方文档我们可以知道,如果我是root身份登录Linux系统,可以执行:mysqld --initialize --user=mysql或者mysqld --initialize-insecure --user=mysql。如果我是以mysql用户登录Linux系统,可以执行:mysqld --initialize或者mysqld --initialize-insecure。
mysqld --initialize --user=mysql
mysqld --initialize-insecure --user=mysql
5.启动mysql服务
启动命令:service mysqld start
注意:mysql5.7在初始化时,会生成一个随机密码,用于root用户登录系统,修改参数。默认密码在
/var/log/mysqld.log目录中。
查看临时密码:
vi /var/log/mysqld.log
启动日志
三、修改配置支持主从同步
1、mysql5.6和mysql5.7主从同步比较
MySQL 5.6版本也支持所谓的并行复制,但是其并行只是基于schema的,也就是基于库的。如果用户的MySQL数据库实例中存在多个schema,对于从机复制的速度的确可以有比较大的帮助。
MySQL 5.7基于组提交的并行复制,MySQL 5.7才可称为真正的并行复制,这其中最为主要的原因就是slave服务器的回放与主机是一致的即master服务器上是怎么并行执行的slave上就怎样进行并行回放。不再有库的并行复制限制,对于二进制日志格式也无特殊的要求(基于库的并行复制也没有要求)。
2、查看my.cnf:vi /etc/my.cnf
主库配置文件如下:
主库配置文件
设置参数slave_parallel_workers>0并且global.slave_parallel_type=‘LOGICAL_CLOCK’,即可支持一个schema下,slave_parallel_workers个的worker线程并发执行relay log中主库提交的事务。其核心思想:一个组提交的事务都是可以并行回放(配合binary log group commit);
从库配置文件如下:
从库配置文件
主库和从库启动完成后:
主库添加同步账号:
create user 'repl'@'192.168.6.120' identified by 'repl';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.6.120'; -- --这里我指定数据库(test.*)时报错,而指定全库(*.*)时会成功。
show master status; #查询主库状态
主库状态
从库:
change master to master_host='192.168.6.124',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=533;
START SLAVE;
commit;
show slave status;$=#查询从库状态
从库状态
至此主从同步搭建完成。Mysql5.7版本和5.6版本在主从同步做了很大优化,有兴趣的可以去了解一下。