ProxySQL の読み取り/書き込みを構成から分離して使用する
使用目的は、Meituan-Dianping の DBProxy 読み取り/書き込み分離の使用方法の記事で説明されています。この記事では、ProxySQL の使用方法と DBProxy とのパフォーマンスの違いを紹介します。詳細な紹介については、公式 Web サイトの関連説明を参照してください。このミドルウェアは、percona が推奨するミドルウェアでもあります。機能は読み書きを分離する他のミドルウェアとあまり変わりません。詳細は記事内で紹介します。この記事では使用時の手順を簡単に紹介します。ヘルプについては公式 Wiki を参照してください。
環境:
ディストリビューターID: Ubuntu
説明: Ubuntu 14.04.5 LTS
リリース: 14.04コード名: trusty
ダウンロード
percona サイト:
https:// www.percona.com/downloads/proxysql /
github/公式 Web サイト:
https://github.com/sysown/proxysql/releases
まず環境を見てみましょう:
master:172.16.16.35:3306slave:172.16.16.35:3307slave:172.16.16.34:3307
MHA マネージャーは 172.16.16.34 にあり、設定ファイルは次のとおりです:
[root@localhost bin]# cat /etc/masterha/app1.cnf [server default] manager_log=/var/log/mha/app1/manager.log manager_workdir=/var/log/mha/app1.log master_binlog_dir=/home/mysql/db3306/log/master_ip_failover_script=/usr/local/bin/master_ip_failover master_ip_online_change_script=/usr/local/bin/master_ip_online_change password=123456ping_interval=1remote_workdir=/tmp repl_password=123456repl_user=root report_script=/usr/local/bin/send_report shutdown_script=""ssh_user=root user=root [server1] hostname=172.16.16.35port=3306[server2] candidate_master=1check_repl_delay=0hostname=172.16.16.34port=3306[server3] hostname=172.16.16.35port=3307
[root@localhost bin]# sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm[root@localhost bin]# yum install proxysql
Installed: proxysql.x86_64 0:1.3.7-1.1.el6 Complete!
[root@localhost bin]# find / -name proxysql/var/lib/proxysql/var/run/proxysql/etc/rc.d/init.d/proxysql/usr/bin/proxysql
[root@localhost bin]# cat /etc/proxysql-admin.cnf # proxysql admin interface credentials. export PROXYSQL_USERNAME="admin"export PROXYSQL_PASSWORD="admin"export PROXYSQL_HOSTNAME="localhost"export PROXYSQL_PORT="6032" # PXC admin credentials for connecting to pxc-cluster-node. export CLUSTER_USERNAME="admin"export CLUSTER_PASSWORD="admin"export CLUSTER_HOSTNAME="localhost"export CLUSTER_PORT="3306" # proxysql monitoring user. proxysql admin script will create this user in pxc to monitor pxc-nodes. export MONITOR_USERNAME="monitor"export MONITOR_PASSWORD="monit0r" # Application user to connect to pxc-node through proxysql export CLUSTER_APP_USERNAME="proxysql_user"export CLUSTER_APP_PASSWORD="passw0rd" # ProxySQL read/write hostgroup export WRITE_HOSTGROUP_ID="10"export READ_HOSTGROUP_ID="11" # ProxySQL read/write configuration mode. export MODE="singlewrite"
[root@localhost bin]# proxysql-admin --config-file=/etc/proxysql-admin.cnf --enable This script will assist with configuring ProxySQL (currently only Percona XtraDB cluster in combination with ProxySQL is supported) ProxySQL read/write configuration mode is singlewrite ProxySQL is not running; please start the proxysql service
[root@localhost bin]# service proxy proxy proxysql proxysql-admin proxysql_galera_checker proxysql_node_monitor [root@localhost bin]# service proxysql start Starting ProxySQL: DONE![root@localhost bin]# mysql -uadmin -padmin -h127.0.0.1 -P6032 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1Server version: 5.7.14 (ProxySQL Admin Module) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
次に、読み取りおよび書き込みマッピングを追加します (主に、MHA バックエンドが切り替えられたときに ProxySQL が自動的に切り替えられるようにするため):
[root@localhost bin]# find / -name proxysql.cnf/etc/proxysql.cnf
ProxySQL の監視アカウントを追加します:
[root@localhost bin]# mysql -uadmin -padmin -h127.0.0.1 -P6032 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2Server version: 5.7.14 (ProxySQL Admin Module) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases;+-----+---------+-------------------------------+ | seq | name | file | +-----+---------+-------------------------------+ | 0 | main | | | 2 | disk | /var/lib/proxysql/proxysql.db | | 3 | stats | | | 4 | monitor | | +-----+---------+-------------------------------+4 rows in set (0.00 sec) mysql> use admin Database changed mysql> show tables;+--------------------------------------+ | tables | +--------------------------------------+ | global_variables | | mysql_collations | | mysql_query_rules | | mysql_replication_hostgroups | | mysql_servers | | mysql_users | | runtime_global_variables | | runtime_mysql_query_rules | | runtime_mysql_replication_hostgroups | | runtime_mysql_servers | | runtime_mysql_users | | runtime_scheduler | | scheduler | +--------------------------------------+13 rows in set (0.00 sec)
監視アカウントを構成します (proxySQL で構成) 構成):
mysql> insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(100,'172.16.16.35',3306,1,1000,10,'test'); Query OK, 1 row affected (0.00 sec) mysql> insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(101,'172.16.16.34',3306,1,1000,10,'test'); Query OK, 1 row affected (0.00 sec) mysql> insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(101,'172.16.16.35',3307,1,1000,10,'test'); Query OK, 1 row affected (0.00 sec) mysql> select * from mysql_servers;+--------------+--------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ | hostgroup_id | hostname | port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment | +--------------+--------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ | 100 | 172.16.16.35 | 3306 | ONLINE | 1 | 0 | 1000 | 10 | 0 | 0 | test | | 101 | 172.16.16.34 | 3306 | ONLINE | 1 | 0 | 1000 | 10 | 0 | 0 | test | | 101 | 172.16.16.35 | 3307 | ONLINE | 1 | 0 | 1000 | 10 | 0 | 0 | test | +--------------+--------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+3 rows in set (0.00 sec)
次に、root: 123456 の最高権限を使用して設定します:
mysql> insert into mysql_replication_hostgroups values(100,101,'masterha') ; Query OK, 1 row affected (0.00 sec) mysql> select * from mysql_replication_hostgroups;+------------------+------------------+----------+ | writer_hostgroup | reader_hostgroup | comment | +------------------+------------------+----------+ | 100 | 101 | masterha | +------------------+------------------+----------+1 row in set (0.00 sec)
設定が完了したら、リロードを開始しますそして保存しています 設定:
mysql> GRANT SUPER, REPLICATION CLIENT ON *.* TO 'proxysql'@'172.16.16.%' IDENTIFIED BY 'proxysql'; Query OK, 0 rows affected, 1 warning (0.09 sec) mysql> flush privileges; Query OK, 0 rows affected (0.10 sec)
mysql> set mysql-monitor_username='proxysql'; Query OK, 1 row affected (0.00 sec) mysql> set mysql-monitor_password='proxysql'; Query OK, 1 row affected (0.00 sec) mysql> load mysql variables to runtime; Query OK, 0 rows affected (0.00 sec) mysql> save mysql variables to disk; Query OK, 74 rows affected (0.02 sec)
これまでの設定は完了です
mysql> insert into mysql_users(username,password,active,default_hostgroup,transaction_persistent) values('root','123456',1,100,1); Query OK, 1 row affected (0.00 sec) mysql> select * from mysql_users;+----------+----------+--------+---------+-------------------+----------------+---------------+------------------------+--------------+---------+----------+-----------------+ | username | password | active | use_ssl | default_hostgroup | default_schema | schema_locked | transaction_persistent | fast_forward | backend | frontend | max_connections | +----------+----------+--------+---------+-------------------+----------------+---------------+------------------------+--------------+---------+----------+-----------------+ | root | 123456 | 1 | 0 | 100 | NULL | 0 | 1 | 0 | 1 | 1 | 10000 | +----------+----------+--------+---------+-------------------+----------------+---------------+------------------------+--------------+---------+----------+-----------------+1 row in set (0.00 sec)
mysql> load mysql servers to runtime; Query OK, 0 rows affected (0.01 sec) mysql> save mysql servers to disk; Query OK, 0 rows affected (0.08 sec) mysql> load mysql users to runtime; Query OK, 0 rows affected (0.00 sec) mysql> save mysql users to disk; Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO mysql_query_rules(active,match_pattern,destination_hostgroup,apply) VALUES(1,'^SELECT.*FOR UPDATE$',100,1); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO mysql_query_rules(active,match_pattern,destination_hostgroup,apply) VALUES(1,'^SELECT',101,1); Query OK, 1 row affected (0.00 sec) mysql> LOAD MYSQL QUERY RULES TO RUNTIME; Query OK, 0 rows affected (0.00 sec) mysql> SAVE MYSQL QUERY RULES TO DISK; Query OK, 0 rows affected (0.04 sec)
サーバー ID がスレーブ データベース 172.16.16.35:3307 にルーティングされていることを確認します。
[root@localhost ~]# mysql -uroot -p123456 -h172.16.16.34 -P6033 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22Server version: 5.7.14 (ProxySQL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select * from maxiangqian.test;+-----+------+ | id | name | +-----+------+ | 1 | qq | | 2 | qq | | 4 | aa | | 11 | a | | 111 | a | +-----+------+5 rows in set (0.04 sec)
mysql> select * from stats_mysql_query_digest;
以上がProxySQL の読み取り/書き込みを構成から分離して使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP を使用してデータ キャッシュと読み書き機能を実装する方法。キャッシュはシステム パフォーマンスを向上させる重要な方法です。キャッシュを通じて、頻繁に使用されるデータをメモリに保存し、データの読み取り速度を向上させることができます。 PHP では、さまざまな方法を使用して、データのキャッシュ機能や読み書き機能を実装できます。この記事では、ファイル キャッシュの使用とメモリ キャッシュの使用という 2 つの一般的な方法を紹介します。 1. ファイル キャッシュを使用する ファイル キャッシュでは、後で読み取るためにデータをファイルに保存します。以下は、ファイル キャッシュを使用してデータの読み取りと書き込みを行うサンプル コードです。

Java 9 のモジュール システムを使用してコードを分離および分離する方法 ソフトウェアの規模が拡大し続けるにつれて、コードの複雑さは増加し続けています。コードをより適切に編成および管理するために、Java9 ではモジュール システムが導入されました。モジュール システムの出現により、従来のパッケージの依存関係の問題が解決され、コードの分離と分離がより簡単かつ柔軟になりました。この記事では、Java 9 のモジュール システムを使用してコードの分離と分離を実現する方法を紹介します。 1. モジュールの定義 Java9 では module キーワードを使用してモジュールを定義できます。

タイトル: Golang のフロントエンドとバックエンドの分離開発におけるフロントエンド テクノロジの選択に関する提案 Web アプリケーションの複雑さと要求が増加し続けるにつれて、フロントエンドとバックエンドの分離開発モデルがますます普及しています。この開発モデルでは、バックエンドがビジネス ロジックの処理を担当し、フロントエンドがページの表示とユーザーとの対話を担当し、両者は API を介して通信します。 Golang をバックエンド言語として使用する開発チームにとって、適切なフロントエンド テクノロジを選択することは非常に重要です。この記事では、Golang でフロントエンドとバックエンドを個別に開発する場合に選択する推奨フロントエンド テクノロジについて説明します。

Concept fio は FlexibleIOTester としても知られ、JensAxboe によって作成されたアプリケーションです。 Jens は LinuxKernel の blockIOsubsystem のメンテナです。 FIO は、ネットワーク ファイル システムとディスクのパフォーマンスをテストするために使用されるツールで、マシン モデルの検証やファイル システムのパフォーマンスの比較によく使用されます。 fio コマンドをクラスター マシンのリストに自動的に送信し、小さなファイルの IOPS と大きなファイルのスループット データを収集します。 rw=[mode]rwmixwrite=30 読み取りと書き込みの混合モードでは、書き込みが 30% を占めます。 moderead シーケンシャル読み取り write シーケンシャル書き込み readwrite シーケンシャル読み取りと書き込みの混合 randwrite ランダム書き込み r

ファイル システム API Java ファイル操作の内部原理は、オペレーティング システムのファイル システム API と密接に関連しています。 Java では、ファイル操作は java.NIO パッケージの java.nio.file モジュールによって提供されます。このモジュールはファイル システム API のカプセル化を提供し、Java 開発者が統合 API を使用してさまざまなオペレーティング システム上でファイル操作を実行できるようにします。ファイル オブジェクト Java プログラムがファイルにアクセスする必要がある場合、まず java.nio.file.Path オブジェクトを作成する必要があります。 Path オブジェクトはファイル システム内のパスを表し、絶対パスまたは相対パスを使用できます。 Path オブジェクトが作成されたら、それを使用してファイルの名前などのさまざまなプロパティを取得できます。

Java で DBF ファイルを処理する読み取りおよび書き込みメソッドの復号化 DBF (dBaseFile) は、通常、表形式のデータを格納するために使用される一般的なデータベース ファイル形式です。 Java プログラムでは、DBF ファイルの読み取りと書き込みの処理は比較的一般的な要件です。この記事では、Java を使用してこのプロセスを復号化する方法を紹介し、具体的なコード例を示します。 1. DBF ファイルの読み取り Java で DBF ファイルを読み取るには、通常、dbfread ライブラリなどのサードパーティ ライブラリを使用する必要があります。まず、プロジェクトを構成する必要があります

PHP 開発者は、Web サイト開発プロセス中にデータベース操作に直面することがよくありますが、非常に人気のあるデータベース管理システムである MySQL の読み取りと書き込みの分離は、Web サイトのパフォーマンスを向上させる重要な手段の 1 つです。 PHP 開発では、MySQL の読み取りと書き込みの分離を実装すると、Web サイトの同時アクセス機能とユーザー エクスペリエンスが大幅に向上します。この記事では、MySQL の読み書き分離の実装方法を詳細に紹介し、PHP 開発者が読み書き分離機能をよりよく理解して適用できるように、具体的な PHP コード例を示します。 MySQLの読み取りとは何ですか

静的リソースの分離により Java Web サイトのアクセス速度を向上させるにはどうすればよいですか?インターネットの急速な発展に伴い、ウェブサイトを利用して情報を取得したりコミュニケーションをとったりする人が増えています。 Java Web サイトの場合、アクセス速度は非常に重要であり、ユーザー エクスペリエンスと Web サイトの成功に直接影響します。その中でも、静的リソースの読み込み速度は、Web サイトのアクセス速度に影響を与える重要な要素の 1 つです。この記事では、静的リソースの分離により Java Web サイトのアクセス速度を向上させる方法を紹介します。静的リソースとは何ですか? まず、静的リソースとは何かを明確にする必要があります。
