MySQL主从同步结构模式种类_28_MySQL主从同步 、主从同步模式

版本:5.7.28

mysql51:192.168.4.51 主

mysql52:192.168.4.52 从

mysql50:192.168.4.50 客户机

1.MySQL一主一从

1.1 51,52 安装mysql,设置密码123456

51:

[mysqld]

log-bin=master51

server_id=51

binlog_format="mixed"

52:

[mysqld]

log-bin=mysql52

server_id=52

binlog_format="mixed"

1.2 主库授权

需要的权限为REPLICATION SLAVE,允许其从Slave服务器访问:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicater'@'192.168.4.%' IDENTIFIED BY '123qqq...A';

检查Master服务器的同步状态

在已经初始化现有库的情况下,查看MASTER状态,记录下当前的日志文件名、偏移的位置(下面SLAVE发起复制时需要用到):

mysql> SHOW MASTER STATUS\G

*************************** 1. row ***************************

File: master51.000001

Position: 453

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1.3 从库配置(52)

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.4.51',

-> MASTER_USER='replicater',

-> MASTER_PASSWORD='123qqq...A',

-> MASTER_LOG_FILE='master51.000001',

-> MASTER_LOG_POS=453;

mysql> START SLAVE;   //启动复制

mysql> SHOW SLAVE STATUS\G

...

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...

注意:一旦启用SLAVE复制,当需要修改MASTER信息时,应先执行STOP SLAVE停止复制,然后重新修改、启动复制。

主从配置好后,Master写的数据可以同步到Slave上,Slave的数据不能同步到Master上。

在Master服务器上可查看Slave主机的信息

mysql> SHOW SLAVE HOSTS;

+-----------+------+------+-----------+--------------------------------------+

| Server_id | Host | Port | Master_id | Slave_UUID                           |

+-----------+------+------+-----------+--------------------------------------+

|        52 |      | 3306 |        51 | 368bd89a-467d-11ea-8518-525400b28f0b |

+-----------+------+------+-----------+--------------------------------------+

2.配置主从从同步结构

配置主机192.168.4.51为主数据库服务器

配置主机192.168.4.52为51主机的从库服务器

配置主机192.168.4.53为52主机的从库服务器

客户端连接主数据库服务器51主机创建的数据,连接52和53主机时,也可以访问到库、表、记录。

2.1 配置主机192.168.4.53为52主机的从库服务器

2.1.1 在服务器192.168.4.52上对user53用户进行授权

mysql> grant replication slave on *.* to user53@"192.168.4.53" identified  by "123qqq...A";

]# vim /etc/my.cnf

...

log_slave_updates   //允许级联复制

mysql> SHOW MASTER STATUS\G

*************************** 1. row ***************************

File: mysql52.000002

Position: 154

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

2.1.2 配置从服务器192.168.4.53

验证登陆

]# mysql -h192.168.4.52 -uuser53 -p123qqq...A

正常登陆:

]# mysql -uroot -p123456

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.4.52',

-> MASTER_USER='user53',

-> MASTER_PASSWORD='123qqq...A',

-> MASTER_LOG_FILE='mysql52.000002',

-> MASTER_LOG_POS=154;

************************

修改密码验证:

[mysqld]

validate_password_policy=0

validate_password_length=6

************************

mysql> START SLAVE;

mysql> SHOW SLAVE STATUS\G

...

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...

如果出问题

mysql>STOP SLAVE;

mysql>RESET SLAVE;

mysql>START SLAVE;

或者

mysql> change master to

可以单独修改某一句

2.1.3 检测:

51写的数据会同步到52,53

52写的数据会同步到53

53写的数据只会再本地

3.配置半同步复制模式

开启案例1 主库192.168.4.51 半同步复制模式

开启案例1 从库192.168.4.52 半同步复制模式

开启案例1 从库192.168.4.53 半同步复制模式

查看半同步复制模式是否开启

3.1 查看是否允许动态加载模块

mysql> show variables like 'have_dynamic_loading';

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| have_dynamic_loading | YES   |

+----------------------+-------+

3.1 命令行加载插件,用户需有SUPER权限

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

从库上面操作:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

查看系统库下的表,模块是否安装成功:

mysql> SELECT PLUGIN_NAME,PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';

启用半同步复制,在安装完插件后,半同步复制默认是关闭的

主库上面执行:

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

从库上面执行:

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

查看半同步复制模式是否启用:

mysql> show variables like "rpl_semi_sync_%_enabled";

永久启用半同步复制

主库配置

]# vim /etc/my.cnf

[mysqld]

plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

从库配置

]# vim /etc/my.cnf

[mysqld]

plugin-load=rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_slave_enabled=1

在高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制

master51 ~]# vim /etc/my.cnf

[mysqld]

plugin-load \

="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

rpl-semi-sync-master-enabled = 1

rpl-semi-sync-slave-enabled = 1

查看:

mysql> show variables like "rpl_semi_sync_%_enabled";

+------------------------------+-------+

| Variable_name                | Value |

+------------------------------+-------+

| rpl_semi_sync_master_enabled | ON    |

| rpl_semi_sync_slave_enabled  | ON    |

+------------------------------+-------+


版权声明:本文为weixin_42522320原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。