Mysqlマスタースレーブ環境構築(Windows 1マスター、2スレーブ)

目次

1. 主なライブラリ構成

2. データの複製

3. スレーブライブラリの構成

4. スレーブデータベースのダウンタイムの解決策

5. データベースのデータを誤って削除してしまう

6. メインライブラリがダウンしている


1. 主なライブラリ構成

1. メインライブラリ my.ini を変更します。

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306 
# 设置mysql的安装目录  
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录  
datadir=D:\DataBase\mysql\data  
# 允许最大连接数  
max_connections=1000  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=1
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库 
binlog-do-db=nctest_zj 
#屏蔽系统库同步 
binlog-ignore-db=mysql 
binlog-ignore-db=information_schema 
binlog-ignore-db=performance_schema

2. cmd を開き、メイン ライブラリにログインします (または navicat、メイン ライブラリに接続し、コマンド ラインを開きます)。

mysql -u root -p

3. マスター/スレーブ レプリケーション用の専用アカウントを承認する

mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'by123456';

 4. 権限を更新する

msyql> flush privileges;

5. メインライブラリ情報をクエリし、ファイル名と位置を記録します。

msyql> show master status;


2. データの複製

1. データの追加や変更を避けるために、メイン ライブラリを読み取り専用に設定します。

set global read_only=1;
flush tables with read lock;

2. データをコピーする

3. 最初のステップの設定を復元します

unlock tables;
set global read_only=0;

3. スレーブライブラリの構成

1.スレーブライブラリmy.iniを開きます。

サーバー ID をメイン ライブラリと同じにすることはできません

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306 
# 设置mysql的安装目录  
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录  
datadir=D:\DataBase\mysql\data  
# 允许最大连接数  
max_connections=1000  
# 服务端使用的字符集默认为8比特编码的latin1字符集  
character-set-server=utf8  
# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=2
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库 
replicate_wild_do_table=nctest_zj.%   
#屏蔽系统库同步 
replicate_wild_ignore_table=mysql.% 
replicate_wild_ignore_table=information_schema.% 
replicate_wild_ignore_table=performance_schema.%

2. cmd でライブラリからログインするか、navicat でコマンドラインを開きます

3. マスターライブラリのファイル名と位置に従って、スレーブライブラリ情報を設定します

CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000039',MASTER_LOG_POS=47257;

4. サービスを開始する

# 开启
mysql> start slave
# 停止
mysql> stop slave
# 重启
mysql> reset slave

5. スレーブライブラリのステータスを確認する

mysql>show slave status\G

次の 2 つの値が「はい」であることを確認します。マスター/スレーブ構成は成功しています。1 つが「いいえ」の場合は、ログを確認して理由を特定する必要があります。

(「log_error」などの変数を表示;) 対応するディレクトリに移動してログを表示します。

 6. スレーブ ライブラリのユーザーを作成し、読み取り専用権限を構成します

create user nymi identified by 'by123456';
grant select on *.* to nymi@'%' ; 
flush privileges;

プロジェクトでは、このユーザーを使用してデータベースに接続します。これにより、スレーブ ライブラリの root ユーザーを使用してデータを変更し、マスター/スレーブ レプリケーションが失敗することを回避できます。


4. スレーブデータベースのダウンタイムの解決策

再起動後は、通常、mysql 停止時の位置が同期され続けます。

マスター/スレーブ レプリケーションが失敗した場合は、次の手順を再構成します。

メインライブラリ:

「log_error」のような変数を表示し、
ログ内の位置を表示します。

図書館から

stop スレーブ;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='ファイル情報',MASTER_LOG_POS=位置情報; (ファイル情報はマスターライブラリから取得されます
)マスターステータスを表示;)
スレーブを開始;

アイデアは、通常のノードを見つけてデータ同期を実行することです。


5. データベースのデータを誤って削除してしまう

1. プロジェクトは、誤って削除されないように、読み取り専用ユーザーを使用してスレーブ ライブラリに接続します。

2. 誤って削除したデータを復元し、4 番目の手順に従って問題を解決します。

3. データを再同期し、3 番目の手順に従って問題を解決します。


6. メインライブラリがダウンしている

1. メインライブラリを再起動し、スレーブライブラリのステータスを確認します。

2. 解決しない場合、メインライブラリとスレーブライブラリはそれぞれ以下のステートメントを実行し、メインライブラリステートメントで見つけたファイル名と位置をスレーブライブラリに再指定します。

show master status;
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
start  slave;

おすすめ

転載: blog.csdn.net/Spring_possible/article/details/127730991