Centos7部署MySQL主从复制

一、准备

1、准备两台服务器,如果本地测试,准备两台虚拟机。

2、两台服务器上安装相同的mysql数据库。

3、我这里准备两台虚拟机演示:

     192.168.21.102   主机

     192.168.21.105   从机

4、在两台mysql数据库分别创建相同数据库

create database IdentityServer4Admin;

注意:如果在本地虚拟机上进行操作,一般部署好一台虚拟机后,采用克隆操作(virtualbox上是采用复制的方式)。克隆完成之后,需要修改任意一台虚拟机上mysql数据库uuid,详见看下面错误2介绍。

二、配置主数据库master

1、修改配置文件

# 修改mysql配置文件
vi /etc/my.cnf
#在[mysqld]下方添加如下配置信息
log-bin=node1-bin   #二进制文件名称
binlog-format=ROW   #二进制日志格式,有row、statement、mixed三种格式。
                    #row是指把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
                    #statement是指在主服务器上执行的SQL语句,在从服务器上执行相同的语句。
                    #mixed是指默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会 
                    #采用基于行的复制。
                    #Mysql默认采用基于语句的复制,效率比较高。
server-id=1         #各个服务器的id保持唯一
binlog-do-db=IdentityServer4Admin      #同步的数据库名

配置完成后,重启数据库,查看配置信息。

Centos7部署MySQL主从复制_第1张图片

2、授权账号

create user 'repl'@'%' identified by 'Ab123456';     --创建从服务器连接账号

grant replication slave on *.* to 'repl'@'%';             --授权账号权限

flush privileges;                                                       --刷新权限

三、配置从数据库slave

1、配置文件

#修改从服务器配置文件
vi /etc/my.cnf
#在[mysqld]下方添加如下配置信息
log-bin=node1-bin                  #二进制文件名称
binlog-format=ROW                  #二进制文件格式
server-id=2                        #服务器id

2、与主数据库互联

#重启数据库服务
systemctl restart mysqld
#登录mysql
mysql -uroot -p
#连接主数据库
change master to master_host='192.168.21.102',master_user='repl',master_password='Ab123456',master_port=3306,master_log_file='node1-bin.000005',master_log_pos=157,get_master_public_key=1;
#启动slave
start slave;
#查看slave的状态
show slave status \G(没有分号,分号执行会不成功!)

四、问题汇总

1、错误2:ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error:Authentication requires secure connection. 

mysql8使用的密码机制是caching_sha2_password,而不是之前的mysql_native_password。主从数据库密匙不同步造成。

解决方案:

使用用户请求服务器公钥:

从数据库请求主数据库,发送互联请求时添加参数。get_master_public_key=1。

2、错误1:Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

原因:主机和从机的UUID一致了,要求不一样。克隆两个一样的虚拟机造成。

查看UUID,show variables like '%server_uuid%';命令查看uuid值

find -name auto.cnf命令查看auto.cnf文件的位置。位置为/var/lib/mysql/auto.cnf。编辑修改。重启mysql,systemctl restart mysqld。

Centos7部署MySQL主从复制_第2张图片

3、出错后处理

#停止主从复制
stop slave;

#清空之前的主从复制配置信息
reset slave;

#从新配置主从复制
change master to master_user='repl',master_password='Ab123456',master_host='192.168.21.102',master_port=3306,master_auto_position=157,get_master_public_key=1;

start slave;


 

你可能感兴趣的:(mysql,mysql,数据库,服务器)