目次
序文
kubesphere を使用して k8s mysql クラスターをデプロイします。
1. 準備
エンタープライズ スペース、プロジェクト、アカウント、およびロールを作成する必要があります。詳細については、「エンタープライズ スペース、プロジェクト、アカウント、およびロールの作成」を参照して、KubeSphereのマルチテナンシー機能を使用してさまざまなレベルできめ細かいアクセス制御を実行する方法を学習してください。https://v3-1.docs.kubesphere.io/zh/docs/quick-start/create-workspace-and-project/ は非常に簡単で、手順に従うだけです。
2. サービスを作成する
1. ストレージボリュームを作成する
- まず、mysql データを保存するストレージを作成し、左側でストレージ管理を選択します-ストレージボリューム-作成
- 名前を入力します (オプション) 「次へ」をクリックします
- デフォルトに従い、容量を選択し(ここでは 10G を選択します)、「次へ」をクリックします。
- 図に示すように、作成が完了したら、直接クリックして作成します。
2. キーを作成する
- 左側のナビゲーション バーで [構成センター]-[キー]-[作成] を選択し、基本情報を入力して、[次へ] をクリックします。
- キー設定
注: キーの名前は、mysql の起動時に設定する必要があるデフォルトのパスワードの環境変数名であり、docker の起動時の -e パラメータと同じです。値は設定するパスワードで、右下隅の「✔」をクリックして「作成」をクリックします。
- 正常に作成されたら、キーをクリックすると、パスワードが暗号化されることが確認できます。
3. 設定の作成 (メイン mysql)
- 左側のナビゲーション バーで、[構成センター] - [構成] - [作成] を選択し、基本情報を入力して、[次へ] をクリックします。
- 構成設定を入力します
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
secure_file_priv=/var/lib/mysql
server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=mymall
binlog-do-db=wallpaper
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
設定: この設定はメインmysqlの設定であり、メインmysqlのserver_id=1とread-only=0が読み書きできる設定となっています。
binlog-do-db=mymall、binlog-do-db=wallpaper は、マスター/スレーブ同期が必要なライブラリ名です。
レプリケート無視データベース=。。。つまり、マスター/スレーブ同期を必要としないライブラリの名前です。
注: mysql バージョン 8.0 以降を使用している場合は、設定 secure_file_priv=/var/lib/mysql を設定ファイルに追加する必要があります。追加しないと、mysql はエラーを報告し、起動に失敗します。
4. 構成を作成します (mysql から)
- 構成ファイルを作成します。手順は前と同じです。ファイルをここに投稿します。
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
secure_file_priv=/var/lib/mysql
server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=mymall
binlog-do-db=wallpaper
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
注: 主な違いは、server_id=2; read-only=1 がライブラリからの読み取り専用であることです。
- スレーブデータボリュームを作成する
データボリュームを作成する手順は上記と同じです。
5. サービスを作成する
マスター mysql とスレーブ mysql を作成する手順は同じですが、それぞれの構成ファイルとデータ ボリュームを選択することが異なります。
- 左側のナビゲーション バーで [Application Load]、[Service]、[Create] の順に選択します。
- 基本情報を入力し、「次へ」をクリックします
- コンテナー イメージの設定、コピー数: 1 コンテナー イメージ mysql:8.0.26; クリックしてデフォルト ポートを使用します
CPU メモリ使用量を構成する
環境変数を確認し、以前に作成したキーを選択します
- ストレージをマウントする
構成ファイルまたはキーをマウントします
構成ファイルを選択し、マウント モードを読み取り/書き込みとして選択し、マウント パスを /etc/mysql として選択します。
注: ここで選択したマウント モードは、読み取り専用またはマウント不可のみにすることができます。右上隅の編集モードに入り、ファイルの読み取り専用を false に変更できます。
次に、右上隅をもう一度クリックして編集モードを閉じます。
ストレージボリュームを追加する
ヒント: mysql データは /var/lib/mysql ディレクトリに保存されているため、ストレージ ボリュームをこの場所にマウントします。実際、これは docker のマウントと同等です。
- 高度な設定、
セッション永続性を有効にする (オプション)
- 作成
左側の DNS は後で使用することに注意してください。
3. マスターとスレーブの同期
1. マスターからスレーブへの承認済みアカウント
- mysqlに接続する
MySQLにログインする
mysql -uroot -ppassword
パスワードはあなたのパスワードです。これはキーを構成するときに設定されたパスワードです。
mysql8.0 にログインできない場合は、この記事をお読みください 。Mysql8.0.13 ログイン レポート 1045 (28000) error_fen_fen のコラム - CSDN ブログ
- 同期するユーザーを設定する
mysql 5.x
#mysql 5.x
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456'
mysql 8.x
#mysql 8.x
CREATE USER backup IDENTIFIED BY '123456';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'backup'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'backup'@'%' ;
FLUSH PRIVILEGES;
mysql 8.x の場合は、引き続き次の操作を実行します。
mysql.user からホスト、ユーザー、プラグイン、認証文字列を選択します。
ユーザーパスワードを更新する
#ホストがローカルホストの場合は、
ALTER USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; を使用します。#ホストが % の場合:
ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 権限を更新します
FLUSH PRIVILEGES;
マスターのステータスを表示する
show master status;
クエリされたファイルの名前、mysql-bin.000002 を覚えておいてください。
2. メインライブラリ接続をセットアップする
- ライブラリからmysqlにログインします
- マスターとスレーブの接続を設定する
# 设置主从链接
change master to master_host='mysql-master.mall-swarm-project',master_user='backup',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=0,master_port=3306;
master_host: マスター mysql の DNS アドレス
master_user、master_password: 前の手順で設定したユーザー名とパスワード、
master_log_file: 前の手順で照会したファイル名
- ライブラリから同期を開始する
start slave;
- スレーブのステータスを表示する
show slave status\G;
赤いボックス内の 2 つの「はい」は、マスターとスレーブの同期が成功したことを意味します。
ヒント: マスターとスレーブの同期をキャンセルしたい場合は、「スレーブを停止」、「スレーブをすべてリセット」、「スレーブをすべてリセット」を実行する必要があります。
その後、再度 show smile status\G を実行し、結果が空セットであれば、解放は成功です。
4. マスターとスレーブの同期を確認する
メインのmysqlにデータベースを作成し、mysqlからデータベースが同期されているか確認します。