よく発生するビジネス シナリオは、複数のユニットがクラウド サーバーを共有し、個別のデータベースを使用するというものですが、結局のところ、提供されるリソースは限られているため、現時点では、この問題を解決するには 1 台のマシン上に複数の MySQL インスタンスが必要です。
1、MySQLユーザーアカウントを作成する
複数のデータベースで異なるアカウントとパスワードを作成できます。ここでは単に mysql ユーザーを例に挙げます。
groupadd mysqluseradd -g mysql -M -s /sbin/nologin mysql2、MySQLをダウンロードしてインストールします
下载地址https://downloads.mysql.com/archives/community/

バイナリファイルを解凍し、指定したディレクトリに移動します
tar -xvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql3、設定ファイルとデータディレクトリを作成する
3 つのデータ ディレクトリを作成する
mkdir -pv /data/{3006,3007,3008}/datatree /data//data/├── 3306│ └── data├── 3307│ └── data└── 3308 └── data設定ファイルを作成する
/data/3306/my.cnf
/data/3307/my.cnf
/data/3308/my.cnf
my.cnfの設定内容は以下の通りです
[mysql]default-character-set = utfeport = 3306socket = /data/3306/mysql.sock
[mysqld]user = mysqllog-bin = mysql-binport = 3306
socket = /data/3306/mysql.sockbasedir = /usr/local/mysqldatadir = /data/3306/data
character-set-server = utf8
pid-file = /data/3306/mysql.pidrelay-log = /data/3306/relay-binrelay-log-info-file = /data/3306/relay-log.info
# Server IDserver-id = 1
# gtidgtid_mode = onenforce-gtid-consistency = true
log-slave-updates = on
skip_slave_start = 1
# Relay.infoをデータテーブルに記録するrelay_log_info_repository = TABLE
# master.infoをデータテーブルに記録するmaster_info_repository = TABLE
[mysqld_safe]log-error = /data/3306/mysql_3306.errpid-file = /data/3306/mysqld.pid⚠️ 注意 他の 2 つのインスタンスにコピーし、ポート 3307 と 3308 の変更に注意してください。font color=red>server-id数字はずらして表示する必要があります
4、認可と初期化
Mysqlデータディレクトリのユーザー権限を追加する
chown -R mysql:mysql /data
複数のインスタンスの初期化
cd /usr/local/mysql/bin./mysqld --initialize --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql./mysqld --initialize --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql./mysqld --initialize --basedir=/usr/local/mysql --datadir=/data/3308/data --user=mysql
# 初期化中に出力される情報の最後の行の最後には、MySql のログイン パスワードが記載されていますので、必ず保存してください5、MySQL 環境変数と systemd 管理を追加する
MySQL環境変数を追加する
echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.shsource /etc/profilesystemd管理を追加
cat > /etc/systemd/system/mysql-3306.service <<EOF[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target
[Service]User=mysqlGroup=mysqlExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnfLimitNOFILE = 5000
[Install]WantedBy=multi-user.targetEOF
cat > /etc/systemd/system/mysql-3307.service <<EOF[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target
[Service]User=mysqlGroup=mysqlExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnfLimitNOFILE = 5000
[Install]WantedBy=multi-user.targetEOF
cat > /etc/systemd/system/mysql-3308.service <<EOF[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target
[Service]User=mysqlGroup=mysqlExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3308/my.cnfLimitNOFILE = 5000
[Install]WantedBy=multi-user.targetEOF6、起動時に自動開始サービスを開始して設定する
systemctl start mysql-3306.servicesystemctl start mysql-3307.servicesystemctl start mysql-3308.servicesystemctl enable mysql-3306.servicesystemctl enable mysql-3307.servicesystemctl enable mysql-3308.service7、データベースへのログイン
[root@localhost ~]#m mysql -S /data/3306/mysql.sock -u root -P 3306 -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3Server version: 5.7.37-log MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement⚠️ 注意 ログインパラメータに注意してください:
- -S ソケットを使用しています
- -h 127.0.0.1 や localhost などの IP を使用します
- -u ログインユーザー名です
- -P 単一インスタンスの場合はポート番号を指定する必要はありません。複数のインスタンスの場合はポート番号を指定する必要があります
- -p パスワードパラメータを入力します(大文字と小文字が区別されることに注意してください。上記は大文字のP、これは小文字のpです)
初めて MySQL にログインする場合は、パスワードを変更する必要があります。変更しないと、データベースを操作する権限が得られません
データベースユーザーのログインパスワードを変更し、上記の操作に従います
mysql> set password for root@localhost = password( '123456' );Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>quitBye
# 再度ログインしてデータベース操作を実行すると、正常に動作しますmysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)Mysql の複数のインスタンスを 1 台のマシンにデプロイする
https://huoshen.pages.dev/ja/p/b6b09b15/