所谓双主备份,其实也就是互做主从复制,每台master既是master,又是另一台服务器的slave。

目录

一、环境准备

二、数据库安装:

三、修改默认存储路径(AB库)

四、MasterA配置

五、MasterB配置

六、MasterA操作

七、MasterB操作

八、开启同步(AB库)

九、验证


一、环境准备

        操作系统:CentOS 7. 6

        数据库:MySQL 8.0.30

masterA

192.168.0.62

masterB

192.168.0.123

二、数据库安装:

        略

        安装完成后登录数据库,修改root的密码认证方式,主要是为了保证低版本的navicat可以连接数据库。

select user,host,plugin from mysql.user;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

flush privileges;

三、修改默认存储路径(AB库)

        mysql安装完成后,默认存储路径会放在/var/lib/mysql下,但是通常情况下,根目录分配的磁盘空间有限,需要将存储路径修改至数据盘。

        例如数据盘挂载在“/data”下:

service mysqld stop #停止mysql服务

cd /var/lib cp -a mysql /data/

vi /etc/my.cnf

        修改datadir,将datadir=/var/lib/mysqld改为atadir=/data/mysql

mysql8配置 windows mysql8配置主从_数据库

service mysqld start         #启动mysql服务

四、MasterA配置

        vi /etc/my.cnf

        增加以下配置

server-id=1                      #服务器的标识,要求每个节点id不一致
log-bin=mysql-bin1               #日志文件名称,每个节点名称不一致
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2        #需要将两台服务器的auto_increment_increment增长量都配置为2
auto_increment_offset=1           #把auto_increment_offset分别配置为1和2,这样可以避免两台服务器同时做更新时,自增长字段的值之间发生冲突。
max_connections = 3000
max_allowed_packet = 64M
default_authentication_plugin = mysql_native_password    #MySQL8.0.4开始,默认身份认证开始改变。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。

        mysql -u root -p #登录数据库

create user 'repl'@'%' identified by 'password';  #创建用户
grant replication slave on *.*  to 'repl'@'%';    #授权用户
flush privileges;
flush tables with read lock;   #锁定数据库表暂时无法写服务
show master status;           #查看binlog文件值与pos值,记住文件名和pos值

mysql8配置 windows mysql8配置主从_数据库_02

五、MasterB配置

        vi /etc/my.cnf

        增加以下配置

server-id=2                      #服务器的标识,要求每个节点id不一致
log-bin=mysql-bin2               #日志文件名称,每个节点名称不一致
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2        #需要将两台服务器的auto_increment_increment增长量都配置为2
auto_increment_offset=2           #把auto_increment_offset分别配置为1和2,这样可以避免两台服务器同时做更新时,自增长字段的值之间发生冲突。
max_connections = 3000
max_allowed_packet = 64M
default_authentication_plugin = mysql_native_password    #MySQL8.0.4开始,默认身份认证开始改变。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。

        mysql -u root -p #登录数据库

create user 'repl'@'%' identified by 'password';  #创建用户
grant replication slave on *.*  to 'repl'@'%';    #授权用户
flush privileges; 
flush tables with read lock;   #锁定数据库表暂时无法写服务
show master status;           #查看binlog文件值与pos值,记住文件名和pos值

mysql8配置 windows mysql8配置主从_mysql_03

六、MasterA操作

        mysql -u root -p #登录数据库

change master to master_host='192.168.0.123', master_user='repl', master_password='password',master_port=3306, master_log_file='mysql-bin2.000001', master_log_pos=536;        #host配置为MasterB的IP,这里注意log_file与master_log_pos值都要对应对应B的show master status;值

七、MasterB操作

        mysql -u root -p #登录数据库

change master to master_host='192.168.0.62', master_user='repl', master_password='password',master_port=3306, master_log_file='mysql-bin1.000001', master_log_pos=546;        #master_host配置为MasterA的IP,这里注意log_file与master_log_pos值都要对应对应A的show master status;值

八、开启同步(AB库)

mysql -u root -p        #登录数据库
unlock tables;          #解锁写
start slave;            #开启同步
show slave status\G     #查看数据库是否正常同步

mysql8配置 windows mysql8配置主从_数据库_04

mysql8配置 windows mysql8配置主从_数据库_05

九、验证

        可以使用navicat连接数据库,进行建库、建表、增删改等操作,验证数据是否同步。