数据库在我们开发的过程中是必不可少的。如何实现数据的高可用用性呢,目前用的最多的方式就是主从复制,一个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上创建一个表,看从库中是否已出现即可。