Keepalived +Mysql 主主同步

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
一、配置Mysql主主同步
1,修改 /etc/my .cnf,创建同步用户
Master104
[root@104 ~] # vim /etc/my.cnf
[mysqld]
server- id  = 1                     #backup这台设置2
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema        #忽略写入binlog日志的库
auto-increment-increment = 2              #字段变化增量值
auto-increment-offset = 1               #初始字段ID为1
slave-skip-errors = all                        #忽略所有复制产生的错误
[root@104 ~] # service mysqld restart
#查看log bin日志和pos值位置
[root@104 ~] # mysql -uroot -p
mysql> grant replication slave on *.* to  'replication' @ '192.168.9.%'  identified by  'replication' ;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
 
 
Backup106
#106配置Mysql主主同步
[root@106 ~] # vim /etc/my.cnf 
[mysqld]
server- id  = 2                    
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema       
auto-increment-increment = 2             
auto-increment-offset = 1              
slave-skip-errors = all    
[root@106 ~] # service mysqld restart
#查看log bin日志和pos值位置
[root@106 ~] # mysql -uroot -p
mysql> grant replication slave on *.* to  'replication' @ '192.168.9.%'  identified by  'replication' ;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
 
2、配置Mysql主主同步
Master 104
[root@104 ~] # mysql -uroot -p
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000002 | 625 | | msyql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row  in  set  (0.00 sec)
 
mysql> change master to
  -> master_host= '192.168.9.106' ,
  -> master_user= 'replication' ,
  -> master_password= 'replication' ,
  -> master_log_file= 'mysql-bin.000002' ,
  -> master_log_pos=356;
Query OK, 0 rows affected (0.02 sec)
 
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show slave status\G
*************************** 1. row ***************************
  Slave_IO_State: Waiting  for  master to send event
  Master_Host: 192.168.9.106
  Master_User: replication
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysql-bin.000002
  Read_Master_Log_Pos: 356
  Relay_Log_File: 104-relay-bin.000002
  Relay_Log_Pos: 253
  Relay_Master_Log_File: mysql-bin.000002
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
 
Backup 106
[root@106 ~] # mysql -uroot -p
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000002 | 356 | | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row  in  set  (0.00 sec)
 
mysql> change master to
-> master_host= '192.168.9.104' ,
-> master_user= 'replication' ,
-> master_password= 'replication' ,
-> master_log_file= 'mysql-bin.000002' ,
-> master_log_pos=625;
Query OK, 0 rows affected (0.02 sec)
 
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show slave status\G
*************************** 1. row ***************************
  Slave_IO_State: Waiting  for  master to send event
  Master_Host: 192.168.9.104
  Master_User: replication
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysql-bin.000002
  Read_Master_Log_Pos: 625
  Relay_Log_File: 106-relay-bin.000002
  Relay_Log_Pos: 253
  Relay_Master_Log_File: mysql-bin.000002
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
 
#如果Slave_IO_Running和Slave_SQL_Running为Yes,则配置主主正常,可以创建测试下
 
二、配置keepalived实现双主热备
1, #下载安装keepalived
[root@104 ~] # cd /usr/local/src/
[root@104 src] # wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
[root@104 src] # yum -y install gcc gcc-c++ gcc-g77 ncurses-devel bison libaio-devel cmake libnl* libpopt* popt-static openssl-devel
[root@104 src] # tar xf keepalived-1.2.13.tar.gz 
[root@104 src] # cd keepalived-1.2.13
[root@104 keepalived-1.2.13] # ./configure --prefix=/usr/local/keepalived  --disable-fwmark 
[root@104 keepalived-1.2.13] # make
[root@104 keepalived-1.2.13] # make install
2, #配置keepalived配置成系统服务
[root@104 keepalived-1.2.13] # cd /usr/local/keepalived/
[root@104 keepalived] # cp etc/rc.d/init.d/keepalived /etc/init.d/
[root@104 keepalived] # cp etc/sysconfig/keepalived /etc/sysconfig/
[root@104 keepalived] # mkdir /etc/keepalived
[root@104 keepalived] # cp etc/keepalived/keepalived.conf /etc/keepalived/
[root@104 keepalived] # cp sbin/keepalived /usr/sbin/
[root@104 keepalived] # chkconfig keepalived on
[root@104 keepalived] # chkconfig --list keepalived 
keepalived 0:off 1:off 2:on 3:on 4:on 5:on 6:off
   3, #配置mysql热备
Mater 104
[root@104 keepalived] # vim /etc/keepalived/keepalived.conf
 
! Configuration File  for  keepalived
global_defs {
         router_id Mysql_HA     #标识,双主相同
}
 
vrrp_instance zabbix_mysql {
         state Backup                #俩台都设置Backup
         interface eth0
         virtual_router_id 53      #主备相同
         priority 100                  #优先级,backup设置90
         advert_int 1
         nopreempt                   #不主动抢占资源,只在master这台优先级高的设置,backup不设置
         authentication {
                 auth_type PASS
                 auth_pass sina 
         }
         virtual_ipaddress {
                 192.168.9.123
          }
    }
    virtual_server 192.168.9.123 3306 {
          delay_loop 6
          nat_mask 255.255.255.0
          persistence_timeout 50
          protocol TCP
          real_server 192.168.9.104 3306 {
                   weight 3
                   notify_down  "/etc/keepalived/mysql.sh"
                   TCP_CHECK {
                           connect_timeout 5
                           nb_get_retry 2
                           delay_before_retry 3
                   }
          }
  }
[root@104 keepalived] # vim /etc/keepalived/mysql.sh
#!/bin/bash
/etc/init .d /keepalived  stop
 
#启动keepalived
[root@104 keepalived] # /etc/init.d/keepalived start
[root@104 keepalived] # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
  link /loopback  00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1 /8  scope host lo
  inet6 ::1 /128  scope host 
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link /ether  00:0c:29:ff:a5:92 brd ff:ff:ff:ff:ff:ff
  inet 192.168.9.104 /24  brd 192.168.9.255 scope global eth0
  inet 192.168.9.123 /32  scope global eth0
  inet6 fe80::20c:29ff:feff:a592 /64  scope link 
  valid_lft forever preferred_lft forever
 
 
Backup106
[root@106 keepalived] # vim /etc/keepalived/keepalived.conf
 
! Configuration File  for  keepalived
global_defs {
         router_id Mysql_HA    
}
 
vrrp_instance zabbix_mysql {
         state Backup               
         interface eth0
         virtual_router_id 53     
         priority 90                 
         advert_int 1
         authentication {
                 auth_type PASS
                 auth_pass sina 
         }
         virtual_ipaddress {
                 192.168.9.123
          }
    }
    virtual_server 192.168.9.123 3306 {
          delay_loop 6
          nat_mask 255.255.255.0
          persistence_timeout 50
          protocol TCP
          real_server 192.168.9.106 3306 {
                   weight 3
                   notify_down  "/etc/keepalived/mysql.sh"
                   TCP_CHECK {
                           connect_timeout 5
                           nb_get_retry 2
                           delay_before_retry 3
                   }
          }
  }
[root@104 keepalived] # vim /etc/keepalived/mysql.sh
#!/bin/bash
/etc/init .d /keepalived  stop
[root@104 keepalived] # chmod +x /etc/keepalived/mysql.sh
#启动keepalived
[root@104 keepalived] # /etc/init.d/keepalived start
[root@104 keepalived] # ip addr
 
4,验证
104停止mysqld
[root@104 keepalived] # service mysqld stop
Shutting down MySQL.... SUCCESS! 
[root@104 keepalived] # ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
  link /loopback  00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1 /8  scope host lo
  inet6 ::1 /128  scope host 
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link /ether  00:0c:29:ff:a5:92 brd ff:ff:ff:ff:ff:ff
  inet 192.168.9.104 /24  brd 192.168.9.255 scope global eth0
  inet6 fe80::20c:29ff:feff:a592 /64  scope link 
  valid_lft forever preferred_lft forever
106
[root@106 keepalived] # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
  link /loopback  00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1 /8  scope host lo
  inet6 ::1 /128  scope host 
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link /ether  00:0c:29:c1:76:6b brd ff:ff:ff:ff:ff:ff
  inet 192.168.9.106 /24  brd 192.168.9.255 scope global eth0
  inet 192.168.9.123 /32  scope global eth0
  inet6 fe80::20c:29ff:fec1:766b /64  scope link 
  valid_lft forever preferred_lft forever









本文转自 wpf926 51CTO博客,原文链接:http://blog.51cto.com/wupengfei/1958148,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
955 0
|
21天前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
2月前
|
SQL 监控 关系型数据库
MySQL原理简介—12.MySQL主从同步
本文介绍了四种为MySQL搭建主从复制架构的方法:异步复制、半同步复制、GTID复制和并行复制。异步复制通过配置主库和从库实现简单的主从架构,但存在数据丢失风险;半同步复制确保日志复制到从库后再提交事务,提高了数据安全性;GTID复制简化了配置过程,增强了复制的可靠性和管理性;并行复制通过多线程技术降低主从同步延迟,保证数据一致性。此外,还讨论了如何使用工具监控主从延迟及应对策略,如强制读主库以确保即时读取最新数据。
MySQL原理简介—12.MySQL主从同步
|
4月前
|
监控 关系型数据库 MySQL
Flink CDC MySQL同步MySQL错误记录
在使用Flink CDC同步MySQL数据时,常见的错误包括连接错误、权限错误、表结构变化、数据类型不匹配、主键冲突和
260 17
|
7月前
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
670 11
|
6月前
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
63 1
|
8月前
|
关系型数据库 MySQL Linux
mysql 主从同步 实现增量备份
【8月更文挑战第28天】mysql 主从同步 实现增量备份
128 3
|
8月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
8月前
|
SQL 缓存 关系型数据库
MySQL主从同步如何操作?
随着业务增长,单台MySQL服务器难以应对高并发访问和潜在的故障风险。主从同步(Master-Slave)通过读写分离提升数据库处理能力,具备多项优势:读写分离减轻主数据库压力、支持一主多从增强扩展性与高可用性、以及数据备份确保容灾恢复。MySQL利用binlog实现主从数据同步,记录所有写操作,不包含查询。binlog有三种格式:Statement(基于SQL语句)、Row(基于行更改)、Mixed(结合前两者优点)。主从复制涉及三个关键线程:主库的binlog dump thread和从库的I/O thread与SQL thread。
310 0
MySQL主从同步如何操作?
|
8月前
|
存储 关系型数据库 MySQL
MySQL主从同步如何保证数据一致性?
MySQL主从同步如何保证数据一致性?
617 0
MySQL主从同步如何保证数据一致性?
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等