目录
一、前言
二、安装前准备
1.安装包下载
2.检查环境
三、安装与配置
1.安装
2.主从配置
如今,mysql主从应用已经非常的广泛,毕竟数据是无价的,一主一从通过binlog日志进行数据的热备份,保证mysql数据的基础备份功能,还为高并发时做mysql数据库读写分离打下基础;
本文介绍了Mysql主从复制的完整安装过程,安装环境如下:
系统:centos7
mysql版本:5.7
内容:一主一从
下载地址:MySQL :: Download MySQL Community Server
a.通过浏览器选择下载mysql5.7RPM包,再上传到服务器
b.服务器上通过wget下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
a.检查系统是否安装有mariadb环境,存在则卸载
rpm -qa|grep mariadb
yum remove mariadb-libs
b.服务器时间检查
使用date查询时间是否准确,如果不准,centos7系统可以使用ntpdate同步时间或者重启chronyd服务(systemctl restart chronyd)
创建mysql工作目录,解压安装包
mkdir mysql
tar -xf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar -C mysql
进入mysql目录:cd mysql
按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server
rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.32-1.el7.x86_64.rpm
查看配置文件:cat /etc/my.cnf
默认存储目录:datadir=/var/lib/mysql
启动mysql:systemctl start mysqld
开机自启动:systemctl enable mysqld
登录数据库:mysql -uroot -p
初始密码查看:cat /var/log/mysqld.log|grep password
进入数据库修改root初始密码:alter user root@localhost identified by 'password';
a.主库
vim /etc/my.cnf
在[mysqld]下配置
log-bin = mysql-bin #[必须]启用二进制日志
server-id = 11 #[必须]服务器唯一ID,默认是1,最好取ip的后3位
expire-logs-days = 7 #只保留7天的二进制日志,以防磁盘被日志占满
注意如下两个参数,按需求配置:
binlog-ignore-db = mysql #不备份的数据库,默认的4个数据库可以添加上去,此环境不做配置
binlog-do-db=mybatis #标明需要做复制的数据库名,此环境不做配置,同步所有
重启数据库:systemctl restart mysqld
登录数据库查看log_bin是否成功开启:log_bin为ON则表示开启成功,OFF表示开启失败
show variables like '%log_bin%';
b.从库
vim /etc/my.cnf
在[mysqld]下配置
log-bin = mysql-bin #从库可不启用二进制日志
server-id = 12 #[必须]服务器唯一ID,默认是1,最好取ip的后3位
expire-logs-days = 7 #只保留7天的二进制日志,以防磁盘被日志占满
注:从库配置和主库区别,server-id必须填且不能相同,从库可以不开启log-bin配置,此处开启原因是方便主库宕机后的主从切换(主库宕机,从库变为主库,主库回复后,同步从库数据,变为从库),保证数据库的可用性
重启数据库:systemctl restart mysqld
c.同步操作
登录主库执行
主库中创建同步账号:
grant replication slave on *.* to 'backup'@'%' identified by 'Bak@1234';
replication即可满足同步需求,如果不行,可以给all权限
查询数据库账号:
select user,authentication_string,host from mysql.user;
查看主服务器上当前的二进制日志名和偏移量值:
show master status \G
登录从库执行
stop slave; 关闭slave
change master to master_host='192.168.142.11',master_user='backup',master_password='Bak@1234',master_log_file='mysql-bin.000001',master_log_pos=439;
start slave; 开启slave
各个参数含义:
master_host 主库主机的IP地址
master_port 主库的端口,默认为3306
master_user 实现复制的远程登录master的mysql的用户
master_password 实现复制的远程登录master的mysql的面
master_log_file 实现复制的binlog日志文件(主库的文件名)
master_log_pos 实现复制的binlog日志文件的偏移量(主库的偏移量)
注意:同步操作时,要保证从库的初始数据在主库的偏移量值,如果是给已在使用的数据库增加从库,可以参考使用xtrabackup备份恢复迁移mysql数据,解决mysql主从故障(不用锁表)_叼不起的烟斗的博客-CSDN博客_xtrabackup 备份迁移
d.检查同步配置是否成功
查看状态,出现两个"YES"则表明配置完成
show slave status \G
验证:主库上创建数据库或者新增数据,查看从库是否同步即可
e.未开启防火墙导致故障
开启端口即可
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
-----------日常记录---------------