本文主要介绍使用tar包的方式安装mysql5.7版本,并且配置至少一主一从的主备服务器。
1.下载mysql
下载网址: https://dev.mysql.com/downloads/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
2.5编译安装并初始化安装mysql
进入mysql的bin目录,执行下面的初始化命令:
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
此时,数据库会初始化并且给你一个初始密码,由于博主已经安装好了,所以下面的是网上的图:
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
显示如下结果,说明数据库安装并可以正常启动
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');
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
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;
从服务器就是要指定这个文件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
192.168.24.18的my.cnf
log-bin=relay-bin
server-id=3
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
Slave_IO_Running,Slave_SQL_Running,注意两个都要是yes才是正常。
3.3验证主从
登录主库和从库:
在主库增加一条记录,刷新从库,可以看见从库会同步更新: