对比这个方案,共享存储对于解决MySQL的高可用的数据同步,无疑要优异的多,对于随着对keepalived了解的渐渐入门,无意间发现了mysql数据同步的解决方案,十分的感兴趣,自然而然本方案的技术重点在于mysql的数据同步,废话不说了,开始做实验。
实验原理:两台VM 下的linux(CentOS5.5)服务器,采用keepalived软件作为高可用和负载均衡的处理软件。
主节点IP:192.168.1.196
备用节点IP:192.168.1.195
自行配置好yum源,采用本地镜像和外部的yum源都可以,以下的这个步骤是在两台服务器上安装相关的软件,当然根据系统不同,需要安装的软件不尽相同,这里是列出来我需要安装的软件,大家可以根据提示自行安装。
第一:先说在双节点都要做的相同的步骤
[root@localhost ~]# yum -y install ipvsadm kernel-devel openssl openssl-devel
[root@localhost ~]# ln -s /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux
[root@localhost ~]# wget
[root@localhost ~]# ls keepalived-1.2.1.tar.gz
keepalived-1.2.1.tar.gz
[root@localhost ~]# tar zxvf keepalived-1.2.1.tar.gz
[root@localhost ~]# cd keepalived-1.2.1
[root@localhost keepalived-1.2.1]# ./configure //结束后出现以下的内容表示可以编译安装了
Keepalived configuration
------------------------
Keepalived version : 1.2.1
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
Use Debug flags : No
[root@localhost keepalived-1.2.1]# make && make install
[root@localhost ~]# yum -y install mysql-server mysql
第二:mysql在主节点上的设置(MASTER)
首先是对mysql的设置(关键)
[root@localhost ~]# /etc/init.d/mysqld start
[root@localhost ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.77-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> grant replication slave,file on *.* to 'repl1'@'192.168.1.195' identified by '123456';
Query OK, 0 rows affected (0.02 sec)
mysql> \q
Bye
[root@localhost ~]# /etc/init.d/mysqld stop
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=mysql-bin
server-id=1
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
[root@localhost ~]# /etc/init.d/mysqld start
[root@localhost ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.77-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
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.000001
Position: 98
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
mysql> change master to master_host='192.168.1.195', master_user='repl2', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=98;
mysql> slave start;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> unlock tables;
Query OK, 0 rows affected (0.15 sec)
mysql> show slave status\G; //这个步骤关键是看到以下两项开启
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)