データベースシリーズ-MySQLマスタースレーブレプリケーション構成

1.背景

前のプロジェクトでは、最も基本的で最も主流のデータベースはスタンドアロンデータベースであり、読み取りと書き込みの両方が1つのライブラリにありました。ユーザー数が徐々に増加し、スタンドアロンデータベースがパフォーマンス要件を満たせなくなると、読み取りと書き込みの分離変換が実行され(読み取りを増やし、書き込みを減らすことができます)、1つのライブラリに書き込み、複数のライブラリに読み取ります。データベースクラスターで、マスターとスレーブのバックアップ、1つのマスターと複数のスレーブを開いて、読み取りパフォーマンスを向上させます。ユーザーがこれ以上の読み取りと書き込みの分離に対応できない場合は、分散データベースが必要です。(MyCat、sharing-jdbc、Canalなどを使用)、Ant Financial、Oceanbase。

通常の状況では、読み取りと書き込みの分離を実現するには、最初に1つのマスターと複数のスレーブを持つデータベースクラスターを作成する必要があり、データの同期も必要です。この記事では、mysqlを使用して1マスターの複数構成を構築する方法を記録します。

次の記事では、コードレベルで読み取りと書き込みを分離する方法を記録します。

2.1つのマスターと複数のスレーブでデータベースクラスターを構築します

マスタースレーブバックアップには複数の仮想マシンが必要です。wmwareを使用して複数のインスタンスを完全に複製する場合、仮想マシンを直接複製すると各データベースのuuidが同じになり、異なるuuidに変更する必要があることに注意してください。 。

コア構成は次のとおりです。

メインライブラリの構成

マスターデータベースに新しいユーザーを作成して、データベース(スレーブ)からマスターデータベースのバイナリログを読み取ります。sqlステートメントは次のとおりです。

mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';#分配权限
mysql>flush privileges; #刷新权限

同時に、mysql構成ファイルを変更してバイナリログをオンにします。新しい部分は次のとおりです。

[mysqld]
server-id=1
log-bin=master-bin #这边写的是对应bin的日志名称
log-bin-index=master-bin.index

次に、データベースを再起動し、メインライブラリのshow master status;ステートメントを使用して、以下に示すようにメインライブラリのステータスを表示します。

 

ライブラリから構成する

また、最初に数行の構成を追加します。

[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

次に、データベースを再起動し、次のステートメントを使用してメインライブラリに接続します。

CHANGE MASTER TO
MASTER_HOST='192.168.226.5',
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=6953;

次に、スレーブライブラリstart slave;でバックアップを実行します。通常の状況を次の図に示します。Slave_IO_RunningとSlave_SQL_Runningはどちらもyesです。

 

この手順を使用して、複数のスレーブライブラリを開くことができます。

  デフォルトでは、メインライブラリのすべての操作がスレーブライブラリにバックアップされます。実際には、一部のライブラリを無視する必要がある場合があります。メインライブラリに次の構成を追加できます。

# 不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 只同步哪些数据库,除此之外,其他不同步
binlog-do-db = game

実際のデモンストレーション 

デモを容易にするために、[ Win10を使用して複数のmysqlインスタンスをインストールする]を使用しました。原則は同じです。

1.mysqlの最新の解凍バージョンをダウンロードします。これはmysql-8.0.22です。 

解凍してコピーを作成します。それぞれ新しいmy.iniファイルを作成します。

 

 

 

 my.iniコンテンツリファレンス:ポートの変更に注意してください

[mysqld]
# 设置3306端口
port=3307
# 设置mysql的安装目录# 切记此处一定要用双斜杠
basedir=D:\\DevPackTool\\InstallPack\\mysql1
# 设置mysql数据库的数据的存放目录
datadir=D:\\DevPackTool\\InstallPack\\mysql1\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=UTF8MB4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#开启binlog
log-bin=mysql-bin
replicate-do-db=test
server-id=3307  
[mysql]
# 设置mysql客户端默认字符集
default-character-set=UTF8MB4

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=UTF8MB4

2.mysqlを作成します

最初のmysql

CMDは次のディレクトリに入ります:D:\ DevPackTool \ InstallPack \ mysql1 \ bin、(独自のインストールパスを選択)コマンドを実行するには管理者権限が必要です:

 

mysqld --initialize --console

コンソールにパスワードが出力されます。初期化パスワードを覚えておいてください。ルートディレクトリのデータフォルダを削除するのを忘れた場合は、上記のステートメントを再度実行してください。

D:\ DevPackTool \ InstallPack \ mysql1 \ binパスでサービス作成コマンドを引き続き実行し、サービスにMySQL1という名前を付けます。

mysqld --install mysql1

サービスを有効にする:

net start mysql1

 

mysqlにログインします。

mysql -uroot -p
输入密码

 

パスワードを変更します。

alter user 'root'@'localhost' identified with mysql_native_password by '123456';

2番目のmysql

原則は上記と同じです。デフォルトは3306であるため、ログイン後はポート番号の追加に注意する必要があります。3306はすでにMySQL1によって占有されており、MySQL2は3307です。ログイン時にポートを指定する必要があります。

mysql -uroot -P3307 -p
输入密码
#注意大写-P3307

構成は上記を参照しており、メインライブラリとスレーブライブラリで構成する必要があります。

 

1.構成ファイルの構成

メインライブラリ:

ライブラリから: 

 

2.構成を開始します

メインライブラリの構成

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'  ;

CREATE USER 'repl_user'@'%' IDENTIFIED BY '123456'


SHOW SLAVE STATUS

USE test

SHOW MASTER STATUS 

 

 

ライブラリからの構成:


CHANGE MASTER TO
  MASTER_HOST='127.0.0.1',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000002', 
  MASTER_LOG_POS=5905;
  
  START SLAVE;
  
  SHOW SLAVE STATUS

 

コマンドラインで表示することもできます

 

3.同期効果をテストします。

 

おすすめ

転載: blog.csdn.net/Coder_Boy_/article/details/110950347