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 フォーム コントロールを美しくする詳細な例 (フォームの美化)

推薦する

HTML における if 判断の使用

Django Web開発の過程で、HTMLを書く際にバックエンドから同じ名前のリスト変数が渡されるが...

ローカル yum ソースの設定、国内 yum ソースの設定、epel ソースの設定を行う Linux の手順

1. ローカルyumソースを設定する1. ISOイメージをマウントする マウント -o loop /...

背景とリンクとして画像を書き込む方法(背景画像+リンク)

写真を背景にしてリンクを記載します。たとえば、ウェブサイトのロゴ画像などです。例: ポテトのロゴ画像...

モバイルデバイス上のぼやけた小さなアイコンの問題を解決する方法

序文以前、画像とテキストの垂直方向のずれの問題について説明しました。ここで示した小さな例では、小さな...

Linux 上の Tomcat で MySQL にデータを挿入するときに中国語の文字化けが発生する問題を解決する

1. 問題Windows 上の Eclipse を使用して開発されたプロジェクトは Windows ...

角度でechartsマップを使用する詳細な説明

目次echartの初期化アプリベースチャートコンポーネントhtml CS app-base-char...

CentOS に Redis と MySQL をインストールする

1|0MySQL(MariaDB) 1|11. 説明MariaDB データベース管理システムは My...

垂直グリッドと漸進的な行間隔の例

新しい質問急いで来て、急いで行ってください。 「垂直グリッドとプログレッシブ行間隔 (パート 1)」...

Centos 7にmysql5.7.24バイナリバージョンをインストールする方法と解決方法

MySQLバイナリのインストール方法mysqlをダウンロード参考: 1. パッケージを解凍する ta...

Vue3のサンドボックスの仕組みの詳しい説明

目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する序文vue3サンドボックスには主...

Linux仮想マシンの静的IPアドレスを構成するための手順を完了します

序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...

ファイルアップロードスタイルの詳細を実装するjs

目次1. 概要2. オブジェクト作成のパラメータ3. 監視例4. 使用方法5. ソースコード1. 概...

Vueライフサイクル機能の詳細な説明

目次ライフサイクル関数一般的なライフサイクルフックVue のインスタンス破棄について:要約するライフ...

HTML での位置の使用に関する簡単な紹介

昨日 HTML を少し学んだばかりで、JD.com の検索バーを作るのが待ちきれませんでした。 作っ...

Apple 電卓の JS 実装

この記事の例では、Appleの電卓を実装するためのJSの具体的なコードを参考までに共有しています。具...