目次
安装准备
安装MySQL
初始化MySQL
管理MySQL安全性
配置Master和Slave之间的复制
ホームページ データベース mysql チュートリアル MySQL的Master/Slave集群安装和配置_MySQL

MySQL的Master/Slave集群安装和配置_MySQL

Jun 01, 2016 pm 01:02 PM
集まる

本文讲述MySQL的Master/Slave集群安装和配置,安装的版本是最新的稳定版本GA 5.6.19。

为了支持有限的HA,我们使用Master/Slave简单的读写分离集群。有限的HA是指当Master不可用时,数据不会丢失,但在Master宕机的情况下是不可写的,必须手工处理故障。如果要支持更高的可用性,可以使用两台Master来做热切换。

Master和Slave的MySQL安装是相同的,只是my.cnf的配置不同,需要配置二进制日志文件复制。

没有特殊说明,命名中带#的为root用户操作,带$的为mysql Linux用户的操作。

安装准备

1. 在安装MySQL前,需要确认下面的系统软件已经安装在Linux中。

软件名称

软件描述

gcc-4.4.7

编程语言编译器

gcc-c++-4.4.7

C++语言编译器

cmake-2.6.4-5

跨平台的开源构建系统

ncurses-devel-5.7-3.20090208

控制打印控制台屏幕

2. 创建mysql Linux用户

# groupadd mysql

# useradd -g mysql mysql

# passwd mysql

3. 准备安装目录

创建MySQL安装目录,并赋权限给mysql用户:

# mkdir /usr/local/mysql-5.6.19

# chown mysql:mysql /usr/local/mysql-5.6.19

# chmod -R 770 /usr/local/mysql-5.6.19

4. 创建MySQL数据存储目录:

# mkdir /data

# mkdir /data/mysql

# chown mysql:mysql /data/mysql

5. 授权MySQL解压源码目录/usr/local/src目录的可执行权限给所有用户:

# chmod -R 757 /usr/local/src

安装MySQL

1. 解压缩安装包:

$ cd /usr/local/src

$ tar -xzvf mysql-5.6.19.tar.gz

2. 配置MySQL编译参数

$ cd /usr/local/src/mysql-5.6.19

$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.19\

-DMYSQL_DATADIR=$MYSQL_DATA_PATH\

-DSYSCONFDIR=/usr/local/mysql-5.6.19/conf\

-DDEFAULT_CHARSET=utf8\

-DDEFAULT_COLLATION=utf8_general_ci\

-DWITH_READLINE=1\

-DWITH_INNOBASE_STORAGE_ENGINE=1\

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

备注:

-DCMAKE_INSTALL_PREFIX: 配置MySQL的安装目录。

-DMYSQL_DATADIR: 配置MySQL的数据目录。

-DSYSCONFDIR: 配置MySQL的配置文件目录。

-DDEFAULT_CHARSET: 默认字符集。

-DDEFAULT_COLLATION:设定默认语言的排序规则。

-DWITH_READLINE:支持批量导入mysql数据。

-DWITH_INNOBASE_STORAGE_ENGINE:使用INNOBASE存储引擎。

-DWITH_ARCHIVE_STORAGE_ENGINE:常应用于日志记录和聚合分析,不支持索引。

-DWITH_BLACKHOLE_STORAGE_ENGINE:黑洞存储引擎。

-DWITH_PERFSCHEMA_STORAGE_ENGINE:性能模式引擎。

3. 执行make

$ make

$ make install

4. 修改myql用户的环境变量,增加MYSQL_HOME,并把bin加到PATH:

$ vi ~/.bash_profile

在文件中增加蓝色字体部分:

# User specific environment and startup programs

# MySQL home目录

export MYSQL_HOME=/usr/local/mysql-5.6.19

 

PATH=$PATH:$HOME/bin:$MYSQL_HOME/bin

 

export PATH

$ source ~/.bash_profile

初始化MySQL

1. 安装service脚本

# cp /usr/local/mysql-5.6.19/support-files/mysql.server/etc/init.d/mysqld

# chown mysql:mysql/etc/init.d/mysqld

# chmod 700 /etc/init.d/mysqld

2. 创建mysql权限数据库

$ $MYSQL_HOME/scripts/mysql_install_db--basedir=$MYSQL_HOME --datadir=/data/mysql

3. 创建PID文件目录

$ mkdir $MYSQL_HOME/var

4. 为master配置my.cnf

my.cnf格式不正确,很容易在启动时错误,最好在原有文件的基础上通过vi工具在linux上修改。

如果文件已经损坏,可以通过默认的模板中拷贝:

$ cp $MYSQL_HOME/support-files/my-default.cnf$MYSQL_HOME/my.cnf

编辑my.cnf

$ vi $MYSQL_HOME/my.cnf

在文件中增加蓝色字体部分:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 256M

innodb_flush_log_at_trx_commit=1

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

log_bin=master-bin

log_bin_index=master-bin.index

# These are commonly set, remove the # and set as required.

# basedir = .....

datadir = /data/mysql

port = 3306

# first master server id

server_id = 1

socket = /tmp/mysql.sock

pid-file = /usr/local/mysql-5.6.19/var/master.pid

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


5. 为slave配置my.cnf

和master的配置文件一样进行修改,但注意文件中的log文件名、datadir和server_id等内容不同。

编辑my.cnf

$ vi $MYSQL_HOME/my.cnf

在文件中增加蓝色字体部分:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 256M

innodb_flush_log_at_trx_commit=1

# Replication

# relay-log=slave-relay-bin

# relay-log-index=slave-relay-bin.index

# These are commonly set, remove the # and set as required.

# basedir = .....

datadir = /data/mysql

port = 3306

# first slave server id of master 1

server_id = 101

socket = /tmp/mysql.sock

pid-file = /usr/local/mysql-5.6.19/var/slave.pid

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


6. 启动MySQL

启动和停止master和slave都完全一样。

$ service mysqldstart

通过下面命令查看是否启动成功:

$ service mysqldstatus

7. 停止MySQL

$ service mysqld stop

管理MySQL安全性

默认MySQL的root的用户密码为空,为了提高安全性,应该设置root用户一个安全的密码。

在服务器上通过mysql用户打开MySQL客户端:

$ mysql –u root

设置一个安全的密码:

mysql> SET PASSWORD FORroot@localhost=PASSWORD('secret');

配置Master和Slave之间的复制

1. 创建执行复制的MySQL用户

在Master上创建一个复制用户,其中secret为用户的密码:

mysql> CREATEUSER repl_user IDENTIFIED BY 'secret';

并赋给复制权限:

mysql>GRANTREPLICATION SLAVE ON *.* TO repl_user;

2. 锁定Master并获取二进制日志位置值

获取读锁:

mysql> FLUSH TABLES WITHREAD LOCK;

显示当前二进制文件名及位置值:

mysql> SHOW MASTER STATUS;

\

3. 通过mysqldump工具获取Master数据快照

在另外一个会话中在Master上执行:

$ mysqldump -u root-p --all-databases --master-data > data_dump.sql

执行后,保存在当前目录中。

4. 释放Master上的读锁

在获取读锁的会话中,执行释放锁命令:

mysql> UNLOCK TABLES;

5. 导入dump数据到Slave中 

通过scp拷贝data_dump.sql到Slave的机器上。

$ scp data_dump.sqlmysql@:/home/mysql

在Slave上通过下面的命令导入到Slave的MySQL中。

$ mysql –u root -p

mysql> source data_dump.sql;

6. 配置Master和Slave之间的复制

mysql> CHANGE MASTER TO MASTER_HOST='',

MASTER_USER='repl_user',

MASTER_PASSWORD='secret',

MASTER_PORT = 3306,

MASTER_LOG_FILE='master-bin.000003',

MASTER_LOG_POS=881;

上面的MASTER_LOG_FILE和MASTER_LOG_POS需要配置6.2中查询到的信息。是Master的IP或主机名。

启动Slave:

mysql> START SLAVE;

7. 验证Master和Slave的状态

在Master上执行:

mysql> SHOW MASTER STATUS;

\

在Slave上执行:

mysql> SHOW SLAVE STATUS;

\

上面信息显示没有任何错误,Slave_IO_State信息为‘Waitigfor master to send event’,说明复制连接配置OK。

至此,两个MySQL的Master/Slave模式的集群已经部署成功,可以在Master上执行数据更新操作,发现可以正常复制到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)

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

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

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

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

Docker を使用してマルチノード クラスターを管理および拡張する方法 Docker を使用してマルチノード クラスターを管理および拡張する方法 Nov 07, 2023 am 10:06 AM

今日のクラウド コンピューティング時代において、コンテナ化テクノロジは、オープンソースの世界で最も人気のあるテクノロジの 1 つになっています。 Docker の登場により、クラウド コンピューティングはより便利かつ効率的になり、開発者や運用保守担当者にとって不可欠なツールになりました。マルチノード クラスター テクノロジーのアプリケーションは、Docker に基づいて広く使用されています。マルチノード クラスターの展開を通じて、リソースをより効率的に利用し、信頼性と拡張性を向上させることができ、さらに展開と管理をより柔軟に行うことができます。次にDockerを使って以下のことを行う方法を紹介します。

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 サーバーなどです。

MongoDB を使用してデータ クラスタリングと負荷分散機能を実装する方法 MongoDB を使用してデータ クラスタリングと負荷分散機能を実装する方法 Sep 19, 2023 pm 01:22 PM

MongoDB を使用してデータ クラスタリングおよびロード バランシング機能を実装する方法 はじめに: 今日のビッグ データ時代では、データ量の急速な増加により、データベースのパフォーマンスに対する要件がさらに高まっています。これらの要件を満たすために、データ クラスタリングと負荷分散は不可欠な技術手段となっています。 MongoDB は、成熟した NoSQL データベースとして、データ クラスタリングと負荷分散をサポートする豊富な機能とツールを提供します。この記事では、MongoDB を使用してデータ クラスタリングと負荷分散機能を実装する方法と、具体的なコードを紹介します。

Workerman ドキュメントのサーバー クラスターの実装方法 Workerman ドキュメントのサーバー クラスターの実装方法 Nov 08, 2023 pm 08:09 PM

Workerman は、PHP が非同期ネットワーク通信をより効率的に処理できるようにする高性能 PHPSocket フレームワークです。 Workerman のドキュメントには、サーバー クラスターの実装方法に関する詳細な手順とコード例が記載されています。サーバー クラスターを実装するには、まずサーバー クラスターの概念を明確にする必要があります。サーバー クラスターは複数のサーバーをネットワークに接続し、負荷とリソースを共有することでシステムのパフォーマンス、信頼性、拡張性を向上させます。 Workermanでは以下の2つの方法が利用できます

MySQL クラスターの導入および保守プロジェクトの経験の概要 MySQL クラスターの導入および保守プロジェクトの経験の概要 Nov 02, 2023 pm 01:33 PM

MySQL クラスターの導入と保守プロジェクトの経験の概要 MySQL は、インターネット アプリケーション開発で最もよく使用されるデータベースの 1 つですが、ビジネス規模が拡大し続けるにつれて、スタンドアロンの MySQL では需要に対応できなくなりました。データベースのパフォーマンスと容量を拡張する MySQL クラスター ソリューション。この記事は、MySQL クラスターのデプロイメントとメンテナンスのプロセスで学んだ経験と教訓をまとめたもので、すべての MySQL クラスターのデプロイメントとメンテナンス作業に役立つことを願っています。 1. MySQL クラスターの導入とアーキテクチャ設計 MySQL クラスター

MySQLデータベースのクラスタ環境を構築するにはどうすればよいですか? MySQLデータベースのクラスタ環境を構築するにはどうすればよいですか? Jul 12, 2023 pm 02:52 PM

MySQLデータベースのクラスタ環境を構築するにはどうすればよいですか?はじめに: インターネットの発展とデータ量の継続的な増加に伴い、データベースはあらゆる企業に必要なコア システムの 1 つになりました。同時に、高いデータの可用性と読み取りおよび書き込みのパフォーマンス要件を確保するために、データベース クラスター環境が企業の選択肢になりつつあります。この記事では、MySQL データベースのクラスター環境を構成する方法と、対応するコード例を紹介します。 1. 環境準備 MySQL データベースのクラスタ環境を構築する前に、以下の環境準備が完了していることを確認する必要があります。 M のインストール

See all articles