一、规划

1.1架构规划

为保证各种灾难情况下,数据库尽快的恢复服务,方案采用heartbeat集群加MySQL MM架构,架构图如下:

mysql数据库心跳检测 mysql心跳表_mysql

1.2主机规划

主机名称

网卡名称

IP地址

备注

Cac-db01

Eth0

192.16.20.XX

节点1上的业务网卡

Eth1

192.168.1.10

节点1上心跳网卡

Cac-db02

Eth0

192.16.20.XX

节点2上的业务网卡

Eth1

192.168.1.11

节点2上心跳网卡

Cacdb

Eth0:0

192.16.20.XX

虚拟IP所在网卡

1.3Heartbeat规划

参数配置:

Ha.cf

参数名称

参数值

备注

logfile

/var/log/ha-log

日志路径

keepalive

1

心跳频率

deadtime

10

备机接管主机的故障时间

warntime

5

集群冲断告警时间

initdead

30

系统启动后,集群恢复的时长

auto_failback

on

主机恢复后是否自动回切

ping

路由器的IP

验证集群网络的连通性

haresource

Ha01  IPaddr::192.16.20.7/24/eth0/ mysqld

authkeys

auth 1

1 crc

1.4数据库规划

参数

节点1参数值

节点2参数值

备注

innodb_buffer_pool_size

内存数据缓冲区

innodb_log_file_size

日志文件大小

innodb_log_buffer_size

内存日志缓冲区

datadir

Log-bin

On

Server-id

1

2

sync_binlog

1

1

innodb_flush_log_at_trx_commit

1

1

log-slave-updates

1

1

auto_increment_offset

1

auto_increment_increment

2

slow_query_log

On

long_query_time

10.000000

log_queries_not_using_indexes

On

binlog_format

Row

Innodb_file_per_table

On

innodb_thread_concurrency

8

transaction-isolation

READ-COMMITTED

READ-COMMITTED

数据库隔离级别

character_set_client

Utf8

Utf8

character_set_connection

Utf8

Utf8

character_set_database

Utf8

Utf8

character_set_results

Utf8

Utf8

character_set_server

Utf8

Utf8

character_set_system

Utf8

Utf8

二、集群软件heartbeat实施

2.1获取heartbeat软件安装源

最新稳定版本为:

ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz

Heartbeat-3-0-7e3a82377fa8.tar.bz2

Reusable-Cluster-Components-glue--glue-1.0.8.tar.bz2

2.2 heartbeat安装

a)安装依赖包:

yum install bzip2-devel glib2-devel libxml2 libxml2-devel install

gcc-c++ install libtool-ltdl-devel libxslt-devel autoconf automake libtool

pkgconfig glib2-devel  e2fsprogs libnet*  libxml2*  PyXML

ntp*

yum -y install gettext*  intltool automake autoconf

libtool-ltdl-devel pkgconfig python glib2-devel libxml2-devel libxslt-devel

python-devel gcc-c++ bzip2-devel gnutls-devel pam-devel libqb-devel ncurses-devel

openssl-devel docbook-style-xsl

yum install libqb*

yum install corosynclib-devel-1.4.1-15.el6.x86_64.rpm

corosynclib-1.4.1-15.el6.x86_64.rpm corosync-1.4.1-15.el6.x86_64.rpm

yum install dbus*

b)创建集群账号:

[root@localhost

Packages]# groupadd haclient

[root@localhost Packages]# useradd

-g haclient hacluster

c)安装命令:

1安装glue的步骤:

./autogen.sh

./configure

--prefix=/usr --sysconfdir=/etc --localstatedir=/var LIBS=’/lib64/libuuid.so.1’

Make

Make install

2安装heartbeat的步骤:

./bootstrap

./configure

--prefix=/usr --sysconfdir=/etc --localstatedir=/var LIBS=’/lib64/libuuid.so.1’

make

make install

3安装agent的步骤:

./autogen.sh

./configure

--prefix=/usr --sysconfdir=/etc --localstatedir=/var LIBS=’/lib64/libuuid.so.1’

make

make install

三、MySQL MM模式配置

3.1数据库安装

从官网获取安装文件

两节点上均安装以下安装包:

MySQL-client-5.6.24-1.el6.x86_64.rpm

MySQL-devel-5.6.24-1.el6.x86_64.rpm

MySQL-embedded-5.6.24-1.el6.x86_64.rpm

MySQL-server-5.6.24-1.el6.x86_64.rpm

MySQL-shared-5.6.24-1.el6.x86_64.rpm

MySQL-shared-compat-5.6.24-1.el6.x86_64.rpm

MySQL-test-5.6.24-1.el6.x86_64.rpm

3.2 MM架构配置:

a)编辑参数文件my.cnf,添加以下参数:

参数

节点1参数值

节点2参数值

备注

innodb_buffer_pool_size

内存数据缓冲区

innodb_log_file_size

日志文件大小

innodb_log_buffer_size

内存日志缓冲区

Log-bin

On

Server-id

1

2

sync_binlog

1

1

innodb_flush_log_at_trx_commit

1

1

log-slave-updates

1

1

auto_increment_offset

1

2

auto_increment_increment

2

2

slow_query_log

On

On

long_query_time

10.000000

10.000000

log_queries_not_using_indexes

On

On

binlog_format

Row

Row

Innodb_file_per_table

On

On

innodb_thread_concurrency

2

2

transaction-isolation

READ-COMMITTED

READ-COMMITTED

数据库隔离级别

character_set_server

Utf8

Utf8

数据库服务器字符集

b)创建MM架构数据复制专用账号:

在两个节点上均创建MM架构同步专用的账号:

在192.16.20.7上执行:

GRANT REPLICATION

SLAVE, REPLICATION CLIENT ON *.* TO 'replicat_user'@'192.16.20.9' IDENTIFIED BY

' replicat_user ';

在192.16.20.9上执行:

GRANT REPLICATION

SLAVE, REPLICATION CLIENT ON *.* TO 'replicat_user'@'192.16.20.7' IDENTIFIED BY

'replicat_user';

c)备份主库,再把备份的数据传到备机上进行数据初始化

在会话1中给数据库添加读锁,避免数据在备份期间被修改,并记录日志文件的名称及位置

mysql> FLUSH TABLES WITH READ
LOCK;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+-----------+----------+--------------+------------------+-------------------+
| File      | Position | Binlog_Do_DB |
Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------+----------+--------------+------------------+-------------------+
| on.000011 |      363 |              |                  |                   |
+-----------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql>

会话2种备份数据库:

[root@ha01 mysql]# mysqldump -uroot
-proot --all-databases --master-data > dbdump.db
Warning: Using a password on the
command line interface can be insecure.
[root@ha01 mysql]# mysqldump -uroot
-p --all-databases --master-data > dbdump.db
Enter password:
[root@ha01 mysql]#

将备份文件上传到节点2,并将数据导入到数据库中

mysql> source /tmp/dbdump.db

d)数据同步配置

在节点2上配置复制slave进程

CHANGE MASTER
TO
MASTER_HOST='192.16.20.7',
MASTER_PORT=3306,
MASTER_USER='replicat_user',
MASTER_PASSWORD='replicat_user',
MASTER_LOG_FILE='on.000011',
MASTER_LOG_POS=363;

启动slave进程

Start slave

节点一上做同样操作:

CHANGE MASTER
TO
MASTER_HOST='192.16.20.9',
MASTER_PORT=3306,
MASTER_USER='replicat_user',
MASTER_PASSWORD='replicat_user',
MASTER_LOG_FILE='on.000001',
MASTER_LOG_POS=609205; --需要在节点2上查看该日志路径与位置