Keepalived +Mysql 主主同步

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:
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。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1979 0
|
6月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
716 6
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
监控 关系型数据库 MySQL
Flink CDC MySQL同步MySQL错误记录
在使用Flink CDC同步MySQL数据时,常见的错误包括连接错误、权限错误、表结构变化、数据类型不匹配、主键冲突和
580 17
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
1677 11
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
226 1
|
关系型数据库 MySQL Linux
mysql 主从同步 实现增量备份
【8月更文挑战第28天】mysql 主从同步 实现增量备份
295 3
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
SQL 存储 关系型数据库
实时计算 Flink版产品使用问题之同步MySQL多张表的过程中,内存释放依赖于什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
SQL 缓存 关系型数据库
MySQL主从同步如何操作?
随着业务增长,单台MySQL服务器难以应对高并发访问和潜在的故障风险。主从同步(Master-Slave)通过读写分离提升数据库处理能力,具备多项优势:读写分离减轻主数据库压力、支持一主多从增强扩展性与高可用性、以及数据备份确保容灾恢复。MySQL利用binlog实现主从数据同步,记录所有写操作,不包含查询。binlog有三种格式:Statement(基于SQL语句)、Row(基于行更改)、Mixed(结合前两者优点)。主从复制涉及三个关键线程:主库的binlog dump thread和从库的I/O thread与SQL thread。
675 0
MySQL主从同步如何操作?

推荐镜像

更多