Mysql实现企业级数据库主从复制架构实战 (4)

Mysql实现企业级数据库主从复制架构实战

Master-Master复制的两台服务器,既是master,又是另一台服务器的slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。

即:在两台服务器上既执行master的操作又执行slave的操作(注意:两台数据库都必须是可写的)

 

互为主从复制过程

互为主从:两个节点各自都要开启binlog和relay log;

1、数据不一致;

2、自动增长id;

 

什么是自增长ID?

对于某些唯一性的字段,可以通过设置自增长ID来实现,自增长ID的数据,代表这个表中存在一条唯一的记录;而自增长id是肯定不会重复的;

 

创建表,设置ID为自增长

create table userInfo (id int PRIMARY KEY AUTO_INCREMENT,name varchar(50) NOT NULL);

 

两边插入数据看数据增长

insert into userInfo(name) value('xiao'),('da'),('lao');

 

定义一个节点使用奇数id

auto_increment_increment=2 #表示自增长字段每次递增的量

auto_increment_offset=1 #表示自增长字段从那个数开始

另一个节点使用偶数id

auto_increment_increment=2

auto_increment_offset=2

 

配置:

1、server_id必须要使用不同值;

2、均启用binlog和relay log; read only = 0(因为互为主从,所以必须是可写的)

3、存在自动增长id的表,为了使得id不相冲突,需要定义其自动增长方式;

服务启动后执行如下两步:

4、都授权有复制权限的用户账号;

5、各把对方指定为主节点;

 

实验:数据库互为主从复制步骤 1.修改mysql配置文件

一台数据库服务器上

vim /etc/my.cnf

server-id = 1

log_bin = mysql_bin

relay_log = relay-log

skip-name-resolve = on

log_slave_updates = 1

auto_increment_increment=2

auto_increment_offset=1

另一台数据库服务器上

vim /etc/my.cnf

server-id = 2

relay_log = relay-log

log_bin = mysql-log

skip-name-resolve = on

log_slave_updates = 1

auto_increment_increment=2

auto_increment_offset=2

修改完配置文件后,重启数据库服务

systemctl restart mariadb

2.创建复制帐号

分别在两台数据库服务器上创建复制账号

mysql

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.10.%' IDENTIFIED BY 'magedu';

3.启动从服务器复制线程

让slave连接master,并开始重做master二进制日志中的事件。

mysql

CHANGE MASTER TO MASTER_HOST='192.168.10.190',

MASTER_USER='slave',

MASTER_PASSWORD='magedu',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=278;

执行start slave;# 启动复制线程。

另一台数据库服务器也是如此

4、查看从服务器状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show processlist \G查看前复制态:

mysql

SHOW SLAVE STATUS\G

Slave_IO_Running: Yes #IO线程正常运行

Slave_SQL_Running: Yes #SQL线程正常运行

两台数据库服务器都显示如上结果就ok。

5.创建表,设置ID为自增长,两边插入数据看数据增长

在一台数据库服务器上

mysql

create database dnf;

use dnf;

create table userinfo (id int PRIMARY KEY AUTO_INCREMENT,name varchar(20) NOT NULL);

insert into userinfo (name) values('ni'),('wo'),('ta');

然后查看表,因为是自增长id,从1开始,步长为2,所以添加的数据id为1,3,5

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjdj.html