本文主要介绍使用tar包的方式安装mysql5.7版本,并且配置至少一主一从的主备服务器。

1.下载mysql

下载网址: https://dev.mysql.com/downloads/mysql/

本地MYSQL的服务器 mysql的服务器地址_mysql

 博主选择的是5.7.27社区版的64位mysql,各位可以按照自己的需求自行下载。

2.安装mysql

最好的安装位置是/usr/local,因为mysql有很多配置的默认的这个位置,放在这里会避免很多不必要的麻烦,当然你也可以安装在你需要的位置。我的本地环境是安装在此位置下,生产环境并不是。

如果/usr/local/下已经存在mysql,请将已存在mysql文件修改为其他名称,否则后续步骤可能无法正确进行。

2.1上传mysql

此处不做介绍,按照不同的远程连接工具自行操作

2.2解压

tar -xzvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz

 解压完成之后将文件夹重命名为mysql,最后将这个包移动到/usr/local路径下:

mv mysql-5.7.27-linux-glibc2.12-x86_64/ mysql/
mv mysql/ usr/local/

最后就是这个样子:

2.3创建存放mysql数据的目录

进入mysql目录,创建data文件夹

cd mysql/
mkdir data

2.4赋予mysql和data目录权限

本地MYSQL的服务器 mysql的服务器地址_服务器_02

本地MYSQL的服务器 mysql的服务器地址_本地MYSQL的服务器_03

注意:用户和组必须是mysql

2.5编译安装并初始化安装mysql

进入mysql的bin目录,执行下面的初始化命令:

./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

此时,数据库会初始化并且给你一个初始密码,由于博主已经安装好了,所以下面的是网上的图:

本地MYSQL的服务器 mysql的服务器地址_服务器_04

2.6编辑my.cnf文件

mysql的配置文件就是my.cnf,文件路径在/etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1

将原来的my.cnf里面的注释了,添加新的。

2.7测试启动mysql服务

/usr/local/mysql/support-files/mysql.server start

显示如下结果,说明数据库安装并可以正常启动 

本地MYSQL的服务器 mysql的服务器地址_服务器_05

2.8添加软连接,并重启mysql服务

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart

 

2.9登录mysql,修改密码

mysql -u root -p
Enter password:
mysql>set password for root@localhost = password('yourpass');

本地MYSQL的服务器 mysql的服务器地址_本地MYSQL的服务器_06

2.10开放远程连接

mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;

 

2.11设置开机自动启动

1、将服务文件拷贝到init.d下,并重命名为mysql
[root@localhost /]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
[root@localhost /]# chmod +x /etc/init.d/mysqld
3、添加服务
[root@localhost /]# chkconfig --add mysqld
4、显示服务列表
[root@localhost /]# chkconfig --list

3.配置主备服务器

主备服务器至少需要两台,一主一备,主从复制:两台或者更多的数据库实例,通过二进制日志,实现数据同步。主从复制的作用是为了预防灾难。

准备三个mysql,一个做主,两个做从。防火墙,selinux都要关闭,保证可以ping通对方。192.168.24.16为主服务器,192.168.24.17,192.168.24.18为从服务器

3.1主服务器配置:

3.11修改mysql的配置文件:

vi /etc/my.cnf

在文件里面添加:

log-bin=master-bin
server-id=1

本地MYSQL的服务器 mysql的服务器地址_配置文件_07

3.12在主服务器登录mysql 给从服务器授权

GRANT REPLICATION SLAVE ON *.* TO '用户名'@'slave数据库的IP地址' IDENTIFIED BY '密码';

主库创建同步用户,登录mysql后,输入命令:

GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’192.168.24.16’ IDENTIFIED BY ‘repl’;

flush privileges;

SHOW MASTER STATUS;

本地MYSQL的服务器 mysql的服务器地址_服务器_08

从服务器就是要指定这个文件maste-bin.000002 (随着mysql增删修改日志文件名字也有可能改变)  和 154 (position点 主服务器增删修改都会改变)所以现在开始就不要再在主服务器创表干啥的了,

3.2从服务器配置:

3.2.1修改mysql的配置文件:

192.168.24.17的my.cnf

log-bin=relay-bin
server-id=2

本地MYSQL的服务器 mysql的服务器地址_配置文件_09

192.168.24.18的my.cnf

log-bin=relay-bin
server-id=3

本地MYSQL的服务器 mysql的服务器地址_配置文件_10

3.2.2修改从库的mysql配置

使用mysql -uroot -p进入从库的mysql客户端,开启sql线程:

CHANGE MASTER TO 
MASTER_HOST='192.168.24.16',            #这是主库的IP(域名也可以需要做解析)
MASTER_PORT=3306,                       #主库的端口,从库端口和主库不可以相同
MASTER_USER='repl',                     #这是主库上创建用来复制的用户rep
MASTER_PASSWORD='repl',                 #rep的密码
MASTER_LOG_FILE='mysql-bin.000002',     #这里是show masterstatus时看到的查询二进制日志文件名称,这里不能多空格
MASTER_LOG_POS=154;                     #这里是show master status时看到的二进制日志偏移量,不能多空格

3.2.3从库中启动专用主从线程

start slave ;      -- 启动主从
stop slave;     -- 关闭主从

查看状态:

show slave status\G

本地MYSQL的服务器 mysql的服务器地址_本地MYSQL的服务器_11

Slave_IO_Running,Slave_SQL_Running,注意两个都要是yes才是正常。

3.3验证主从

登录主库和从库:

本地MYSQL的服务器 mysql的服务器地址_服务器_12

本地MYSQL的服务器 mysql的服务器地址_本地MYSQL的服务器_13

在主库增加一条记录,刷新从库,可以看见从库会同步更新:

本地MYSQL的服务器 mysql的服务器地址_服务器_14

本地MYSQL的服务器 mysql的服务器地址_配置文件_15