mysql主从和mysql主主和半同步复制

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
一、准备(主从都需要配置):
     yum  - y install mysql mysql - server        #安装mysql
   yum  - y install ntpdate            #安装时间同步
   echo  '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null'  >> / var / spool / cron / root    #配置网络时间同步
   service mysqld start           #启动服务
   chkconfig  - - add mysqld             #添加为系统服务
   chkconfig  mysqld on          #开启默认运行级别
     
     
 
二、主服务器配置:主配置文件默认为: / etc / my.cnf
     [mysqld]
   datadir = / var / lib / mysql
   socket = / var / lib / mysql / mysql.sock
   user = mysql
   symbolic - links = 0
   log - bin = master - bin           #开启二进制日志文件
   server - id = 1              #设置服务器id,保证全局唯一
   sync - binlog = 1             #全局唯一的server-id
   innodb - flush - logs - at - trx - commit = 1           
   innodb - support - xa = 1
         
 
   service mysqld restart     #重启动服务
 
   mysql> show  global  variables like  '%server%' ;       #数据库id
   mysql> show master logs;       #查看数据库二进制日志
   mysql> show master status;     #查看主服务器状态,记住二进制日志名,配置从服务器会用
   mysql> grant replication slave,replication client on  * . *  to   'copy' @ '192.168.0.50'  identified by  '123.com' ;
       #授权192.168.0.50主机上的copy用户对所有库有复制权限
   mysql> select Host,User,Password  from  mysql.user;     #查看用户
         
     
     
三、从服务器配置:
     [mysqld]
     datadir = / var / lib / mysql
     socket = / var / lib / mysql / mysql.sock
     user = mysql
     symbolic - links = 0
     relay - log = slave - log      #启用中继日志
     server - id = 10         #服务器id,全局唯一
     read - only = 1          #将服务器设置为只读模式(对拥有root权限的用户无效)
         
     service mysqld restart             #重启动服务
 
     mysql> change master to master_host = '192.168.0.10' ,master_user = 'copy' ,
            master_password = '123.com' ,master_log_file = 'master-bin.000001' ,master_log_pos = 590 ;
     master_host                 #主服务器地址
     master_user                 #拥有复制权限的用户
     master_password             #密码
     master_log_file             #从哪个二进制日志开始复制
     master_log_pos              #从二进制日志的什么位置开始复制
             
     mysql> start slave;         #开启从服务器
     mysql> show slave status\G;    #查看从服务器状态
     
     
四、验证主从:
     主服务器:
         mysql> create database db_test;    #创建数据库
         
     从服务器:
     mysql> show databases;          #查看服务器是否同步
 
     
 
     
五、主主复制
     服务器A:
         [mysqld]                 #添加内容
     log - bin = master - bin           #启用二进制日志
     relay - log = slave - log          #启用中继日志
     server - id = 1              #服务器id,全局唯一
     auto - increment - offset = 1          #自增列起始
     auto - increment - increment = 2       #自增列一次步进(例:1,3,5,7,9...)
         
     mysql> grant replication slave,replication client on  * . *  to   'copy' @ '192.168.0.50'  identified by  '123.com' ;
     mysql> change master to master_host = '192.168.0.50' ,master_user = 'copy' ,
           master_password = '123.com' ,master_log_file = 'master-bin.000001' ,master_log_pos = 106 ;
     
     mysql> start slave;   
     mysql> show slave status\G;  
                 
             
     服务器B:              
         [mysqld]                 #添加内容
         log - bin = master - bin
     relay - log = slave - log
     server - id = 10
     auto - increment - offset = 2          #自增列起始
     auto - increment - increment = 2       #自增列一次步进(例:2,4,6,8,10...)
 
         mysql> grant replication slave,replication client on  * . *  to   'copy' @ '192.168.0.10'  identified by  '123.com'
     mysql> change master to master_host = '192.168.0.10' ,master_user = 'copy' ,
         master_password = '123.com' ,master_log_file = 'master-bin.000003' ,master_log_pos = 106 ;
     
     mysql> start slave;   
     mysql> show slave status\G;  
     
     
     
     
六、半同步复制
     要想使用半同步复制,必须满足以下几个条件:
         1.  MySQL  5.5 及以上版本
     2.  变量have_dynamic_loading为YES
     3.  异步复制已经存在
         
     主:
     mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME  'semisync_master.so' ;      #安装插件
     mysql> show plugins;            #查看插件是否安装成功
     mysql>  SET  GLOBAL rpl_semi_sync_master_enabled  =  1 #启用半同步
     mysql> show status like  'Rpl_semi_sync_master_status' ;    #查看是否在运行
         
     从:
     mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave.so' ;        #安装插件
     mysql> show plugins;
     mysql>  SET  GLOBAL rpl_semi_sync_slave_enabled  =  1 ;       #启用半同步
     mysql> STOP SLAVE           #关闭复制线程
     mysql> START SLAVE             #开启复制线程
     mysql> show status like  'Rpl_semi_sync_slave_status' ;     #查看是否在运行
     
     
     mysql> show variables like  '%Rpl%' ;       #查看和半同步相关的服务器变量
         rpl_semi_sync_master_enabled         #是否启用半同步
         rpl_semi_sync_master_timeout         #等待超时时间
         rpl_semi_sync_master_wait_for_slave_count
             #需要等待多少个slave应答,才能返回给客户端
     
     
     mysql> show status like  '%Rpl_semi%' ;         #半同步状态
         Rpl_semi_sync_master_clients             #当前半同步复制从的个数
     
     
     
七、和复制相关的文件
     从节点:
         master.info:用于保存slave连接至master时的相关信息(账号,密码,服务器地址,复制的二进制文件等)
     relay - log.info:保存当前slave节点上已经复制到的二进制文件位置,和relay - log的位置 
 
     
 
    


本文转自  红尘世间  51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1936473
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
809 0
|
7月前
|
Ubuntu 关系型数据库 MySQL
使用Ubuntu和Windows电脑实现Mysql主从同步(详细操作步骤)
使用Ubuntu和Windows电脑实现Mysql主从同步(详细操作步骤)
109 2
|
7月前
|
Kubernetes Cloud Native 关系型数据库
提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧
【4月更文挑战第9天】提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧
427 0
|
7月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
1250 1
|
7月前
|
SQL 存储 关系型数据库
MySQL的主从复制&主从同步
MySQL的主从复制&主从同步
109 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL-主从架构的搭建
MySQL-主从架构的搭建
228 0
|
6月前
|
Prometheus 监控 关系型数据库
数据库同步革命:MySQL GTID模式下主从配置的全面解析
数据库同步革命:MySQL GTID模式下主从配置的全面解析
718 0
|
5月前
|
存储 关系型数据库 MySQL
利用 MySQL 克隆插件搭建主从
MySQL 的 Clone 插件是一个强大的功能,首次引入于 MySQL 8.0.17 版本。简单来说,Clone Plugin 是一款物理克隆数据工具,它能够帮助我们快速、高效地克隆或复制数据库,极大地简化了数据库迁移、备份和恢复的过程,让我们在处理大量数据时更加得心应手。本篇文章我们一起来学习下如何使用克隆插件。
92 2
|
5月前
|
运维 关系型数据库 MySQL
【实操记录】MySQL主从配置
本文使用MySQL原生支持的主从同步机制,详细记录了配置步骤及运维操作方法,可供大家直接参考、使用。 本文假设已经部署了两台主机的MySQL软件,且数据库服务正常,详细部署步骤可本站搜索:"mysql二进制安装包部署"
176 0
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL】主从异步复制配置
【MySQL】主从异步复制配置
97 1