mysql5.7 主从数据库的搭建

2021-12-06 10:15:57 浏览数 (1)

数据库在我们开发的过程中是必不可少的。如何实现数据的高可用用性呢,目前用的最多的方式就是主从复制,一个master,一个或多个slave, 当master产生数据读写的时候,会同步到slaves上,要注意的是,在这种模式下,在slave上产生的读写是无法同步到mster上的。好的,今天我们就来介绍一下,mysql5.7主从的搭建过程。本案例使用的系统版本是centos6, mysql版本是mysql-5.7-23.

首先我们准备两台机器:我的两台机器ip地址分别是: 192.168.1.11(master), 192.168.1.12(slave).

一. 安装

在两台机器上分别安装mysql5.7. 安装的方式很多,可以使用rpm,可以直接下载包安装。

1.1 rmp 安装

我用的是rmp,需要安装四个包,分别是:

mysql-community-common-5.7.24-1.el6.x86_64.rmp,mysql-community-lib-5.7.24-1.el6.x86_64.rmp,mysql-community-client-5.7.24-1.el6.x86_64.rmp,mysql-community-server-5.7.24-1.el6.x86_64.rmp, 使用rmp命令直接安装即可,安装的顺序就按照上述顺序进行。安装的时候有几个注意事项,首先是先卸载本机mysql(因为有的系统自带的mysql,版本比较低,安装的时候可能会冲突)

使用如下命令删除本机mysql:

代码语言:javascript复制
rpm  -qa |  grep -i mysql |  xargs rpm -e --nodeps
find / -name mysql | xargs rm -rf
find / -name my.conf | xargs  rm -  rf

使用如下命令安装:

代码语言:javascript复制
rpm -ivh mysql-community-common-5.7.24-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el6.x86_64.rpm

安装过程报错解决:

如果出现:

error: Failed dependencies:

libaio.so.1()(64bit) is needed by mysql-community-server-5.7.24-1.el6.x86_64

libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.24-1.el6.x86_64

libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.24-1.el6.x86_64

libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.24-1.el6.x86_64

libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.24-1.el6.x86_64

libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.24-1.el6.x86_64

说明环境缺少依赖:安装所需依赖:

代码语言:javascript复制
yum install libaio
yum  install    numactl

如果还报错,说明你电脑上还缺其他依赖,百度一下,安装对应包即可。

安装后启动mysql:

代码语言:javascript复制
service mysqld start

修改密码,首先获取临时密码:

代码语言:javascript复制
grep "password" /var/log/mysqld.log

复制临时密码,登录: mysql -uroot -p

输入密码即可。

修改密码: 先use mysql; 切换到mysql数据库

代码语言:javascript复制
alter user 'root'@'localhost' identified by '123456';

授权:

代码语言:javascript复制
grant all privileges on *.* to root@'%' identified by '123456';
#分配从库访问用户(在mysql客户端执行sql语句:)代表用户名: slave    密码: 123456
grant replication slave on *.* to slave@'%' identified by '123456'; 
flush privileges;

好了安装完毕

2. 直接下载安装: https://blog.csdn.net/weixin_38003389/article/details/90696337

二. 配置主从:

2.1 配置主:

在master的机器上: vim /etc/my.cnf . 填写如下内容:

代码语言:javascript复制
port=3306
binlog-ignore-db=mysql # 代表哪些库无需同步
server-id=1        # 很关键1 代表主 ,从库配置的时候必须和他不一样
expire-logs-days =7
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys

log-bin=master-bin
log-slave-updates=true

整体截图:

重启mysql: service mysqld restart;

登录mysql ,查看master状态: show master status;注意红框中内容,下面要用

2.2 配置从:

修改 /etc/my.cnf

代码语言:javascript复制
log-bin=mysql-bin
server-id=2
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys

log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

整体截图:

重启服务: service mysqld restart

登录从mysql, 执行sql语句: 这里要注意,不要直接复制,改成你自己的数据。 host是master的host, user是 你在master上给slave分配的用户名,密码是对应的密码,log_file 和log_pos 都从master上执行 show master status 的结果里取。见上面图中红框

代码语言:javascript复制
stop slave; 
change master to master_host='192.168.1.11',master_user='slave',master_password='123456',master_log_file='master-bin.000001', master_log_pos= 24918;
start slave; 

查看状态: show slave status G;

好了,主从搭建完毕。

测试,在master上创建一个表,看从库中是否已出现即可。

0 人点赞