cobar mysql 高可用

---------------------------------------------

server2 IP:172.25.38.2

server5 IP:172.25.38.5

---------------------------------------------

1)安装mysql  [server2]、[server5]

yum install -y mysql-server

rpm -qa|grep mysql##安装好,可见已安装的包

mysql-libs-5.1.71-1.el6.x86_64

mysql-5.1.71-1.el6.x86_64

mysql-server-5.1.71-1.el6.x86_64

[server2] ##编辑mysql配置文件

vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

server-id=2

binlog-do-db=dbtest

binlog-ignore-db=mysql

log-bin=mysql-bin

master-host=172.25.38.5

master-user=ly

master-password=westos

master-port=3306

replicate-ignore-db=mysql

replicate-do-db=dbtest

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

当配置server2为主时,server5为从时,把以#开头的,把#去掉

[server5]

vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

server-id=5

log-bin=mysql-bin

binlog-do-db=dbtest

binlog-ignore-db=mysql

#master-host=172.25.38.2

#master-user=ly

#master-password=westos

#master-port=3306

#replicate-ignore-db=mysql

#replicate-do-db=dbtest

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

log-error=/var/log/mysqld.log

/etc/init.d/mysqld start##开启数据库

mysqladmin -u root password westos##设置密码

[[email protected] ~]# mysql -p##进入数据库设置

Enter password:

mysql> create user [email protected]‘172.25.38.5‘ identified by ‘westos‘;##创建用户并设置密码

mysql> grant all on *.* to [email protected]‘172.25.38.5‘;##授予权限

mysql> flush privleges;##刷新

mysql> show master status;##主节点状态

+------------------+----------+--------------+------------------+

| File        |Position |Binlog_Do_DB | Binlog_Ignore_DB|

+------------------+----------+--------------+------------------+

| mysql-bin.000004|   254  | dbtest    |  mysql       |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

[[email protected]  ~]# mysql -p

Enter password:

mysql> change master to master_host=‘172.25.38.2‘,master_user=‘ly‘,master_password=‘westos‘;

mysql> start slave;##开启从节点

mysql> show slave status\G;##查看从的状态

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 172.25.38.5

Master_User: ly

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 254

Relay_Log_File: mysqld-relay-bin.000005

Relay_Log_Pos: 399

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: dbtest

Replicate_Ignore_DB: mysql

##做同样类似操作,最后做出双向主从同步

[[email protected]  ~]# mysql -p

Enter password:

mysql> create user [email protected]‘172.25.38.2‘ identified by ‘westos‘;

mysql> grant all on *.* to [email protected]‘172.25.38.2‘;

mysql> flush privileges;

mysql> show master status;

+------------------+----------+--------------+------------------+

| File        | Position| Binlog_Do_DB| Binlog_Ignore_DB|

+------------------+----------+--------------+------------------+

| mysql-bin.000012|   106  | dbtest    | mysql       |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

[[email protected]  ~]# mysql -p

Enter password:

mysql> change master to master_host=‘172.25.38.2‘,master_user=‘ly‘,master_password=‘westos‘;

mysql> start slave;

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 172.25.38.5

Master_User: ly

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.0000012

Read_Master_Log_Pos: 254

Relay_Log_File: mysqld-relay-bin.0000013

Relay_Log_Pos: 106

Relay_Master_Log_File: mysql-bin.0000012

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: dbtest

Replicate_Ignore_DB: mysql

---------------------------------------------

2)安装heartbeat [server2]、[server5]

得到如下安装包

heartbeat-3.0.4-2.el6.x86_64.rpm

heartbeat-devel-3.0.4-2.el6.x86_64.rpm

heartbeat-libs-3.0.4-2.el6.x86_64.rpm

ldirectord-3.9.5-3.1.x86_64.rpm

yum install openssl perl-Net-SSLeay perl-TimeDate perl-libwww-perl perl-Compress-Zlib perl-HTML-Parser perl-HTML-Tagset ipvsadm -y##解决依赖性

rpm -ivh heartbeat-libs-3.0.4-2.el6.x86_64.rpm ldirectord-3.9.5-3.1.x86_64.rpm heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpm

vim /etc/ha.d/ha.cf##编辑配置

34 logfacility     local0

48 keepalive 2

56 deadtime 30

61 warntime 10

71 initdead 60

76 udpport 694##端口

91 bcast   eth0            # Linux

157 auto_failback on

211 node    server5.example.com

212 node    server2.example.com

222 ping 172.25.38.250##一个同一网段可ping的IP,最好是网关

255 respawn hacluster /usr/lib64/heartbeat/ipfail

261 apiauth ipfail gid=haclient uid=hacluster

vim /etc/ha.d/haresources##资源配置

server5.example.com IPaddr::172.25.38.100/24/eth0 drbddisk::example Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld

vim /etc/ha.d/authkeys

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello!

两台配置一样,直接scp过去就好。

---------------------------------------------

3)配置drbd

在两台主机上添加硬盘,最好一样大小,方便操作

////////////////////

得到如下包

drbd-8.4.2.tar.gz

或者8个如下安装包

drbd-8.4.2-2.el6.x86_64.rpm

drbd-xen-8.4.2-2.el6.x86_64.rpm

drbd-udev-8.4.2-2.el6.x86_64.rpm

drbd-utils-8.4.2-2.el6.x86_64.rpm

drbd-pacemaker-8.4.2-2.el6.x86_64.rpm

drbd-heartbeat-8.4.2-2.el6.x86_64.rpm

drbd-bash-completion-8.4.2-2.el6.x86_64.rpm

drbd-km-2.6.32_431.el6.x86_64-8.4.2-2.el6.x86_64.rpm

以tar包方式进行安装如下:

rpm -ivh drbd-*

yum install gcc flex rpm-build kernel-devel -y

cp /root/drbd-8.4.0.tar.gz /root/rpmbuild/SOURCES/

tar zxf drbd-8.4.0.tar.gz

cd drbd-8.4.0

./configure --enable-spec

./configure --enable-spec --with-km

在当前目录下得到两个文件

drbd.spec drbd-km.spec

rpmbuild -bb drbd.spec

rpmbuild -bb drbd-km.spec

cd /root/rpmbuild/RPMS/x86_64

rpm -ivh *

scp /root/rpmbuild/RPMS/x86_64/* 172.25.38.5:/root

并且执行 rpm -ivh drbd-*

vim /etc/drbd.d/example.res

1 resource example {

2 meta-disk internal;

3 device /dev/drbd1;

4 syncer {

5 verify-alg sha1;

6 }

7 on server5.example.com {

8 disk /dev/vdb;

9 address 172.25.38.5:7789;

10 }

11 on server2.example.com {

12 disk /dev/vdb;

13 address 172.25.38.2:7789;

14 }

15 }

drbdadm create-md example

/etc/init.d/drbd start

drbdadm primary example

cat /proc/drbd#在两台主机上查看同步状态

mkfs.ext4 /dev/drbd1#数据同步结束后创建文件系统

mount /dev/drbd1 /var/www/html#挂载文件系统

---------------------------------------------

4)安装jdk

得到

jdk-6u32-linux-x64.bin

sh jdk-6u32-linux-x64.bin

mv jdk-6u32-linux-x64 java

mv java /usr/local

vim /etc/profile

export JAVA_HOME=/usr/local/java

export CLASSPATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

cd /home/

测试:

vim test.java

class test {

public static void main(String[] args)

{

System.out.println("Hello world!");

}

}

java test

---------------------------------------------

5) 安装cobar

cobar-server-1.2.6.zip

unzip cobar-server-1.2.6.zip

cd /root/cobar-server-1.2.6/conf

vim schema.xml

<!-- schema定义 -->

<schema name="dbtest" >

<table name="usertb" dataNode="server5,server2"  />

</schema>

<dataSource name="dbtest" type="mysql">

<property name="location">

<location>172.25.38.5:3306/dbtest</location>

<location>172.25.38.5:3306/dbtest</location>

</property>

<property name="user">root</property>

<property name="password">westos</property>

<property name="sqlMode">STRICT_TRANS_TABLES</property>

</dataSource>

vim server.xml

<user name="root">

<property name="password">westos</property>

<property name="schemas">dbtest</property>

</user>

<!--

<user name="root">

<property name="password"></property>

</user>

<cluster>

<node name="cobar1">

<property name="host">172.25.38.5</property>

<property name="weight">1</property>

</node>

</cluster>

<cluster>

<node name="cobar2">

<property name="host">172.25.38.2</property>

<property name="weight">2</property>

</node>

</cluster>

vim rule.xml

<!DOCTYPE cobar:rule SYSTEM "rule.dtd">

<cobar:rule xmlns:cobar="http://cobar.alibaba.com/">

<!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法 -->

<tableRule name="rule1">

<rule>

<columns>id</columns>

<algorithm><![CDATA[ func1(${id}) ]]></algorithm>

</rule>

</tableRule>

<!-- 路由函数定义 -->

<function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong">

<property name="partitionCount">2</property>

<property name="partitionLength">512</property>

</function>

cd /root/cobar-server-1.2.6/bin

[[email protected] bin]# ./startup.sh

"/usr/local/java/bin/java" -Dcobar.home="/root/cobar-server-1.2.6" -classpath "/root/cobar-server-1.2.6/conf:/root/cobar-server-1.2.6/lib/classes:/root/cobar-server-1.2.6/lib/cobar-common-1.2.6.jar:/root/cobar-server-1.2.6/lib/cobar-config-1.2.6.jar:/root/cobar-server-1.2.6/lib/cobar-net-1.2.6.jar:/root/cobar-server-1.2.6/lib/cobar-parser-1.2.6.jar:/root/cobar-server-1.2.6/lib/cobar-route-1.2.6.jar:/root/cobar-server-1.2.6/lib/cobar-server-1.2.6.jar:/root/cobar-server-1.2.6/lib/log4j-1.2.16.jar:/root/cobar-server-1.2.6/lib/slf4j-api-1.6.4.jar:/root/cobar-server-1.2.6/lib/slf4j-log4j12-1.6.4.jar" -server -Xms1024m -Xmx1024m -Xmn256m -Xss128k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 com.alibaba.cobar.CobarStartup >> "/root/cobar-server-1.2.6/logs/console.log" 2>&1 &

[[email protected] bin]# /etc/init.d/drbd start

Starting DRBD resources: [

]

.

[[email protected] bin]# ip addr show

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 52:54:00:f6:11:cd brd ff:ff:ff:ff:ff:ff

inet 172.25.38.2/24 brd 172.25.38.255 scope global eth0

inet 172.25.38.100/24 brd 172.25.38.255 scope global secondary eth0

inet6 fe80::5054:ff:fef6:11cd/64 scope link

valid_lft forever preferred_lft forever

[[email protected] bin]# df

Filesystem               1K-blocks    Used Available   Use% Mounted on

/dev/mapper/VolGroup-lv_root  15006084     1723528  12520292  13% /

tmpfs                   203008       0   203008   0% /dev/shm

/dev/vda1                495844       33452   436792   8% /boot

/dev/drbd1               4128284       95208  3823372   3% /var/lib/mysql

[[email protected] bin]#./shutdown.sh

[[email protected] conf]# df

Filesystem               1K-blocks    Used Available  Use% Mounted on

/dev/mapper/VolGroup-lv_root  17069948     1602508 14600320   10%   /

tmpfs                  251136       0   251136    0% /dev/shm

/dev/vda1                495844      33467   436777   8% /boot

/dev/drbd1               4128284      95232  3823348   3% /var/lib/mysql

[[email protected] conf]# ip addr show

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 52:54:00:6e:00:88 brd ff:ff:ff:ff:ff:ff

inet 172.25.38.5/24 brd 172.25.38.255 scope global eth0

inet 172.25.38.100/24 brd 172.25.38.255 scope global secondary eth0

inet6 fe80::5054:ff:fe6e:88/64 scope link

valid_lft forever preferred_lft forever

-------------------------------------

时间: 2024-10-07 11:31:01

cobar mysql 高可用的相关文章

优酷土豆资深工程师:MySQL高可用之MaxScale与MHA

本文根据DBAplus社群第67期线上分享整理而成 本次分享主要包括以下内容: 1.MySQL高可用方案 2.为什么选择MHA 3.读写分离方案的寻找以及为什么选择Maxscale 一.MySQL  Failover的方案 常见的Failover方案 MMM MMM缺点: Monitor节点是单点,可以结合Keepalived实现高可用目前MySQL Failover 的方案 Keepalived会有脑裂的风险 在读写繁忙的业务中可能丢数据 MHA + ssh -o 测试心跳 + masterM

探索MySQL高可用架构之MHA(5)

-----构建mysql高可用系列(共9篇) 上一篇文章介绍了本次架构的AB复制操作! 本篇文章主要介绍本次架构中的Atlas读写分离! 为什么要分库.分表.读写分离? 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库. Master库负责数据更新,Slave库当然负责非实时数据查询. 因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体

Mysql+DRBD+Heartbeat 实现mysql高可用的双击热备(DRBD篇)

DRBD官方tar包下载地址:   http://oss.linbit.com/drbd/ 环境介绍: 系统版本:CentOS 6.4 (64位) 内核版本  2.6.32-358.el6.x86_64 软件版本:drbd-8.4.3.tar.gz 主:10.0.0.1   从:10.0.0.2 两台机器上的hosts都需要修改: [[email protected] ~]# vim /etc/hosts 10.0.0.1    node1 10.0.0.2    node2 两台服务器双网卡,

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

HA集群之DRBD实现MySQL高可用

一.前言 本篇博文只是实现Corosync + Pacemaker + DRBD + MySQL,实现MySQL的高可用.更多的基础知识在前几篇博文中已有涉猎,故更多的理论细节将不再此篇中详述. 若想了解高可用基础知识,请参考:http://hoolee.blog.51cto.com/7934938/1406951 若想了解Corosync + Pacemaker,请参考:http://hoolee.blog.51cto.com/7934938/1409395 若想了解DRBD,请参考:http

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

修改MySQL高可用模块接收自定义VIP参数

但凡是MySQL DBA肯定都听说过MHA个高可用方案,而且很多公司都是通过对MHA做二次开发来实现MySQL高可用的.如果MHA不结合VIP的话,每次主库切换都需要程序修改连数据库的配置,这样比较麻烦.而采用MHA+VIP的方式时可以在主库切换的过程中让VIP漂移到新主库,省去了改数据库配置这一过程. 公司以前是每一组主从复制集群都配置一个manager结点,然后将vip和网络接口等信息都写死在master_ip_failover和master_ip_online_change脚本中.当主从集

MySQL高可用系列之MHA(二)

一.参数说明 MHA提供了一系列配置参数,深入理解每个参数的具体含义,对优化配置.合理使用MHA非常重要,很多高可用性也都是通过合理配置一些参数而实现的. MHA包括如下配置参数,分别说明如下: hostname/ip/port (Local Only) hostname为MySQL Server的IP地址或主机名: ip为MySQL Server的IP地址,缺省从$hostname中获取:port为MySQL Server的端口号,缺省为3306 ssh_host/ssh_ip/ssh_por

mysql高可用

1 mmm架构 mysql高可用集群    (mysql MMM   +  mysql主从同步) 1.公共配置 配置固定物理Ip地址   237   42   101   102    77 所有机器之间彼此可以ping通 服务器237   42   101   102 运行mysql数据库服务. 配置YUM源 在所有服务器237   42   101   102    77上安装 rpm  -q  perl  ||  yum  -y  perl yum  -y  install  perl-*