ホームページ データベース mysql チュートリアル heartbeat+DRBD+mysql+LVS集群实战_MySQL

heartbeat+DRBD+mysql+LVS集群实战_MySQL

Jun 01, 2016 pm 12:59 PM
実戦 集まる

四台主机

主机名 IP地址 用途

dbm128 172.16.0.128 heartbeat+DRBD+MYSQL的primary节点

dbm129 172.16.0.129 heartbeat+DRBD+mysql 的secondary节点

dbs130 172.16.0.130 slave(mater_host=172.16.0.233)

dbs131 172.16.0.131 slave(mater_host=172.16.0.233)

配置前的准备

1.设置hostname及解析

编辑/etc/hosts文件,添加如下内容:

172.16.0.128 dbm128

172.16.0.129 dbm129

2.新增加一块/dev/sdb5硬盘存放DRBD数据(两台都增加)

命令如下:

[root@dbm128 ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

 

The number of cylinders for this disk is set to 6527.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n

Command action

e extended

p primary partition (1-4)

e

Partition number (1-4): 1

First cylinder (1-6527, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-6527, default 6527):

Using default value 6527

Command (m for help): n

Command action

l logical (5 or over)

p primary partition (1-4)

l

First cylinder (1-6527, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-6527, default 6527):

Using default value 6527

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

3.DRBD的部署(两台机器都这么做)

yum -y install gcc gcc-c++ kernel* 安装好后重启一下,免得后面出错

#wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz

# tar zxvf drbd-8.4.3.tar.gz

# cd drbd-8.4.3

# ./configure --prefix=/ --with-km

#make

#make install

4. 加载安装DRDB模块

#modprobe drbd

机器重启后DRBD模块消失,需要写入/etc/rc.local开机自动执行

通过lsmod来检查是否已经执行成功

[root@dbm128 drbd-8.4.3]# lsmod | grep drbd

drbd 327968 0

5.编辑配置文件(两台配置一样dbm128,dbm129)

如果后面有问题要把LINUX防火墙关闭,或者把端口增加过去

[root@dbm128 drbd-8.4.3]# cat /etc/drbd.conf

global {usage-count yes;}

common{syncer{rate 200M;}}

resource r0{

protocol C;

net{

cram-hmac-alg sha1;

shared-secret "FooFunFactory";

}

disk{

on-io-error detach;

fencing resource-only;

}

startup{

wfc-timeout 120;

degr-wfc-timeout 120;

}

device /dev/drbd1;

on dbm128{

disk /dev/sdb5;

address 172.16.0.128:7789;

meta-disk internal;

}

on dbm129{

disk /dev/sdb5;

address 172.16.0.129:7789;

meta-disk internal;

}

}

 

6.启动DRBD(两台操作)

可通过如下命令启动DRBD

[root@dbm128 drbd-8.4.3]# drbdadm create-md all

[root@dbm128 drbd-8.4.3]# /etc/init.d/drbd start

[root@dbm128 drbd-8.4.3]# drbdadm -- --overwrite-data-of-peer primary all (这一步只在主服务器上做)

在主机上查看DRBD状态

[root@dbm128 ~]# cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@dbm128, 2014-07-18 23:01:15

1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-

ns:45789492 nr:0 dw:0 dr:45794304 al:0 bm:2794 lo:0 pe:3 ua:5 ap:0 ep:1 wo:f oos:6639292

[================>...] sync'ed: 87.4% (6480/51196)M

finish: 0:06:46 speed: 16,336 (18,732) K/sec

以上数据正在同步。下面同步完成

[root@dbm128 ~]# cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@dbm128, 2014-07-18 23:01:15

 

1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

ns:52426428 nr:0 dw:0 dr:52426428 al:0 bm:3200 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

在从机上查看DRBD状态

[root@dbm129 ~]# cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@dbm129, 2014-07-18 23:14:34

 

1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

ns:0 nr:52426428 dw:52426428 dr:0 al:0 bm:3200 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

在执行过程中,如果出现上述信息,代表操作成功

7.格式化DRBD文件系统(只在主机上做)

[root@dbm128 ~]# mkfs.ext3 /dev/drbd1

注意开机不要自启动DRBD服务,因为要通过heartbeat来启动DRBD

8.挂载DRBD分区

[root@dbm128 ~]# mkdir /data

[root@dbm128 ~]# mount /dev/drbd1 /data

[root@dbm128 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

92G 4.9G 82G 6% /

/dev/sda1 99M 35M 59M 38% /boot

tmpfs 501M 0 501M 0% /dev/shm

/dev/drbd1 50G 180M 47G 1% /data

后面就把mysql数据目录放在/data上

 

9.安装MYSQL数据库(四台都要安装)

安装所需要系统库相关库文件

[root@dbm128 ~]#yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* cmake

[root@dbm128 ~]# groupadd mysql

[root@dbm128 ~]# useradd -r -g mysql mysql

[root@dbm128 ~]# tar zxvf mysql-5.5.25.tar.gz

[root@dbm128 ~]# cd mysql-5.5.25

[root@dbm128 mysql-5.5.25]# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql/ -DMYSQL_DATADIR=/opt/mysql/data -DMYSQL_UNIX_ADDR=/opt/mysql/data/mysqld.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/opt/mysql/data/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0

[root@dbm128 mysql-5.5.25]# make && make install

赋予相关的权限

[root@dbm128 mysql]# chown -R mysql:mysql /opt/mysql

[root@dbm128 mysql]# /opt/mysql/scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data

mysql配置文件

[root@dbm128 mysql]# cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql

[root@dbm128 mysql]# cp /opt/mysql/support-files/my-large.cnf /etc/my.cnf

[root@dbm128 mysql]# chmod +x /etc/init.d/mysql

dbm128上操作就可以,因为会同步过去所以dbm129不用操作

[root@dbm128 mysql]# cp -r /opt/mysql/data /data/mysql

[root@dbm128 mysql]# chown -R mysql:mysql /data/mysql

 

[root@dbm128 mysql]# vi /etc/init.d/mysql (两台要修改dbm128,dbm129)

找到datadir=/opt/mysql/data 修改成datadir=/data/mysql

 

[root@dbm128 mysql]#/etc/init.d/mysql start 启动(dbm129不用去启动到时做heartbeat采用自动启动)

[root@dbm128 mysql]# /opt/mysql/bin/mysqladmin -u root password '123456' (三台都操作,dbm129不用操作已经同步过去了)

 

10.安装heartbeat(两台机器都安装)

要先安装DRBD,然后才能安装hearbeat

安装命令如下:

[root@dbm128 ~]# yum -y install heartbeat heartbeat-devel heartbeat-stonith heartbeat-pils

接下来配置文件

[root@dbm128 ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/ha.cf

[root@dbm128 ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/haresources

[root@dbm128 ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/authkeys

[root@dbm128 ~]# chmod 600 /etc/ha.d/authkeys

修改ha.cf

[root@dbm128 ~]# cat /etc/ha.d/ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

 

keepalive 1

deadtime 15

warntime 5

initdead 30

 

ucast eth0 172.16.0.129 (修改对方的节点IP)

ping_group group 172.16.0.128 172.16.0.129

auto_failback on (从节点修改为off)

 

node dbm128

node dbm129

respawn hacluster /usr/lib64/heartbeat/ipfail

respawn hacluster /usr/lib64/heartbeat/dopd

 

apiauth ipfail gid=haclient uid=hacluster

apiauth dopd gid=haclient uid=hacluster

增加到后面cat /etc/ha.d/authkeys

auth 1

1 sha1 HA_JACKBILLOW

增加到后面 cat /etc/ha.d/haresources

dbm128 drbddisk::r0 Filesystem::/dev/drbd1::/data mysql IPaddr::172.16.0.233/24/eth0

上面dbm128主机,如果dbm129修改本主机名。

启动heartbeat服务:

[root@dbm128 ~]/etc/init.d/heartbeat start

[root@dbm129 ~]/etc/init.d/heartbeat start

配置heartbeat 在启动级别3中自动启动:

[root@dbm128 ~]chkconfig --level 35 heartbeat on

[root@dbm129 ~]chkconfig --level 35 heartbeat on

观察heartbeat 启动日志是否正常

[root@dbm128 ~]# tail -f /var/log/ha-log

IPaddr[4782]: 2014/07/21_16:48:15 INFO: Success

heartbeat[4147]: 2014/07/21_16:48:57 info: dbm129 wants to go standby [foreign]

heartbeat[4147]: 2014/07/21_16:48:57 info: standby: acquire [foreign] resources from dbm129

heartbeat[5029]: 2014/07/21_16:48:57 info: acquire local HA resources (standby).

ResourceManager[5042]: 2014/07/21_16:48:57 info: Acquiring resource group: dbm128 drbddisk::r0 Filesystem::/dev/drbd1::/data mysql IPaddr::172.16.0.233/24/eth0

Filesystem[5083]: 2014/07/21_16:48:58 INFO: Running OK

IPaddr[5158]: 2014/07/21_16:48:58 INFO: Running OK

heartbeat[5029]: 2014/07/21_16:48:58 info: local HA resource acquisition completed (standby).

heartbeat[4147]: 2014/07/21_16:48:58 info: Standby resource acquisition done [foreign].

heartbeat[4147]: 2014/07/21_16:48:58 info: remote resource transition completed.

测试一下,看172.16.0.233是VIP,在两台主机之间漂移。

11.主从复制的配置

修改dbs130,dbs131主的my.cnf的server-id=1,每个同步服务都必须设定一个唯一的编号。

在Master(这里为dbm128机器)上增加一个用于复制的账号:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.0.%' IDENTIFIED BY '123456';

mysql>FLUSH REPLICATION;

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000018 | 107 | | |

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

1 row in set (0.00 sec)

设置Slave 主机

修改my.cnf的server-id,内容如下:

dbs130主机

server-id=3

dbs130主机

server-id=4

开启Master与Slave的同步

在Slave上执行如下命令

mysql>CHANGE MASTER TO MASTER_HOST='172.16.0.233',

->MASTER_USER='repl',

->MASTER_PASSWORD='123456',

->MASTER_LOG_FILE=' mysql-bin.000018',

->MASTER_LOG_POS=107;

之后执行

mysql>slave start;

mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 172.16.0.233

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000018

Read_Master_Log_Pos: 107

Relay_Log_File: dbs130-relay-bin.000007

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000018

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 107

Relay_Log_Space: 556

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

在其他几台slave机器上也执行上面的命令

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 実践: フィボナッチ数列をすばやく実装するコード例 PHP 実践: フィボナッチ数列をすばやく実装するコード例 Mar 20, 2024 pm 02:24 PM

PHP の実践: フィボナッチ数列をすばやく実装するためのコード例 フィボナッチ数列は、数学では非常に興味深い一般的な数列です。次のように定義されています: 最初と 2 番目の数値は 0 と 1、3 番目からは数値で始まり、それぞれの数値前の 2 つの数値の合計です。フィボナッチ数列の最初のいくつかの数値は、0、1、1.2、3、5、8、13、21 などです。 PHP では、再帰と反復を通じてフィボナッチ数列を生成できます。以下ではこの2つを紹介していきます

ノードが Proxmox VE から完全に退避し、クラスターに再参加します ノードが Proxmox VE から完全に退避し、クラスターに再参加します Feb 21, 2024 pm 12:40 PM

ノードが ProxmoxVE から完全に退避し、クラスターに再参加するためのシナリオの説明。ProxmoxVE クラスター内のノードが損傷し、すぐに修復できない場合、障害のあるノードをクラスターから完全に追い出し、残留情報をクリーンアップする必要があります。そうしないと、障害ノードが使用していた IP アドレスを使用する新しいノードが正常にクラスターに参加できなくなり、同様に、クラスターから切り離された障害ノードが修復された後、クラスターとは関係ありませんが、クラスターに参加できなくなります。この単一ノードの Web 管理にアクセスできなくなり、バックグラウンドで元の ProxmoxVE クラスター内の他のノードに関する情報が表示され、非常に迷惑になります。クラスターからノードを削除します。ProxmoxVE が Ceph ハイパーコンバージド クラスターの場合、ホスト システム Debian 上のクラスター内の任意のノード (削除するノードを除く) にログインし、コマンドを実行する必要があります。

uniapp とミニ プログラム (写真とテキスト) を下請けに出す方法を段階的に説明します。 uniapp とミニ プログラム (写真とテキスト) を下請けに出す方法を段階的に説明します。 Jul 22, 2022 pm 04:55 PM

この記事では、uniapp クロスドメインに関する関連知識を提供し、uniapp およびミニ プログラムのサブコントラクトに関連する問題を紹介します。サブコントラクトを使用する各ミニ プログラムには、メイン パッケージが含まれている必要があります。いわゆるメイン パッケージには、デフォルトのスタートアップ ページ/TabBar ページと、すべてのサブパッケージが使用する必要があるいくつかのパブリック リソース/JS スクリプトが配置されます。一方、サブパッケージは開発者の構成に従って分割されます。皆さんのお役に立てば幸いです。

PHP高同時実行環境におけるデータベースの最適化方法 PHP高同時実行環境におけるデータベースの最適化方法 Aug 11, 2023 pm 03:55 PM

高同時実行環境における PHP データベースの最適化方法 インターネットの急速な発展に伴い、ますます多くの Web サイトやアプリケーションが高同時実行の課題に直面する必要があります。この場合、特にバックエンド開発言語として PHP を使用するシステムでは、データベースのパフォーマンスの最適化が特に重要になります。この記事では、PHP の高同時実行環境におけるデータベースの最適化方法をいくつか紹介し、対応するコード例を示します。接続プーリングの使用 同時実行性の高い環境では、データベース接続の頻繁な作成と破棄がパフォーマンスのボトルネックを引き起こす可能性があります。したがって、接続プーリングを使用すると、

Golang実戦:データエクスポート機能の実装ヒントを共有 Golang実戦:データエクスポート機能の実装ヒントを共有 Feb 29, 2024 am 09:00 AM

データ エクスポート機能は、実際の開発、特にバックエンド管理システムやデータ レポートのエクスポートなどのシナリオで非常に一般的な要件です。この記事では、Golang 言語を例として、データ エクスポート機能の実装スキルを共有し、具体的なコード例を示します。 1. 環境の準備 開始する前に、Golang 環境がインストールされており、Golang の基本的な構文と操作に精通していることを確認してください。さらに、データ エクスポート機能を実装するには、github.com/360EntSec などのサードパーティ ライブラリの使用が必要になる場合があります。

MySQL テーブル設計の実践: 電子商取引注文テーブルと製品レビュー テーブルを作成する MySQL テーブル設計の実践: 電子商取引注文テーブルと製品レビュー テーブルを作成する Jul 03, 2023 am 08:07 AM

MySQL テーブル設計の実践: 電子商取引の注文テーブルと製品レビュー テーブルの作成 電子商取引プラットフォームのデータベースでは、注文テーブルと製品レビュー テーブルは 2 つの非常に重要なテーブルです。この記事では、MySQL を使用してこれら 2 つのテーブルを設計および作成する方法を紹介し、コード例を示します。 1. 注文テーブルの設計と作成 注文テーブルは、注文番号、ユーザー ID、製品 ID、購入数量、注文ステータスなどのフィールドを含むユーザーの購入情報を保存するために使用されます。まず、CREATET を使用して「order」という名前のテーブルを作成する必要があります。

php の一般的なクラスターは何ですか? php の一般的なクラスターは何ですか? Aug 31, 2023 pm 05:45 PM

PHP の一般的なクラスターには、LAMP クラスター、Nginx クラスター、Memcached クラスター、Redis クラスター、および Hadoop クラスターが含まれます。詳細な紹介: 1. LAMP クラスター. LAMP とは、Linux、Apache、MySQL、および PHP の組み合わせを指します. これは一般的な PHP 開発環境です. LAMP クラスターでは、複数のサーバーが同じアプリケーションを実行し、ロード バランサーによってバランスがとられます.異なるサーバーに分散されている; 2. Nginx クラスター、Nginx は高性能 Web サーバーなどです。

Java 開発の実践: Qiniu クラウド ストレージ サービスを統合してファイルのアップロードを実現する Java 開発の実践: Qiniu クラウド ストレージ サービスを統合してファイルのアップロードを実現する Jul 06, 2023 pm 06:22 PM

Java 開発実践: Qiniu クラウド ストレージ サービスを統合してファイル アップロードを実装する はじめに クラウド コンピューティングとクラウド ストレージの発展に伴い、ストレージと管理のためにファイルをクラウドにアップロードする必要があるアプリケーションがますます増えています。クラウド ストレージ サービスの利点は、高い信頼性、拡張性、柔軟性です。この記事では、Java 言語開発の使用方法、Qiniu クラウド ストレージ サービスの統合方法、およびファイル アップロード機能の実装方法を紹介します。 Qiniu Cloud について Qiniu Cloud は、中国の大手クラウド ストレージ サービス プロバイダーであり、包括的なクラウド ストレージおよびコンテンツ配信サービスを提供しています。ユーザーは Qiniu Yunti を使用できます

See all articles