经过实测效果还不错,特地写了下文档。
所需软件mysql、keepalived
mysql version: Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.
keepalived version: v1.1.20 (07/12,2010)
mysql vip:192.168.127.217
mysql A ip:192.168.127.218 hosts:里面192.168.127.214 rrstwo
mysql B ip:192.168.127.214 hosts:里面192.168.127.218 rrsone
需要同步的是joycdn数据库
A:
mysql> grant replication slave,file on *.* to 'blackhat1'@'192.168.127.214' identified
by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
B:
mysql> grant replication slave,file on *.* to 'blackhat2'@'192.168.127.218' identified
by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
然后都停止MYSQL 服务器。
配置文件。
在两个机器上的my.cnf里面都开启二进制日志 。
A:
user = mysql
log-bin=mysql-bin
server-id = 1
server-id = 2
master-host = rrstwo
master-user = blackhat2
master-password = 123456
master-port = 3306
binlog-do-db=joycdn
binlog-ignore-db=mysql
replicate-do-db=joycdn
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
B:
user = mysql
log-bin=mysql-bin
server-id = 2
server-id = 2
master-host = rrsone
master-user = blackhat1
master-password = 123456
master-port = 3306
binlog-do-db=joycdn
binlog-ignore-db=mysql
replicate-do-db=joycdn
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
至于这些参数的说明具体看手册。
注意 sync_binlog=1 为实时刷新到本地磁盘上,这样是为了安全起见,当然性能也会下降,如果不设置日志是存在内存中的,如果是10或者是N,也就说执行10条或者N条操作后就同步到磁盘上。
在A上面的两条
auto_increment_increment=2
auto_increment_offset=1
在Aserver上面这两条加上的效果是这样的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
auto_increment_increment=2
auto_increment_offset=2
在Bserver上面这两条加上的效果是这样的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了
然后启动两台数据库
mysqld_safe --user=user & or service mysqld start
登录数据库创建一个表
CREATE TABLE `blackhat` (
`id` int(10) NOT NULL auto_increment,
`tell` varchar(19) NOT NULL,
PRIMARY KEY (`id`));
我们可以测试一下首先在A server上连续插三条数据:
mysql> insert into blackhat (tell) values ('one');
Query OK, 1 row affected (0.10 sec)
mysql> insert into blackhat (tell) values ('two');
Query OK, 1 row affected (0.05 sec)
mysql> insert into blackhat (tell) values ('three');
Query OK, 1 row affected (0.02 sec)
mysql> select * from blackhat;
+----+-------+
| id | tell |
+----+-------+
| 1 | one |
| 3 | two |
| 5 | three |
然后在到B server上连续插三条数据
mysql> insert into blackhat (tell) values ('four');
Query OK, 1 row affected (0.08 sec)
mysql> insert into blackhat (tell) values ('five');
Query OK, 1 row affected (0.00 sec)
mysql> insert into blackhat (tell) values ('six');
Query OK, 1 row affected (0.04 sec)
mysql> select * from blackhat;
+----+-------+
| id | tell |
+----+-------+
| 1 | one |
| 3 | two |
| 5 | three |
| 6 | four |
| 8 | five |
| 10 | six |
+----+-------+
6 rows in set (0.00 sec)
从上面就可以理解这里的含义了。
接下来开始同步数据库数据了,首先看一下两台服务器的master 信息
A:
mysql> flush tables with read lock\G
Query OK, 0 rows affected (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000007
Position: 528
Binlog_Do_DB: joycdn
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
B:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000004
Position: 595
Binlog_Do_DB: joycdn
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
然后备份自己的数据,保持两个机器的数据一致。
方法很多。完了后看下一步。
其实在数据库里面修改了user等信息可以不在这里继续修改了。不过position和binlog等文件确是需要改的。
在各自机器上执行CHANGE MASTER TO命令。
A:
mysql> change master to
-> master_host='rrstwo',
-> master_user='blackhat2,
-> master_password='123456',
-> master_log_file='mysql-bin.000004',
-> master_log_pos=595;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
B:
mysql> change master to
-> master_host='rrsone',
-> master_user='blackhat1',
-> master_password='123456',
-> master_log_file='mysql-bin.000007',
-> master_log_pos=528;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
查看各自机器上的IO进程和 SLAVE进程是否都开启。
A:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: rrstwo
Master_User: blackhat2
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 4281328
Relay_Log_File: mysqld-relay-bin.000010
Relay_Log_Pos: 2559
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: joycdn
Replicate_Ignore_DB: mysql
B:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: rrsone
Master_User:blackhat1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000012
Read_Master_Log_Pos: 4515490
Relay_Log_File: mysqld-relay-bin.000009
Relay_Log_Pos: 4454857
Relay_Master_Log_File: mysql-bin.000012
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: joycdn
Replicate_Ignore_DB: mysql
只要 Slave_IO_Running: Yes 都是yes就是正常。
这个时候你可以在两台服务器上进行建表测试。
此时数据库的主主同步已经实现,开始对高可用进行部署。
首先安装
yum install ipvsadm -y
继续安装keepalived
./configure --prefix=/usr/local/keepalived
make && make install
开始配置
安装keepalived 需要依赖kernel-devel 开发包 在安装之前建议先安装 yum install kerlnel-devel -y 来进行安装。
分享到:
相关推荐
本篇文章详细记录了Centos下Mysql+Keepalived双主热备高可用环境完整部署过程,可作为线上长期的实操手册。在此分享,希望能帮助到有用到的朋友。
LVS+Keepalived+MySQL半同步主主复制高可用方案
mysql5.7 双主互备、高可用、读写分离 + keepalived 实战演练
随着mysql在市场上的占有率不断提高,mysql数据库的安全也不容忽视。本文描述了keepalived与mysql配合是实现高可用,实现故障转移,负载均衡等。
mysql 双主单活+keepalived 实现高可用指导文档,按步骤操作,接完成数据库高可用的自动切换部署
本篇文章详细记录了Mysql双主热备+LVS+Keepalived高可用操作过程,可作为线上长期的实操手册.特此分享,希望能帮助到有用到的朋友.
MySQL和keepalived架构实现mysql的高可用,本文档详细的介绍了部署配置的过程,请参考
mysql+mycat+keepalived+haproxy集群(生产环境实测),搭建mysql高可用集群
本篇文档为Mysql双主热备+LVS+Keepalived高可用操作记录,可作为线上实操手册,有需要的朋友可以拿走,希望能帮助到有用到的人~
同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。
本实验实现mysql主从+keepalived实现高可用以及mysql双主双从+keepalived实现高可用
如果你是在构建mysql+keepalived的主从,但是又想实现高可用自动切换,照着这篇文档做,你一定可以实现
mysql主从同步+MyCat读写分离+分库分表+Haproxy高可用+Keepalived心跳机制+虚拟IP.rar
(带目录版)MySQL LVS+Keepalived+MHA 高可用群集 应用部署操作手册
MySQL+keepalived双主热备安装详细教程,包括keepalive的配置脚本实例
本文档将详细介绍如何实现 MySQL 数据在线热迁移、MySQL 双主高可用集群环境,并使用 Keepalived 实现高可用性。 MySQL 数据在线热迁移 在 MySQL 集群环境中,数据热迁移是指在不停机的情况下将 MySQL 数据从一个...
对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟...
Mysql5.6.27双主复制+Keepalived实现高可用服务,图文并茂。
第三十九章:DRBD+Keepalived+Mysql+Amoeba双主双从高可用集群1