Linux での MySQL マルチインスタンスの展開とインストール ガイド

Linux での MySQL マルチインスタンスの展開とインストール ガイド

MySQLマルチインスタンスとは

  • 簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の異なるサービス ポート (3306、3307) を同時に開き、複数の MySQL サービス プロセスを同時に実行することです。これらのサービス プロセスは、異なるサービス ポートをリッスンする異なるソケットを通じてサービスを提供します。
  • これらの MySQL の複数のインスタンスは、異なる my.cnf (同じでも可) 構成ファイル、起動プログラム (同じでも可)、およびデータ ファイルを使用して、一連の MySQL インストール プログラムを共有します。サービスを提供する際、MySQL の複数のインスタンスは論理的に互いに独立しているように見え、構成ファイル内の対応する設定に基づいて、サーバーから対応する量のハードウェア リソースを取得します。
  • たとえば、複数のMysqlインスタンスは、家の複数の寝室に相当します。各インスタンスは寝室とみなすことができ、サーバー全体は家です。サーバーのハードウェアリソース(CPU、メモリ、ディスク)とソフトウェアリソース(CentOSオペレーティングシステム)は、家のバスルームとリビングルームとみなすことができ、これらは家の公共リソースです。

MySQL 複数インスタンスの利点と欠点:

1. サーバー リソースを有効活用: 1 台のサーバーに余裕のあるリソースがある場合、残りのリソースを最大限に活用して、より多くの MySQL インスタンスを作成し、より多くのサービスを提供できます。 2. サーバー リソースを節約: 企業が資金不足であるが、複数のデータベースが必要で、それぞれが可能な限り独立してサービスを提供する必要がある、またはマスターとスレーブの同期が必要な場合は、MySQL の複数のインスタンスが最適です。

3. リソース競合の問題: サービス インスタンスの同時実行性が高い場合やクエリが遅い場合、インスタンス全体がメモリ、CPU、ディスク、および IO リソースをより多く消費し、サーバー上の他のインスタンスが提供するサービスの品質が低下します。これは、家の中の異なる寝室 (MySQL インスタンス) にいる人々がトイレ (ハードウェア CPU、メモリ、およびディスク IO リソース) に行く必要があり、1 人がトイレを占有し、他の全員が待たなければならない場合と同じです。

MySQL マルチインスタンス インストール ガイド:

詳細については公式サイト(https://dev.mysql.com/doc/refman/5.7/en/installing.html)を参照してください。

  • MySQL をインストールする方法は、バイナリ インストール、ソース コード コンパイル インストール、yum インストールなど多数あります。
  • yum のインストール パスはデフォルトのパスであり、インストールは比較的簡単です。
  • ソース コードのインストールとコンパイルのプロセスは比較的長くなります。ソース コードが変更されておらず、より高いバージョンの MySQL が必要な場合、

環境を準備します。

[root@mysql-multi ~]# cat /etc/redhat-release
CentOS Linux リリース 7.5.1804 (コア)
[root@mysql-multi ~]# uname -r
3.10.0-862.el7.x86_64
[root@mysql-multi ~]# ホスト名 -I
172.16.70.37
[root@mysql-multi ~]# getenforce
寛容な
[root@mysql-multi ~]# systemctl ステータス ファイアウォールd
● firewalld.service - firewalld - 動的ファイアウォールデーモン
   ロード済み: ロード済み (/usr/lib/systemd/system/firewalld.service; 無効; ベンダープリセット: 有効)
   アクティブ: 非アクティブ (デッド)
     ドキュメント: man:firewalld(1)

7月23日 14:36:11 mysql-multi systemd[1]: 動的ファイアウォールデーモンであるfirewalldを起動しています...
7月23日 14:36:12 mysql-multi systemd[1]: 動的ファイアウォールデーモンであるfirewalldを起動しました。
7月23日 15:09:10 mysql-multi systemd[1]: 動的ファイアウォールデーモンであるfirewalldを停止しています...
7月23日 15:09:11 mysql-multi systemd[1]: 動的ファイアウォールデーモンであるfirewalldを停止しました。

# CentOS 7 バージョンのシステムにはデフォルトで MariaDB がインストールされているので、まずこれをクリーンアップする必要があります [root@mysql-multi ~]# rpm -qa |grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
または [root@mysql-multi ~]# yum list installed | grep mariadb
mariadb-libs.x86_64 1:5.5.56-2.el7 @アナコンダ
# アンインストール [root@mysql-multi ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
または [root@mysql-multi ~]# yum -y remove mariadb-libs.x86_64

MySQLの複数インスタンスをインストールして設定する

YUM ソースのインストール方法は次のとおりです。

公式 Web サイト (https://downloads.mysql.com/archives/community) から rpm パッケージをダウンロードし、適切なバージョンのダウンロードを選択します。

# rpm パッケージをサーバーにアップロードします [root@mysql-multi ~]# yum install libaio lrzsz tree net-tools -y
[root@mysql-multi ~]# ls
mysql-community-client-5.7.34-1.el7.x86_64.rpm mysql-community-libs-5.7.34-1.el7.x86_64.rpm
mysql-community-common-5.7.34-1.el7.x86_64.rpm mysql-community-server-5.7.34-1.el7.x86_64.rpm

# インストール操作は [root@mysql-multi ~]# rpm -ivh mysql-community-common-5.7.34-1.el7.x86_64.rpm の順番で実行する必要があります
[root@mysql-multi ~]# rpm -ivh mysql-community-libs-5.7.34-1.el7.x86_64.rpm
[root@mysql-multi ~]# rpm -ivh mysql-community-client-5.7.34-1.el7.x86_64.rpm
[root@mysql-multi ~]# rpm -ivh mysql-community-server-5.7.34-1.el7.x86_64.rpm

[root@mysql-multi ~]# yum list インストール済み | grep mysql
mysql-community-client.x86_64 5.7.34-1.el7 がインストール済み
mysql-community-common.x86_64 5.7.34-1.el7 がインストール済み
mysql-community-libs.x86_64 5.7.34-1.el7 がインストール済み
mysql-community-server.x86_64 5.7.34-1.el7 がインストール済み

# インスタンスディレクトリを作成 [root@mysql-multi ~]# mkdir -p /data/app/mysql/{3306,3307}
[root@mysql-multi ~]# mkdir -p /data/app/mysql/3306/{data,binlog,logs}
[root@mysql-multi ~]# mkdir -p /data/app/mysql/3307/{data,binlog,logs}
[root@mysql-multi ~]# ツリー /data/app/mysql/
/データ/アプリ/mysql/
├── 3306
│ ├── バイナリログ
│ ├── データ
│ └── ログ
└── 3307
    ├── バイナリログ
    ├── データ
    └── ログ

# ディレクトリ所有者グループを設定する [root@mysql-multi ~]# chown -R mysql:mysql /data/app/mysql
[root@mysql-multi ~]# ls -ld /data/app/mysql
drwxr-xr-x. 4 mysql mysql 30 7月 29 18:39 /data/app/mysql
[root@mysql-multi ~]# ls -ld /data/app
drwxr-xr-x. 3 ルート ルート 19 7月 29 18:39 /data/app

# 新しい設定ファイル my3306.cnf を追加します
[root@mysql-multi ~]# mv /etc/my.cnf /etc/my.cnf_bak
[root@mysql-multi ~]# cat /etc/my3306.cnf
[mysqld]
ユーザー = mysql
ポート = 3306
サーバーID = 3306
データディレクトリ = /data/app/mysql/3306/data
ソケット = /data/app/mysql/3306/mysql3306.sock
シンボリックリンク = 0
ログエラー = /data/app/mysql/3306/logs/mysqld3306.log
pid ファイル = /data/app/mysql/3306/mysqld3306.pid

# 新しい設定ファイル my3307.cnf を追加します
[root@mysql-multi ~]# cp /etc/my3306.cnf /etc/my3307.cnf
[root@mysql-multi ~]# sed -i 's/3306/3307/g' /etc/my3307.cnf
[root@mysql-multi ~]# cat /etc/my3307.cnf
[mysqld]
ユーザー = mysql
ポート = 3307
サーバーID = 3307
データディレクトリ = /data/app/mysql/3307/data
ソケット = /data/app/mysql/3307/mysql3307.sock
シンボリックリンク = 0
ログエラー = /data/app/mysql/3307/logs/mysqld3307.log
pid ファイル = /data/app/mysql/3307/mysqld3307.pid

# mysql 起動サービス ファイルをバックアップします [root@mysql-multi ~]# mv /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service_bak
# mysqld3306.service スタートアップファイルを追加します [root@mysql-multi ~]# cat /usr/lib/systemd/system/mysqld3306.service
[ユニット]
説明=MySQL サーバー
ドキュメント=man:mysqld(8)
ドキュメント=http://dev.mysql.com/doc/refman/en/using-systemd.html
後=ネットワーク.ターゲット
後=syslog.target
[インストール]
WantedBy=マルチユーザー.ターゲット
[サービス]
ユーザー=mysql
グループ=mysql
タイプ=フォーク
PIDファイル=/data/app/mysql/3306/mysqld3306.pid
タイムアウト秒数=0
権限開始のみ=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3306 3306
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3306.cnf --daemonize --pid-file=/data/app/mysql/3306/mysqld3306.pid $MYSQLD_OPTS
環境ファイル=-/etc/sysconfig/mysql
制限NOFILE = 5000
再起動=失敗時
再起動防止終了ステータス=1
プライベートTmp=偽

# mysqld3307.service スタートアップファイルを追加します [root@mysql-multi ~]# cp /usr/lib/systemd/system/mysqld3306.service /usr/lib/systemd/system/mysqld3307.service
[root@mysql-multi ~]# sed -i 's/3306/3307/g' /usr/lib/systemd/system/mysqld3307.service
[root@mysql-multi ~]# cat /usr/lib/systemd/system/mysqld3307.service
[ユニット]
説明=MySQL サーバー
ドキュメント=man:mysqld(8)
ドキュメント=http://dev.mysql.com/doc/refman/en/using-systemd.html
後=ネットワーク.ターゲット
後=syslog.target
[インストール]
WantedBy=マルチユーザー.ターゲット
[サービス]
ユーザー=mysql
グループ=mysql
タイプ=フォーク
PIDファイル=/data/app/mysql/3307/mysqld3307.pid
タイムアウト秒数=0
権限開始のみ=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3307 3307
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3307.cnf --daemonize --pid-file=/data/app/mysql/3307/mysqld3307.pid $MYSQLD_OPTS
環境ファイル=-/etc/sysconfig/mysql
制限NOFILE = 5000
再起動=失敗時
再起動防止終了ステータス=1
プライベートTmp=偽

# 複数のインスタンスを初期化する 3306, 3307
[root@mysql-multi ~]# mysqld --defaults-file=/etc/my3306.cnf --initialize --user=mysql --datadir=/data/app/mysql/3306/data
[root@mysql-multi ~]# mysqld --defaults-file=/etc/my3307.cnf --initialize --user=mysql --datadir=/data/app/mysql/3307/data

# 複数のインスタンスを起動 3306, 3307
[root@mysql-multi ~]# systemctl start mysqld3306
[root@mysql-multi ~]# systemctl start mysqld3307
[root@mysql-multi ~]# netstat -nutpl | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 128270/mysqld
tcp6 0 0 :::3307 :::* 128328/mysqldを聴く
[root@mysql-multi ~]# ps -ef | grep mysql
mysql 128270 1 1 11:43 ? 00:00:00 /usr/sbin/mysqld --defaults-file=/etc/my3306.cnf --daemonize --pid-file=/data/app/mysql/3306/mysqld3306.pid
mysql 128328 1 1 11:43 ? 00:00:00 /usr/sbin/mysqld --defaults-file=/etc/my3307.cnf --daemonize --pid-file=/data/app/mysql/3307/mysqld3307.pid
ルート 128373 949 0 11:43 pts/0 00:00:00 grep --color=auto mysql

============================================= 【MySQLインスタンスをもう一つ追加】========================================================================
# ディレクトリを作成し、所有者とグループを設定します [root@mysql-multi ~]# mkdir -p /data/app/mysql/3308/{data,binlog,logs}
[root@mysql-multi ~]# chown -R mysql:mysql /data/app/mysql/3308
[root@mysql-multi ~]# ls -ld /data/app/mysql/3308
drwxr-xr-x. 5 mysql mysql 44 8月5日 14:45 /data/app/mysql/3308

# 新しい設定ファイル my3308.cnf を追加します
[root@mysql-multi ~]# cp /etc/my3306.cnf /etc/my3308.cnf
[root@mysql-multi ~]# sed -i 's/3306/3308/g' /etc/my3308.cnf
[root@mysql-multi ~]# cat /etc/my3308.cnf
[mysqld]
ユーザー = mysql
ポート = 3308
サーバーID = 3308
データディレクトリ = /data/app/mysql/3308/data
ソケット = /data/app/mysql/3308/mysql3308.sock
シンボリックリンク = 0
ログエラー = /data/app/mysql/3308/logs/mysqld3308.log
pid ファイル = /data/app/mysql/3308/mysqld3308.pid

# mysqld3308.service スタートアップファイルを追加します [root@mysql-multi ~]# cp /usr/lib/systemd/system/mysqld3306.service /usr/lib/systemd/system/mysqld3308.service
[root@mysql-multi ~]# sed -i 's/3306/3308/g' /usr/lib/systemd/system/mysqld3308.service
[root@mysql-multi ~]# cat /usr/lib/systemd/system/mysqld3308.service
[ユニット]
説明=MySQL サーバー 3308
ドキュメント=man:mysqld(8)
ドキュメント=http://dev.mysql.com/doc/refman/en/using-systemd.html
後=ネットワーク.ターゲット
後=syslog.target
[インストール]
WantedBy=マルチユーザー.ターゲット
[サービス]
ユーザー=mysql
グループ=mysql
タイプ=フォーク
PIDファイル=/data/app/mysql/3308/mysqld3308.pid
タイムアウト秒数=0
権限開始のみ=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3308 3308
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3308.cnf --daemonize --pid-file=/data/app/mysql/3308/mysqld3308.pid $MYSQLD_OPTS
環境ファイル=-/etc/sysconfig/mysql
制限NOFILE = 5000
再起動=失敗時
再起動防止終了ステータス=1
プライベートTmp=偽

# 複数のインスタンスを初期化する 3308
[root@mysql-multi ~]# mysqld --defaults-file=/etc/my3308.cnf --initialize --user=mysql --datadir=/data/app/mysql/3308/data

# 複数のインスタンスを起動する 3308
[root@mysql-multi ~]# systemctl start mysqld3308
[root@mysql-multi ~]# netstat -nutpl | grep mysql
tcp6 0 0 :::3306 :::* 5062/mysqldを聴く
tcp6 0 0 :::3307 :::* 5098/mysqldを聴く
tcp6 0 0 :::3308 :::* 5189/mysqldを聴く
[root@mysql-multi ~]# ps -ef |grep mysql
mysql 5062 1 0 14:43 ? 00:00:01 /usr/sbin/mysqld --defaults-file=/etc/my3306.cnf --daemonize --pid-file=/data/app/mysql/3306/mysqld3306.pid
mysql 5098 1 0 14:44 ? 00:00:01 /usr/sbin/mysqld --defaults-file=/etc/my3307.cnf --daemonize --pid-file=/data/app/mysql/3307/mysqld3307.pid
mysql 5189 1 4 14:57 ? 00:00:01 /usr/sbin/mysqld --defaults-file=/etc/my3308.cnf --daemonize --pid-file=/data/app/mysql/3308/mysqld3308.pid

ソースコードのコンパイルとインストール方法は次のとおりです。

MySQL ダウンロード: https://downloads.mysql.com/archives/community

Boost ダウンロード: https://sourceforge.net/projects/boost/files/boost/1.59.0

MySQL の複数のインスタンス: https://dev.mysql.com/doc/refman/5.7/en/multiple-servers.html

# 依存パッケージとコンパイルソフトウェア [root@mysql-multi ~]# yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel libaio-devel wget lrzsz tree
[root@mysql-multi ~]# rpm -qa ncurses-devel libaio-devel
libaio-devel-0.3.109-13.el7.x86_64
ncurses-devel-5.9-14.20130511.el7_4.x86_64

# ソースコード パッケージをダウンロードしてアップロードし、解凍してコンパイルし、インストールします (メモリが 8G 以上あることが推奨されます)
ls[root@mysql-multi ~]# ls
boost_1_59_0.tar.gz mysql-boost-5.7.34.tar.gz
[root@mysql-multi ~]# tar xf boost_1_59_0.tar.gz
[root@mysql-multi ~]# tar xf mysql-boost-5.7.34.tar.gz
[root@mysql-multi ~]# ls
boost_1_59_0 boost_1_59_0.tar.gz mysql-5.7.34 mysql-boost-5.7.34.tar.gz
[root@mysql-multi ~]# cd mysql-5.7.34/
[root@mysql-multi mysql-5.7.34]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8mb4 \
-DENABLED_LOCAL_INFILE=1 -DWITH_SYSTEMD=1 -DWITH_BOOST=/root/boost_1_59_0 -DEXTRA_CHARSETS=すべて
......
......最後に以下が表示されれば完了です-- CMAKE_SHARED_LINKER_FLAGS
-- 設定完了
-- 生成完了
-- ビルド ファイルは /root/mysql-5.7.34 に書き込まれました

オプションの説明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql # mysql インストール ディレクトリ -DDEFAULT_CHARSET=utf8mb4 # データベースのデフォルトの文字エンコード -DENABLED_LOCAL_INFILE=1 # このファイルからのデータのインポートを許可する -DWITH_SYSTEMD=1 # systemd スクリプトを提供する -DWITH_BOOST=/root/boost_1_59_0 # boost ソース パス -DEXTRA_CHARSETS=all # すべての文字セットをインストールする [root@mysql-multi mysql-5.7.34]#make -j 4 && make install # make -j 4 は CPU4 コアを同時にコンパイルすることを意味します: cat /proc/cpuinfo|grep "processor"|wc -l
......
......最後に以下の内容が表示されれば完了です-- Up-to-date: /usr/local/app/mysql/mysql-test/mysql-test-run
-- インストール中: /usr/local/app/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- 最新: /usr/local/app/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- インストール中: /usr/local/app/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- インストール中: /usr/local/app/mysql/support-files/mysqld_multi.server
-- インストール中: /usr/local/app/mysql/support-files/mysql-log-rotate
-- インストール中: /usr/local/app/mysql/support-files/magic
-- インストール中: /usr/local/app/mysql/share/aclocal/mysql.m4
-- インストール中: /usr/local/app/mysql/support-files/mysql.server

# インスタンスディレクトリを作成 [root@mysql-multi ~]# mkdir -p /data/app/mysql/{3306,3307}/{data,binlog,logs}
[root@mysql-multi ~]# ツリー /data/app/mysql
/データ/アプリ/mysql
├── 3306
│ ├── バイナリログ
│ ├── データ
│ └── ログ
└── 3307
    ├── バイナリログ
    ├── データ
    └── ログ

# ユーザーを作成し、ディレクトリ所有者グループを設定します [root@mysql-multi ~]# useradd -M -r -s /sbin/nologin mysql
[root@mysql-multi ~]# chown -R mysql:mysql /data/app/mysql
[root@mysql-multi ~]# ls -ld /data/app/mysql
drwxr-xr-x. 4 mysql mysql 30 Aug 5 12:17 /data/app/mysql

# 新しい設定ファイル my3306.cnf を追加します
[root@mysql-multi ~]# mv /etc/my.cnf /etc/my.cnf_bak
[root@mysql-multi ~]# cat /etc/my3306.cnf
[mysqld]
ユーザー = mysql
ポート = 3306
サーバーID = 3306
ベースディレクトリ = /usr/local/mysql
データディレクトリ = /data/app/mysql/3306/data
ソケット = /data/app/mysql/3306/mysql3306.sock
シンボリックリンク = 0
ログエラー = /data/app/mysql/3306/logs/mysqld3306.log
pid ファイル = /data/app/mysql/3306/mysqld3306.pid
文字セットサーバー = utf8
デフォルトのストレージエンジン = INNODB

# 新しい設定ファイル my3307.cnf を追加します
[root@mysql-multi ~]# cp /etc/my3306.cnf /etc/my3307.cnf
[root@mysql-multi ~]# sed -i 's/3306/3307/g' /etc/my3307.cnf
[root@mysql-multi ~]# cat /etc/my3307.cnf
[mysqld]
ユーザー = mysql
ポート = 3307
サーバーID = 3307
ベースディレクトリ = /usr/local/mysql
データディレクトリ = /data/app/mysql/3307/data
ソケット = /data/app/mysql/3307/mysql3307.sock
シンボリックリンク = 0
ログエラー = /data/app/mysql/3307/logs/mysqld3307.log
pid ファイル = /data/app/mysql/3307/mysqld3307.pid
文字セットサーバー = utf8
デフォルトのストレージエンジン = INNODB

# インストール後の標準化操作(環境変数の設定、ヘッダーファイルとライブラリファイルの出力、manパスの設定)
[root@mysql-multi ~]# echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile.d/mysql.sh
[root@mysql-multi ~]# chmod +x /etc/profile.d/mysql.sh
[root@mysql-multi ~]# ソース /etc/profile.d/mysql.sh
[root@mysql-multi ~]# echo "MANPATH /usr/local/mysql/man" >> /etc/man.config
[root@mysql-multi ~]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
[root@mysql-multi ~]# ldconfig
[root@mysql-multi ~]# ln -s /usr/local/mysql/include /usr/include/mysql

# systemd モードでインスタンス 3306 と 3307 を追加します [root@mysql-multi ~]# cat /usr/lib/systemd/system/mysqld3306.service
[ユニット]
説明=MySQL サーバー
ドキュメント=man:mysqld(8)
ドキュメント=http://dev.mysql.com/doc/refman/en/using-systemd.html
後=ネットワーク.ターゲット
後=syslog.target
[インストール]
WantedBy=マルチユーザー.ターゲット
[サービス]
ユーザー=mysql
グループ=mysql
タイプ=フォーク
PIDファイル=/data/app/mysql/3306/mysqld3306.pid
タイムアウト秒数=0
権限開始のみ=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3306 3306
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3306.cnf --daemonize --pid-file=/data/app/mysql/3306/mysqld3306.pid $MYSQLD_OPTS
環境ファイル=-/etc/sysconfig/mysql
制限NOFILE = 5000
再起動=失敗時
再起動防止終了ステータス=1
プライベートTmp=偽

[root@mysql-multi ~]# cp /usr/lib/systemd/system/mysqld3306.service /usr/lib/systemd/system/mysqld3307.service
[root@mysql-multi ~]# sed -i 's/3306/3307/g' /usr/lib/systemd/system/mysqld3307.service
[root@mysql-multi ~]# cat /usr/lib/systemd/system/mysqld3307.service
[ユニット]
説明=MySQL サーバー
ドキュメント=man:mysqld(8)
ドキュメント=http://dev.mysql.com/doc/refman/en/using-systemd.html
後=ネットワーク.ターゲット
後=syslog.target
[インストール]
WantedBy=マルチユーザー.ターゲット
[サービス]
ユーザー=mysql
グループ=mysql
タイプ=フォーク
PIDファイル=/data/app/mysql/3307/mysqld3307.pid
タイムアウト秒数=0
権限開始のみ=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3307 3307
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --daemonize --pid-file=/data/app/mysql/3307/mysqld3307.pid $MYSQLD_OPTS
環境ファイル=-/etc/sysconfig/mysql
制限NOFILE = 5000
再起動=失敗時
再起動防止終了ステータス=1
プライベートTmp=偽

# インスタンス 3306、3307 を初期化します
[root@mysql-multi ~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my3306.cnf --initialize --basedir=/usr/local/mysql --user=mysql --datadir=/data/app/mysql/3306/data
[root@mysql-multi ~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --initialize --basedir=/usr/local/mysql --user=mysql --datadir=/data/app/mysql/3307/data

# インスタンス 3306、3307 サービスを開始します (start|stop|restart|status)
[root@mysql-multi ~]# systemctl start mysqld3306
[root@mysql-multi ~]# systemctl start mysqld3307
[root@mysql-multi ~]# netstat -nuptl | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 27165/mysqld
tcp6 0 0 :::3307 :::* 27201/mysqldを聴く
[root@mysql-multi ~]# ps -ef | grep mysql
mysql 27165 1 2 17:03 ? 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my3306.cnf --daemonize --pid-file=/data/app/mysql/3306/mysqld3306.pid
mysql 27201 1 2 17:03 ? 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --daemonize --pid-file=/data/app/mysql/3307/mysqld3307.pid

MySQL インスタンスのパスワードを変更し、ログインをテストします。

# インスタンスの初期パスワードを取得します [root@mysql-multi ~]# grep 'temporary password' /data/app/mysql/3306/logs/mysqld3306.log
2021-08-05T08:52:37.904630Z 1 [注記] root@localhost の一時パスワードが生成されます: ,&YrsLryq3Ll

[root@mysql-multi ~]# grep '一時パスワード' /data/app/mysql/3307/logs/mysqld3307.log
2021-08-05T08:52:48.082526Z 1 [注] root@localhost の一時パスワードが生成されます: OvxKu,su=4O1

# インスタンスのパスワードを変更する [root@mysql-multi ~]# mysqladmin -p -S /data/app/mysql/3306/mysql3306.sock password
パスワードを入力してください: # 初期パスワードを入力してください 新しいパスワード: # 新しいパスワードを入力してください 123456
新しいパスワードの確認: # 新しいパスワード 123456 をもう一度入力してください

--------------------------------------------------------------------------------------
# またはシェル> mysql -uroot -p /data/app/mysql/3306/mysql3306.sock
mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。
--------------------------------------------------------------------------------------

[root@mysql-multi ~]# mysqladmin -p -S /data/app/mysql/3306/mysql3307.sock パスワード
パスワードを入力してください: # 初期パスワードを入力してください 新しいパスワード: # 新しいパスワード 654321 を入力してください
新しいパスワードの確認: # 新しいパスワード 654321 をもう一度入力してください

# ログインをテストする [root@mysql-multi ~]# mysql -uroot -p -S /data/app/mysql/3306/mysql3306.sock
パスワードを入力してください: # パスワード 123456 を入力してください
[root@mysql-multi ~]# mysql -uroot -p -S /data/app/mysql/3307/mysql3307.sock
パスワードを入力してください: # パスワード 654321 を入力してください

# インスタンスを停止します [root@mysql-multi ~]# mysqladmin -uroot -p -S /data/app/mysql/3306/mysql3306.sock シャットダウン
パスワードを入力してください: # パスワード 123456 を入力してください
[root@mysql-multi ~]# mysqladmin -uroot -p -S /data/app/mysql/3307/mysql3307.sock シャットダウン
パスワードを入力してください: # パスワード 654321 を入力してください

この時点で、MySQL の複数インスタンスが実装されました。

Linux での MySQL マルチインスタンス展開記録に関するこの記事はこれで終わりです。MySQL マルチインスタンス展開に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル
  • Linux 環境に MySQL 8.0 をインストールするプロセスの紹介
  • Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順
  • Linux での MySQL のインストールに関するチュートリアル
  • Linux での MySQL 8.0.25 のインストールと設定のチュートリアル
  • mysql8.0.23 Linux (centos7) のインストールの完全かつ詳細なチュートリアル
  • Linux環境にMySQLデータベースをインストールする詳細なチュートリアル
  • Linux で mysql-8.0.20 をインストールするための詳細なチュートリアル
  • Linux システム MySQL8.0.19 クイックインストールと構成チュートリアル図
  • Linux Centos7 に mysql8 をインストールするチュートリアル
  • Linux環境にMySQLデータベースをインストールする

<<:  Ubuntu Dockerのインストールと使い方

>>:  CSS を使用して HTML フォーム コントロールを美しくする詳細な例 (フォームの美化)

推薦する

Dockerの動作モードと原理の詳細な説明

次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...

入力タイプ=テキスト値=str を使用するための不完全なソリューション

今日、非常に奇妙な問題に遭遇しました。次のコードを見てください。 SimpleDateFormat ...

webpackでCSSを分割・圧縮し、リンクでインポートする手順

まずコードファイルの構造を見てみましょう。エントリファイル (index1.js) の内容: ...

jQueryは何に使われるのですか?jQueryは実際にはjsフレームワークです

jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...

Linux の操作とメンテナンスの基本的なスワップ パーティションと LVM 管理のチュートリアル

目次1. スワップパーティション SWAP 1.1 スワップファイルを作成する1.2 スワップパーテ...

Node.js を使用してパスワード ジェネレータを作成するための完全な手順

目次1. 準備2. コマンドラインの記述2.1 バージョンと説明を追加する2.2 パスワードの長さを...

ab ツールを使用してサーバー上で API ストレス テストを実行します。

目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...

MySQL シャーディングの詳細

1. ビジネスシナリオの紹介MySQLを使用する電子商取引システムがあるとします。大量のデータを保存...

mysql は sql ファイルを実行し、エラーを報告します エラー: 不明なストレージ エンジン 'InnoDB' ソリューション

問題を見つける最近、仕事で問題が発生しました。InnoDB タイプの SQL ファイルを実行すると、...

OCSP を有効にすると、https 証明書の検証効率が向上し、Let's Encrypt SSL 証明書へのアクセスが遅くなる問題が解決されます。

ここ数日、ウェブサイトを初めて開いたときにアクセスが非常に遅いのですが、その後はページが正常に開きま...

VueはWebSocketを使用してチャット機能をシミュレートします

この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...

CentOS 7 で MySQL 5.7 をインストールして設定する

この記事では、以下の環境をテストします。 CentOS 7 64 ビット 最小 MySQL 5.7 ...

Linux で開いているファイルが多すぎる問題を解決する方法

原因は、プロセスが特定の時点でシステム制限を超える数のファイルと通信リンクを開くことです。 システム...

JavaScriptにおけるこのポインティング問題の詳細な説明

序文信じてください。この記事の 7️⃣ ステップを覚えておけば、JS の this リファレンスを完...